【发布时间】:2011-09-22 11:00:47
【问题描述】:
我正在尝试使用 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() 就会停止前进。
提前致谢。
【问题讨论】:
-
你能给我们一些周边代码吗?来自调试器的任何信息?这是什么类型的崩溃?
-
因为它不会“崩溃”崩溃。它只是没有通过 WriteFile() 函数。周围的代码添加为编辑。
-
您对代码的哪一部分感兴趣?手柄和设置 comport 方面的其他一切都很好。它初始化良好。
-
假设文件句柄正常,串行端口 WriteFile 应该始终成功。首先,断开任何设备与 COM 端口的连接并执行此行 - 它有效吗?如果设备工作不正常,WriteFile 可能会挂起,没有设备它应该可以工作。
-
把你的 CString 改成 CStringA 看看是否可行...
标签: visual-c++ mfc serial-port