请各位高手帮忙!(关于串口到IP接收和发送的问题)很急!!!!!!!!!!!!!!!!(200分)

  • 主题发起人 主题发起人 xw1021
  • 开始时间 开始时间
X

xw1021

Unregistered / Unconfirmed
GUEST, unregistred user!
程序流程如下:
发送端 卫星转发 接收端

数据源--串口接收--打成UDP包发送--上卫星转发--接收UDP包并解包--从串口发送--目的端

我的实现办法:
发送端串口用spcomm接收然后打包发送(每击活一次SPCOMM的onrecievedate事件执行一次)

接收短是依靠判断是否收到UDP包来确定的,一旦收到UDP包则解包通过spcomm控件从串口发送。

问题:
当数据源的数据内容较大时(比如2K byte )则目的端收到到的数据基本正确,丢失的包很少,100个丢9个。
但当数据源的数据内容较较小是,目的端根本就收不到(目的端有一个筛选器,当获得的包里有无效字符或乱码时,它将会把这个包丢弃。)

我检查了从UDP发送包到UDP包接收这段过程,数据是正确的,所以我怀疑是接收端串口数据未发完时,又有新的UDP包到了,
触发语句执行造成部分缓冲池里的数据被覆盖。






请各位高手帮我分析一下出错原因,并提供一个解决办法!!!!!
(为了这个程序我已经两个白天一个晚上没睡了)


 
在串口处的缓存不大的,所以如果你的UDP流量大于串口太多的话,会出现丢帧的情况,
如果是这样,建议你在UDP和串口之间自己作一个缓冲程序,用多个线程来平衡串口的流量。
 
我现在采用的办法是用TList,效果还未证实,不知这样可否代替缓冲程序?
 
接受答案了.
 
后退
顶部