请教如何修改CSerialPort类,或使用其他办法,使发送函数能够立即发送数据。
最近用到CSerialPort类,从PC机发给单片机若干条数据,发送一条,然后等待回应,若正确则发送第二条,直至发送完毕。我在一个for循环里使用WriteToPort发送数据,结果只能发送一条,其它发送不出去,在网上查了查原因如下:发送数据只是将数据写入发送缓冲区,然后给发送线程发送一个消息通知其开始发送,这样发送函数返回的时候数据还没有真正发出,如果连续调用发送函数则上次没发送的数据就会被覆盖了。
请问如何修改一下,使数据能立即发送出去呢?谢谢。 PC是基于消息机制的,概念要搞清楚。 少量数据可用transmitchar发送立即字符。 数据量很大,成千上万条。 那发送时用Write(const void* lpBuf, DWORD dwCount, OVERLAPPED& overlapped, DWORD* pBytesWritten=NULL)
使用 overlapped方式,发送前把overlapped中的event复位,然后用WaitForSingleObject等待overlapped中的event被置位,就保证每次都是发送出去了,
下一次发送也不会冲掉前面的。 感谢楼上,但是我的CSerialPort类貌似只有4个WritetoPort()函数,没有Write()函数,我在龚建伟的串口调试助手源码的基础上改的,难道龚建伟把Write()函数删了? 这是两个CSerialPort类,作者不一样,但是名字都是CSerialPort.
+_+
页:
[1]