MFC串口调试工具无法发送数据,欢迎大神指点。

q332556 2018-07-24 10:56:06
自己写的串口工具,使用虚拟串口调试时是可以接受和发送的。但是实际使用两个真实的COM口调试时能接受不能发送。发送出来的只有两三个字节。程序如下
发送数据相关函数如下:
commSendCnt = 0;
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x01);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x04);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x00);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x00);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x00);
pParent->m_comm.bSendBuff[commSendCnt ++] = (BYTE)(0x16);

pParent->m_comm.bSendBuff[commSendCnt + 0] = (BYTE)(check.CRC16((BYTE *)(&pParent->m_comm.bSendBuff[0]),commSendCnt) >> 8);
pParent->m_comm.bSendBuff[commSendCnt + 1] = (BYTE)(check.CRC16((BYTE *)(&pParent->m_comm.bSendBuff[0]),commSendCnt));
pParent->m_comm.WriteComm(commSendCnt + 2);

Sleep(150);

int commReadCnt = pParent->m_comm.readComm();

if(commReadCnt == 0)
{
MessageBox(_T("无返回数据! "),_T("通讯提示"),MB_OK);
return 0;
}

int CSComm::WriteComm(int sendCnt)
{
DWORD dwErrorFlags,ReaSendCnt;
COMSTAT ComStat;
BOOL sendSta;

PurgeComm(m_hCom,PURGE_TXCLEAR);
PurgeComm(m_hCom,PURGE_RXCLEAR);
ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
sendSta = WriteFile(m_hCom,bSendBuff,sendCnt,&ReaSendCnt,NULL);
if(!sendSta)
{
return FALSE;
}

return TRUE;
}

...全文
266 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2018-08-08
  • 打赏
  • 举报
回复
数据中含有 0 因此接收端使用16进制方式查看
schlafenhamster 2018-08-08
  • 打赏
  • 举报
回复
SetCommState 怎么用的 ?
三岁、就很帅 2018-08-07
  • 打赏
  • 举报
回复
把串口的脚连起来自发自收测试 你看看波特率什么的都一样么
星沉地动 2018-08-07
  • 打赏
  • 举报
回复
这里有一个开源MFC串口调试工具,你可以参考一下。
https://gitee.com/kerndev/SerialTool

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧