我正在尝试使用WriteFile()函数写入串口,当我放置一些断点来检查它是否正在写入时,它不会。我试图通过我的COMM端口传递一串数据。
BOOL bWriteRC = false;
DWORD iBytesWritten = 0;
//String data: "$ABCEFG,00000020,010000003F800000*##\r\n" ==> stored in a CString
CString sStore = "$ABCEFG,00000020,010000003F800000*##\r\n";
bWriteRC = WriteFile(hdl,sStore.GetBuffer(),sStore.GetLength(),&iBytesWritten,NULL); // doesn't go past this...
无论如何,每当我执行它时,程序都不会通过此功能而停止。关于我做错了什么的任何建议?
我尝试减少GetLength(),使它成为14并且它完美无缺,但是一旦写入的字节数增加到14以上,WriteFile()就会停止更进一步。
提前致谢。
答案 0 :(得分:2)
考虑到你的问题,WriteFile()应该总是像亚历克斯前面提到的那样成功。更好地检查您尝试写入的字符串是否正确,是否可以在串行端口上接受。有时,这些小事可能会被监督并导致重大错误。除此之外,在我看来,如果它是一个简单的写操作,它应该工作。
答案 1 :(得分:0)
如果它在WriteFile中挂起,则表示COM端口驱动程序不接受您的数据,它无法将其发送到COM端口。它取决于这种COM端口设置为DTR信号状态。您需要检查流量控制设置。