COM口和COM口缓冲区的问题? 谁知道串口的缓冲区机制???(100分)

  • 主题发起人 主题发起人 itren
  • 开始时间 开始时间
I

itren

Unregistered / Unconfirmed
GUEST, unregistred user!
COM口和COM口缓冲区的问题? 谁知道串口的缓冲区机制??
问题是这样的:
1.一个程序不停的发送数据到本机串口.
2.另一个程序在另一台机器上,从本地串口接收数据.
3.如果此时用一条串口线连接连个机器的串口,会有如下的问题吗?

Q1:接收的数据的顺序错乱了.或者说数据接收后就不完整了.和期望的不一样.
比如一直连续发送:
'AAAAAAA BBBBBBBB DDDDDDDD EEEEEEEE
'aaaaaa BBBBBBBB DDDDDDDD EEEEEEEE'

结果收到: 'AAAAAAA BBBBBBBB DDDDDDDD EEEEEEEE'

'aaaaaa BBBBBBBB DDDDDDDD EEEEEEEE'
'aaaaaa BBBBBBBB DDDDDDDD EEEEEEEE'

 
不可能,COM的缓冲区是FIFO的,出现上面问题极可能是因为接收方未能及时读取
 
大家帮忙分析一下...会出现吗?
 
不会的,一般是你没有及时收数据赵成的
 
如果数据不及时收数据会怎么丢失呢? 溢出吗?先到的就被挤出了?
 
串口本身不会有问题的,你用超级终端接收试试,如果还是这种情况我认为是发送端问题
 
如果串口的缓冲不够大的话,数据是不是直接把以前的数据挤掉了?
......
要看看到对方串口的数据到底是什么.不可能出现这种情况阿...
或者接收方接收不及时的话,
 
来讨论一下串口使用的问题?注意事项?
 
我觉得你可能用的是SPCOMM吧。如果你是这个控件的话,当发送的速度非常快的话,那么可能接收程序无法反映过来,就会丢失数据,你看看吧。
 
天使兄:
说得有道理啊,我用spcomm控件就是这样啊。。。上位机不停的发送数据,过一会和下位机的通讯就中断了
 
如果实时性太强,那就不用spcomm了
我现在用的是从C++转换过来的程序,相当稳定
 
我写的和一个下位机通讯程序,用于检测下位机采集的电压/电流等参数当我只给下位机加上工作电源,上位机采集的数据是0,这没有问题,可以一直这样通讯下去
但是我一旦把测试电压加到下位机之后,通讯就只能持续一会,过会就断了,必须要把串口关闭在打开才行
 
问题已经解决了.再来讨论一下:

如果数据不及时收数据,数据会丢失. 溢出吗?还是 先到的就被挤出了?
个人感觉是后面多发的数据会丢失掉.
也有可能com 传输机制确定好的 buffer,如果对方没有接收只是放到本地的发送缓冲中.
如果是UDP发过一次,丢了也就丢了. COM 串口传输是可靠传输吗?
 
后退
顶部