我正在开发一个 Windows 实用程序,它使用标准 COM 端口与一些自定义硬件进行通信。通信协议(我无法控制)要求我发送和接收原始 8 位数据字节。
我目前正在使用以下 Windows API 函数将数据发送到 COM 端口:
WriteFile(hFile, lpBuffer, numberOfBytesToWrite, ...)
wherehFile
是对正确打开的 COM 端口的引用,并且lpBuffer
是我存储在内存中的字节数组。在需要将空字符(ASCII 零)发送到设备之前,该代码运行良好。WriteFile
一旦检测到空字符就停止发送,因为它假定它已到达字符串的末尾。即使我设置numberOfBytesToWrite
正确,也会发生这种情况。
如何使用 Windows API 将原始数据发送到 COM 端口?我更愿意使用类似于 的标准 API 调用WriteFile
,但我愿意接受建议。
我目前正在使用RapidQ来构建实用程序,但它所做的只是直接调用 Windows API 函数。
编辑:我的设置包括通过串行端口连接到自定义硬件模块的 Windows PC。该模块有一个小屏幕,我可以在上面查看传输的字符。我已经用另一个第三方实用程序测试了这个设置。我能够使用这个第三方程序与模块通信,并且空字符正确显示。在我自己的程序中,当我使用 时WriteFile
,传输流中任何位置的空字符都会停止发送流的其余部分。