我使用嵌入式硬件(通过TI:Piccolo Control Stick xxx69),它使用FTDI USB至串行转换器硬件。USB串行虚拟COM端口:读取不工作,但写入工作
在PC上,我有一个简单的VC++应用程序,它试图通过虚拟COM端口(VCOM:通常为COM7)与硬件进行通信。
我能够正确连接到端口。
我能够从应用程序/ PC发送数据到硬件,并且它被正确接收。 (所以,PC上的Tx工作正常),应用程序首先使用
createfile(... ... ...)
API打开连接,然后使用writefile(.. ... ..)
windows apis直接写入端口。令人惊讶的是,我无法从串口读取应用程序。当我打电话给readfile(... ... ...)
api时,它将状态返回为TRUE,但读取的是零字节。我尝试使用API监视软件,它显示内核APINtreadfile(... ... ...)
,返回错误为STATUS_TIMEOUT" [0x00000102]
。这是令人惊讶的,因为写作能够读取虽然数据在线没有。
的数据就行了,因为当我正常使用超级终端软件,我能够正确读取数据形成控制器,它是可见的。 [在控制器方面,没关系,因为我们可以看到超级终端上的数据。
我不是Windows程序员,因为我处理微控制器。因此,在追求这个问题方面有一些帮助会有很大的帮助。
最好的问候,
-Varun
这里是一个Reference
这是完全正常。程序员需要修改程序中的SetCommTimeouts()调用。 –
Hans,SetCommTimeouts()未用于我的写入功能。 [虽然我正在使用为VC6开发的遗留代码]。你认为超时只适用于读取...顺便说一句,我增加了设备注册表项的超时时间,然后调用等待指定的时间,但结果仍然是零字节读取。请尽可能详细说明你的提示! –
注册表项地点:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ FTDIBUS \ VID_0403 + PID_A6D0 + TIU81CWRB \ 0000 \设备参数:MinReadTimeout –