串口随机发送难题!!!!(100分)

  • 主题发起人 主题发起人 apiaor
  • 开始时间 开始时间
A

apiaor

Unregistered / Unconfirmed
GUEST, unregistred user!
上位机通过232口发送给下位机数据,共有10个数据包,一贞发送,
在发送过程中,上位机软件检测到第五个包的错误信息,这时要停止发送,
重发第五包以及以前还没有发送的数据,这些都要在一贞内完成,请问:在
停止发送时,怎么发送有错误的包和还没有发送的数据!
 
就是串口发送过程中突然检测到一个错误字节,这时就返回来重发错误的和剩下的没有发送
的数据!
 
虽然你说了两次,但我看的还不是很明白
你这十个数据包是什么意思?什么样的数据包?
你用的是什么控件与232口进行通讯的?
上位机软件如何检测到自己的发送错误?好像是下位机检测吧?
为什么要一帧发送?你的帧是怎么设置的?
 
在收到数据后马上处理
如果错误要求重发
需要自己定义一个协议
 
在自己定义的协议中加入发送起始字,结束字,校验位,还需要根据每个数据包加入包号和包校验。

这样假如某个包校验错误,那么就将这个包号及后面的数据再次发送。

下位机也在接到重发命令后,将已发送的字符按照接受格式排好,等待重发信息到达后,形成
完整信息。
 
就是说我要发送100个字节的数据,在发送到第50字节时,下位机返回信号说
在第40和50字节之间有错误,这是我要停止以前的发送,返回从第40字节重法
数据,注意:这些在一贞内发送,返回也是在着一贞内返回在发送。谁有办法???
在api 的设备控制快中有parity,他有四个选项no,odd,evev,mark,space,各是什么
意思?????
 
我有自已开发COM组件需要吗?免费提供喔
 
no是无校验,odd应该是奇校验,evev应该是偶校验吧,mark跟space不太清楚
其实关键是你的通讯协议还有校验,定好了,如果有错误,重新发送就行了
 
关键是在一贞内完成一段数据的重发!
还有就是用delphi可不可以直接访问硬件设备?
 
你想访问什么硬件设置?如果你懂汇编,可以在delphi时加入汇编
不太懂你为什么非要在一帧内完成一段数据的重发?
 
我要访问计算机的rs232端口,他是由8250控制的!请问怎么在delphi里
嵌入汇编?
 
asm
汇编语言
.....
.....
end;
 
在api 的设备控制快中有parity,他有四个选项no,odd,evev,mark,space,各是什么
意思?????
 
楼主的思路错误!
正确的方法是:A发送 -- B接收 -- B校验 -- 出错要求A重发错误的位置 -- A重发 ...
 
后退
顶部