[英]USB Serial Device with Virtual COM port - ReadFile() reads zero bytes if use CreateFile() with USB path
[英]USB Serial Virtual COM Port : Read not working but write works
我使用嵌入式硬件(由TI:Piccolo Control Stick xxx69)使用FTDI usb到串行转换器硬件。
在PC上,我有一个简单的VC ++应用程序,该应用程序尝试通过虚拟COM端口(VCOM:通常为COM7)与硬件进行通信。
我能够正确连接到端口。
我能够将数据从应用程序/ PC发送到硬件,并且可以正确接收。 (因此,PC上的Tx正常工作),应用程序首先使用createfile(... ... ...)
API打开连接,然后使用writefile(.. ... ..)
Windows API将端口写入端口直。
令人惊讶的是,我无法从串行端口读取应用程序。 当我调用readfile(... ... ...)
api时,它返回状态为TRUE,但读取了零字节。 我尝试使用API监控器软件,该软件显示内核api Ntreadfile(... ... ...)
,返回错误为STATUS_TIMEOUT" [0x00000102]
。令人惊讶的是,尽管存在数据,但写入仍然有效,但读取却没有线。
数据在线,因为当我使用常规的超级终端软件时,我能够从控制器正确读取数据并且可见。 [在控制器方面,这很好,因为我们可以在超级终端上看到数据。
我不是Windows程序员,因为我与微控制器打交道。 因此,在解决该问题方面会有一些帮助。
最好的祝福,
-瓦伦
这是参考
问题已解决。 我必须添加等待,直到InQueue> 0(这意味着接收缓冲区中至少有1个字节)或超时(由于安全出口)结束。 这将阻止呼叫,但目前对我的应用程序来说还可以。 在这里,waitComm()对我来说效果不佳。
样本片段:
while(1)
{
ClearCommError((HANDLE)*h_drv, (LPDWORD)&Err, &CST);
if((CST.cbInQue >0)||(count >1000000))
break;
count++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.