spcomm控件的问题(usb转串口) ( 积分: 20 )

  • 主题发起人 主题发起人 黑夜沉淀
  • 开始时间 开始时间

黑夜沉淀

Unregistered / Unconfirmed
GUEST, unregistred user!
当USB转串口的情况下,没有打开串口时,对方发送数据过来,然后再点击打开串口,竟然把刚刚传送的数据显示出来了。按理,是应该没有接收到数据才对的呀。但是在串口对串口的情况下,就不会那样。
 
当USB转串口的情况下,没有打开串口时,对方发送数据过来,然后再点击打开串口,竟然把刚刚传送的数据显示出来了。按理,是应该没有接收到数据才对的呀。但是在串口对串口的情况下,就不会那样。
 
为什么应该没有接收到数据?
 
不是打开串口才开始进行通信么?串口没有打开,就能够接收数据?
 
会不会因为usb的原因,接收的数据有个缓存?
 
是的,spcomm是把接收到的数据放到缓存里面的。我也在想是不是USB的问题,但是还是弄不明白。
 
用usb口的话,spcomm打开串口的端口是设的多少?
 
设的是COM3,如果设的是COM4,就会显示出错。
 
com3是一个虚拟的端口,你可以在打开端口后先清空端口数据试试
 
该如何清空端口的数据?
 
MSComm1.InBufferCount := 0; // 清空接收缓冲区

spcomm的我不太清楚,看看它的源代码
 
对于上面的问题,可以用purgecomm(comm1.handle,purge_rxclear)清除串口。但想问另外一个问题,如何知道数据是否发送出去了呢?
 
我的一个朋友说对于USB转串口,SPCOMM有问题。我自己没试过。我一向用MOXA的PCOMM,很可靠。
没打开端口就有数据,我估计是USB虚拟串口的问题。不过只要协议制定好了,多一组数据只有好处没有坏处的事,除非实时性要求很高。
 
下载一个Portmon可以监视com口和lpt口的发送和接收数据,但是对于USB转过来的没有试过!
 
后退
顶部