首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

串口文件传输的有关问题

2012-08-02 
串口文件传输的问题已经成功的把文件名传过去了,并创建了对应的文件。但文件的内容没传过去~ 问题不知道在

串口文件传输的问题
已经成功的把文件名传过去了,并创建了对应的文件。但文件的内容没传过去~ 问题不知道在哪~ 希望高手提点一下~

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) 
看看程序流程到底怎么走了。
[解决办法]
看上面的看不出来什么,看看程序怎么走的,多打点日志看看
[解决办法]
消息响应函数没执行吧?
看看消息响应是否正确....

热点排行