1.首先是打开串口,打开成功发送握手命令如下:
void CMainFrame::OnMenuconnectbox()
{
// TODO: 在此添加命令处理程序代码
BOOL bRet = m_serial.Open(GetSafeHwnd(),WM_COMM_MESSAGE,nCom,dwBaudRate,byByteSize,byParity,byStopBits);
if(bRet)
{
//ShowMessage("成功打开串口!");
m_wndOutput.m_wndOutputBuild.AddString(_T("成功打开串口!"));
unsigned char szData[1]={0x7e};//发送握手命令
m_serial.SendData(szData,1);
}
else
{
//ShowMessage("打开串口失败!");
m_wndOutput.m_wndOutputBuild.AddString(_T("打开串口失败!"));
}
}
2、在串口消息里收到判断回复,握手成功后发送数据下载命令,上位机接到下载命令后开始发送数据,每次发送2048个字节,循环发送2M数据,消息响应函数如下:
LRESULT CMainFrame::OnCommMessage(WPARAM wParam,LPARAM lParam)
{
m_wait = 0;
int len=128;
static unsigned char szData[2048];
CFile * pFile;
// 创建数据保存文件
switch(wParam)
{
case MSG_READ:
{
// unsigned int pp = m_serial.ReadData(szData,len);
if(m_serial.ReadData(szData,len))
{
//ShowMessage(CString(szData));
int pp = sizeof(szData);
CString str,str1;
CString strForder;
str.Format("%0x",szData[0]);
f.Write(szData,len);
m_wndOutput.m_wndOutputBuild.AddString(str);
if (szData[0] == 0x7f/*0x5b*/)//握手命令
{
m_comflag = true;
m_wndOutput.m_wndOutputBuild.AddString("串口通讯握手成功!");
unsigned char pSend[1]={0x76};//发送握手命令
m_serial.SendData(pSend,1);
//写入刚才读取的文件
FILE *pFileOut=fopen("C:\\2.jpg","wb");
fwrite(pBuf,1,len,pFileOut);
fclose(pFileOut);
free(pBuf); //释放
}
}
}
break;
case MSG_WRITE:
{
unsigned char *p=(unsigned char*)lParam;
CString str/* = CString(p)*/;
str.Format("%0x",*p);
m_wndOutput.m_wndOutputBuild.AddString(str);
Sleep(500);
}
break;
default:
{
}
break;
}
return 0L;
}
现在的问题是握手命令和下载命令都可以正常收到,但是对方收到下载命令后发送的数据却收不到,并且断点跟踪OnCommMessage(WPARAM wParam,LPARAM lParam)并没有进入响应更新缓冲区,求助各位指教!