串口文件传输的问题
已经成功的把文件名传过去了,并创建了对应的文件。但文件的内容没传过去~ 问题不知道在哪~ 希望高手提点一下~
void CFileuploadDlg::OnButtonSendfile() //点击发送文件按钮,发送文件
{
if(m_nSendFileState==1)
{
m_nSendFileState=0;
}
else
{
m_nHeadFlag=0;
m_nCurSendBlock=0;
FullSendBuffer(m_nCurSendBlock); //调用发送缓冲区内数据的函数
m_ctrlEditSendFile.SetWindowText("正在发送......");
}
}
void CFileuploadDlg::FullSendBuffer(int Block) //发送缓冲区内数据的函数
{
if(Block==0)
{
//第0块,要读一个文件
……
//计算需要多少块才能发完
m_nCurMaxBlock=(nlength-1)/BLOCK_SIZE+1; //BLOCK_SIZE为8192
……
//进入发送文件状态,需要处理SendOver消息
m_nSendFileState=1;
m_port.WriteToPort(headstr,81);
}
else
{
unsigned char *tempbuffer;
tempbuffer=new unsigned char[BLOCK_SIZE+20];
for(DWORD i=0;i <8;i++)
tempbuffer[i]='$';
tempbuffer[8]=2;
m_file.Seek((Block-1)*BLOCK_SIZE,CFile::begin);
DWORD tt=m_file.ReadHuge(tempbuffer,BLOCK_SIZE);
DWORD xx=tt;
if(Block==m_nCurMaxBlock)
{
m_file.Close();
}
if(Block==1)
{
//需要加一个前导串
for(DWORD i=tt-1;i>=0;i--)
{
tempbuffer[i+9]=tempbuffer[i];
if(i==0) break;
}
for(i=0;i <8;i++)
tempbuffer[i]='$';
tempbuffer[8]=2;
tt +=9;
}
m_port.WriteToPort(tempbuffer,tt);
delete [] tempbuffer;
tempbuffer = NULL;
char ss[10];
wsprintf(ss,"%d",(Block-1)*BLOCK_SIZE+xx);
}
}
//检测文件是否发送完毕
void CFileuploadDlg::OnSendOver(WPARAM ch, LPARAM port)
{
// TODO: Add your control notification handler code here
if(m_nSendFileState==1)
{
//发送完了一包
if(m_nCurSendBlock<m_nCurMaxBlock)
{
char s[10];
itoa(m_nCurSendBlock,s,10);
MessageBox(s);
m_nCurSendBlock++;
}
else
{
m_nSendFileState=0;
m_nCurSendBlock=0;
m_nCurMaxBlock=0;
return;
}
FullSendBuffer(m_nCurSendBlock);//发送第二包
}
}
现在设断点在OnSendOver内部时,不能跟踪到m_nCurSendBlock的变化(可能程序运行不到这~),我该怎么解决呢?
[解决办法]
断点设到if(m_nSendFileState==1)
看看程序流程到底怎么走了。
[解决办法]
看上面的看不出来什么,看看程序怎么走的,多打点日志看看
[解决办法]
消息响应函数没执行吧?
看看消息响应是否正确....