vc中用serialport类实现串口通信时,连续的发送多次命令后,再次发送数据失败 急!!!!!!!!!!!

yanshangfei 2010-08-02 12:42:57
如题

我的命令是EF 30 s m 00 00 00 FE s,m代表16进制数
再 我连续多次发送这样的命令(接受数据正常)后,再发送 EF 80 00 00 00 00 00 FE后,数据发送不下去
单步跟踪
void CSerialPort::WriteToPort(char* string)
{
assert(m_hComm != 0);

memset(m_szWriteBuffer, 0, sizeof(m_szWriteBuffer));
strcpy(m_szWriteBuffer, string);
m_nWriteSize=strlen(string);

// set event for write
SetEvent(m_hWriteEvent);
}

按程序设计,应该进入UINT CSerialPort::CommThread(LPVOID pParam)这个函数中,
但是我在函数中设置断点根本就不进入


请各位大虾帮忙解决下
...全文
275 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanshangfei 2010-08-02
  • 打赏
  • 举报
回复
自己顶下 都沉了 没人应了
yanshangfei 2010-08-02
  • 打赏
  • 举报
回复
好有就是 当我早80命令后在写个MessageBox 执行完后,80就又发出去了
奇怪啊 大虾啊 块帮帮忙吧!!
程序都写完了 可是在这出毛病了
急啊!!!!!!!!!!!!
yanshangfei 2010-08-02
  • 打赏
  • 举报
回复
后面还继续发送数据 又有效啊
我的其他命令里也有00的 都是有效的
用serialport类做的串口调试工具 发什么都有效 只是不是连续切换命令发送的

tianhede 2010-08-02
  • 打赏
  • 举报
回复
线程是不是退出了
zxdlms 2010-08-02
  • 打赏
  • 举报
回复
CommThread,看看你这个函数是不是连续多次发送命令出错,造成线程结束了。
flight9 2010-08-02
  • 打赏
  • 举报
回复
WriteToPort(char* string)有个隐含要求:你发的这串字符必须没有00

因为一旦中间有00, m_nWriteSize=strlen(string)得到是你00之前字符数而不管你后面还有

所以你这样发出的很可能是错误的字节数,下位机不会接收. 碰到过类似问题的说

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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