串口在115200的波特率下传输数据时丢包的情况有没有什么好的解决方法?欢迎大家讨论。使用SPCOMM控件(100分)

传送线路中的干扰问题,波特率越高,干扰越大
请把你的问题说得具体一点
 
加奇偶校验了吗
 
奇偶校验没有用,应当用CRC校验,参照XMODEM协议,在网上可以找到源代码。
 
买个转换器,将RS232转为RS485或RS422。
 
丢失是很正常的,跟硬件有关系.
 
要从一个单片机中读取数据,协议是自己定义的,双方预定好的了。。
软件握手也是自己定义的,CRC校验。
丢包情况太严重了,不知道有没有什么好的办法解决。
 
纠错编码,解码;
 
我采用的是字节流的方式来接收数据,应该不会有接收到的数据用字符串来处理当出现#0时带来的负面影响。
 
你用的是什么计算机?有好多主板较差的计算机串口根本上不了115200
与你类似的问题我在联想、清华紫光等所谓国内品牌上不止一次遇到,
换DELL、IBM等或花几百大洋买一台主板稍好的二手机即解决问题
 
中柏的。现在给一个朋友做一个通过串口从一个单片机中读取数据的软件。
因为数据量较大,所以波特率要求比较高,115200,但是有丢包的情况,正在努力解决,
没有做过通过串口在高波特率下传输数据的DFW吗?
 
moxa rs422 更换晶振达120k 正常
 
我想协议很重要
 
程序处理不好,改写了,调试ing...
 
还是不行,相信代码算是比较优化的了,还有丢包的情况。
希望DFWs在这方面有经验给些指导,先谢了。
 
用重发和校验就可以解决,我都做过类似的东西,首先你得用和tcp/ip相似的做法,在侦中
加入接收和发送系列号,收到一侦发送确认侦,如果在一定的时间没有收到相应确认侦,则应该
重发该侦,而收到的侦如果不是等待的侦应该丢掉,如果是滑动窗口则比较麻烦,而且中断
都不好处理,我仅仅做到发一侦等确认也就是说滑动窗口为1,如果你要是用滑动窗口大于1
,速度可以提高,而且必须用到多线程,可以说你已经相当的基础了,我弄玩意儿弄了一两
个月。结果还是不够理想,因为你发一侦再等待确认的侦,速度下降就不用说了,如果是先
尽发滑动窗口的侦,如果收到确认则继续发,这样就很快了,如果滑动窗口适当,速度应该
下降的不多,但是侦的次序可能变了,而且处理比较复杂,想仅仅用spcomm的几个事件简简
单单的发送和接收,我只能说那种程序是没有多大实际意义的。
 
谢谢einstrain, 的回答。
1、因为要从一个单片机上读取数据,数据量可能会很大,所以现在没有使用帧间确认,否则速度会很慢;
2、Windows串口通讯,其实都是基于那几个API的,您说是吧?对于spcomm控件,
可以说把那些API封装的非常好了,您认为呢?

欢迎继续关注!
 
我现在的情况也像你一样,想加快传输速度可是数据不丢失
我也希望有更多的人来关注次贴
 
波特率调底到57600情况一样。
大富翁上难道没有人用DELPHI编写过通过PC机串口从单片机中读取文件(数据)的应用?
 
用微软的MSCOMM控件,用它的中断方式。我在写程序时,也曾用过spcom,但发现他有延迟
和丢数据现象,后改用MSCOMM控件再没发现。不过我的速率没你高,最高只用到过57600。
 

Similar threads

D
回复
0
查看
902
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
573
import
I
顶部