串口调试助手 大文件传输

时间:2014-08-23 11:41:19
【文件属性】:

文件名称:串口调试助手 大文件传输

文件大小:3.59MB

文件格式:RAR

更新时间:2014-08-23 11:41:19

串口 SerialPort类 大文件传输

LONG CSCOMMDlg::OnCommunication(WPARAM ch, LPARAM port) { g_ucRecvBuf[g_ulRecvLen++]=UCHAR(ch); if(g_ulRecvLen>=51) { memcpy(&g_ADData,g_ucRecvBuf,51); //return 1; } // return 1; if(g_ulRecvLen<4) return 1; //1表示接收数据长度不够 ULONG ulCheckSum =0; CMDHEADER header; header = *((CMDHEADER *)g_ucRecvBuf); //如果不相等,将Buffer中的每个数据前移动一个位置 if(CMD_SYN_WORD!= header.ulSyncWord) { memmove(g_ucRecvBuf,g_ucRecvBuf+1,3); return 2;//2表示没有接收到同步字 } if(g_ulRecvLen1024*1024) // { // strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0/1024.0); // } // //显示"传输总耗时" // const ULONG ulFrameBytes = g_nBaud/10 -(sizeof(CMDHEADER)+4); // long lComm_TimeSum = m_nFileRecvLen/ulFrameBytes; // //传输总耗时间,单位:秒 // // WORD wHour =0; // WORD wMinute =0; // WORD wSecond =0; // // wSecond = lComm_TimeSum%60; // wMinute = lComm_TimeSum/60%60; // wHour = lComm_TimeSum/60/60%60; // // if((0==wSecond)&&(0==wMinute)&&(0==wHour)) // wSecond =1; // strTemp.Format("%02d:%02d:%02d",wHour,wMinute,wSecond); g_ulRecvLen =0; } break; case CMD_FILEDATA: //发送文件中数据的命令 if(g_ulRecvLen1024*1024) { strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0/1024.0); }*/ } break; case CMD_FILEEOF://文件发送结束命令 if(g_ulRecvLen1024*1024) { strTemp.Format("%0.3fKB",m_nFileRecvLen/1024.0/1024.0); } } break; //=================处理接收端的响应信息 begin 信息头================= case CMD_FILEINFO_RESP://发送文件信息命令后,发到接收端的响应信息 if(CMD_STATE_OK==header.cmdState) { m_bFileInfoIsOK = TRUE; g_ulRecvLen = 0; g_bIsRecvData = TRUE; } else if(CMD_STATE_ERROR==header.cmdState) { m_bFileInfoIsOK = FALSE; g_ulRecvLen=0; SendFileInfo(); } break; //=================处理接收端的响应信息 文件数据================= case CMD_FILEDATA_RESP://发送文件体命令后,发到接收端的响应信息 if(CMD_STATE_OK==header.cmdState) m_bFileDataIsOK = TRUE; else if(CMD_STATE_ERROR==header.cmdState) m_bFileDataIsOK = FALSE; g_ulRecvLen =0; g_bIsRecvData = TRUE; break; //=================处理接收端的响应信息 文件结尾================= case CMD_FILEEOF_RESP://发送文件尾命令后,发到接收端的响应信息 if(CMD_STATE_OK==header.cmdState) { m_bFileEOFIsOK = TRUE; g_bFileSendEnd = TRUE; } else if (CMD_STATE_ERROR == header.cmdState) { m_bFileEOFIsOK = FALSE; m_bSendFileIsBegin = FALSE; } g_ulRecvLen = 0; g_bIsRecvData = TRUE; break; //====================默认处理================= default:break; } //设置信号量 SetEvent(m_hRecvMsgEvent); return 0; //返回0表示正确 }


【文件预览】:
SCOMM
----SCOMM()
--------SCOMM()

网友评论

  • 试了貌似不好用,自己写了一个简单的,死等接收,可以用。
  • 没用上,根本打不开。。。
  • 不好用,还要那么多分。
  • 不好用,还要那么多分。
  • 有参考价值
  • 穿不了大文件 exe打开就关不了了
  • 穿不了大文件 exe打开就关不了了
  • 能用,但是要得分有点高啊
  • 还在学习中……希望能够解决我面对的问题
  • 骗人的,根本发不了大文件
  • 虽然看不懂~但能用,哈哈~慢慢学习~