关于串口通信数据接收失败的有关问题

关于串口通信数据接收失败的问题
那一根数据线,分别连了两台电脑的COM2口
通过发送端向端口写数据
::WriteFile(m_hComDev, leftdata, leftlength,(unsigned long*)&rc, NULL)

再通过接收端从端口接收数据
::ReadFile(m_hComDev, leftdata, leftlength,(unsigned long*)&rc, NULL)

通过打出来的log显示
两台电脑的COM2口打开均成功,
而且发送端发送的数据也成功发送了,rc=10(发送了10个bit的数据)
但是接收端从端口接收的数据为0,一个数据也没接收到

两个端口的属性是:
COM2
速度 9600
数据位 8
校验 无
停止为 1

后来又设置了端口事件驱动,发觉没有等到EV_RXCHAR(数据进入缓冲区)这个事件,不知道是什么原因
不太熟悉串口通信这一块,所以求教

------解决方案--------------------
首先看看你的串口通信电缆是不是对的,两个电脑串口(公口)相连,串口线中2、3脚要交叉
------解决方案--------------------
用sscom32调试下吧
------解决方案--------------------
一般就是波特率不对
------解决方案--------------------
先用串口助手调试一下看看能不能成功
然后再分别在两端用串口助手和你自己的程序对调看能不能调通
然后应该就可以定位问题了
------解决方案--------------------
// 两头电脑要用串口直连的话,必须要一台机器的串口2脚接另一台的串口3脚,5脚相连。
// 即 2-3, 3-2, 5-5,2是接收脚,3是发送脚,5是地线

// 9600是波特率的值,波特率指的是 每秒发送多少个bit
------解决方案--------------------
232不是多主总线,发送时PC是主,(单主)OK,接受时,2个外设发送是多主,不行的。
用485吧
------解决方案--------------------
探讨

先用串口助手调试一下看看能不能成功
然后再分别在两端用串口助手和你自己的程序对调看能不能调通
然后应该就可以定位问题了

------解决方案--------------------
各楼的回答都不对症。

首先,我们要相信楼主不会犯低级错误(如什么连线问题、波特率设置问题)

我认为,就是那条读语句出问题了。

不是说那条语句写错了——这是不会错的。

错在这条语句还需要其他配套的语句来帮助实现。

楼主只是读一下,错这这里了。

应该是这样的:等待串口有数据进来再读。建议楼主好好看看MSDN中关于Serial communication的说明。
------解决方案--------------------
先用串口调试助手试下吧。
比如这个http://www.sudt.com/download/AccessPort134.zip
这个工具收发数据,还可以抓取串口上的收发的数据帧和串口配置时驱动层的IRP消息。

1.确认好发送端和接收端都是COM2,端口插对。
2.确认串口线没有问题,2,3管脚交叉,TX连RX RX连TX
3.两端的波特率,校验位、停止位设置一致。

如果使用串口调试助手能够成功收发的话,再去调试你的程序。

你现在使用的调用方式是同步方式(最后一个参数为NULL)

如果要监听EV_RXCHAR中断消息的话最好使用OVERLAPPED方式,进行异步串口操作。
------解决方案--------------------
建议使用现成的类库CSerial类。不必自己去编写通讯代码。