我照着visual C++⼀turbo C 串口通信编程实践写的 接受数据的程序 不能用 我有检查串口是没有问题的 求解

2025-04-25 11:31:44
推荐回答(3个)
回答1:

不要在串口事件处理中使用对话提示框,如果想看到信息,可以用一个文本框来显示信息
既然这个事件已经响应了,就说明串口中有事件发生,你可以输出事件的值,查找原因

编译能通过,不代表程序没有问题.
把代码
else
{
AfxMessageBox("无法接受数据");
}

改成
else
{
文本框显示m_ctrlComm.GetCommEvent()的值;

// 或者提取inbuffer的内容到文本框中
}

回答2:

串口接收是按字节算的,你按字节从缓冲区读取走。不要定义这么大个缓冲区了,实际上是木有用的。串口每来一个数据,SCOMM插件就会发出一个事件信号。
你说会弹出无法接收这个框框。那就是事件2在你点击时还未出现。这说明,你去看下发出事件2的那段代码。
如果实在不行,请使用API自己做,不要使用SCOMM插件。

回答3:


if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
这一句打个断点,调试一下,看接收到的事件值是否正确