|
wu兄,有些问题想请教你,如果你看到了,请给我发消息,我发不了
这两天我一直都在研究这个ymodem协议
st官方iap程序里,只有接收程序。这个接收程序里 对包头解析时,如果接收到的第一个字节不符合包头命令,立马就返回错误了,然后程序就发送C给发送方,没有任何等待。
我的问题就在这里,如果不等待直接发送C,接受方有没有还在发送这一数据包时候处理接收命令的能力(比如,由于线路不良,发送方的正确包头被污染解析成错误包头)此时接受方还在发这一包一直到发完,就算接受方一直在监视接收缓冲区有没有接收,即使它收到C立马停下,此时可能也已经有一些字符发送出去(因为串口的低速延迟),发送方又对此判断错误又发C请求重新开始吗?我看到英文版的Ymodem协议里面建议说 接受方需等待线路干净后才能发(就是没有接收了)
这个是英文原文
Once into a receiving a block, the receiver goes into a one-second timeout
for each character and the checksum. If the receiver wishes to a
block for any reason (invalid header, timeout receiving data), it must
wait for the line to clear. See "programming tips" for ideas
所以我的意思是C这个启动传输命令任何时候必须等待接收缓冲空了再发C,怎么判断?等到超时为止,呵呵,可能拖慢时间
那个发送程序应该是wu兄的力作了,呵呵,但是我有个问题,里面怎么没有按照YMODEM协议,接收到C后再发送数据,函数内从头到尾没有这个接收判断 |
|