一看就知道——肯定是高手(75分)

  • 主题发起人 主题发起人 hua8hua
  • 开始时间 开始时间
H

hua8hua

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟现在有一个串口通信的程序,用来传送文件,为了保证传送正确,所以采用了应答式
即发送方在收到接收方发过来的请求信号才发送数据过去,在发送方这边:先把文件分块
然后在每一块的开头写进去数据块的序号,即第一块写01,第二块写02...,发送时根据
接收方发过来的请求发送信号中包含的数据块序号,然后发送相应的数据块。在接受方,
收到数据块后,就发送请求信号,信号中包含数据块序号。这样就确保数据不会丢失。
现在有一个难题,要是在串口线断开的情况下,该怎么办呢?是不是发送方每发送一条
数据,就需要利用一个计时器来计时,超过时间就重发数据块?而接收方也需要一个来
处理发送的请求信号?请高手出动,急急急急急急急急急,小弟分比较少,全部给了。
 
不会吧,线断了,可以检测出来的。

不过,一般这种问题都要计数器的。
 
采用应答机制。接收方收到后,就发一个确认信息。如果超时或传输出错,发送方就把指定
的数据块再发一次,发送次数超过指定次数后,就可以认为线路有问题,报错。
 
crab兄:
我采用的就是应答式,并设置读超时和写超时,不过断线了,写照样可以写,
读也可以读,你说的发送次数该怎么设置?
 
可不可以发送一些包之后,等待接受方的确认信号,确认信号中可以包含接受到的包的序号.

不过断线了,写照样可以写,读也可以读???不太明白.
 
我就是这么做的,包中包含序号。
断线之后,
照样可以写,只是接收方收不到;
照样可以读,只是读不到什么东西
 
很简单,你定义传输协议的时候应该规定好应答的具体格式,
如果主叫方(你所说的发送方)在超时前读不到接收方的正确相应,
就可认定线路不通,准备继续呼叫并做断点续传。
 
发之前判断RTS信号, 接收之前判断DTS信号
 
多人接受答案了。
 

Similar threads

后退
顶部