![](https://csdnimg.cn/release/download_crawler_static/87758662/bg4.jpg)
. . . .
线,表示和线的连接已经建立。读取 DSR 线置高,PC 机开始发送数据。一个简单的规
则是 DTR/DSR 用于表示系统通信就绪,而 RTS/CTS 用于单个数据包的传输。
在 LabWindows ,函数 SetCTSMode 使能或者禁止使用硬件握手。如果 CTS 模式使
能,LabWindows 使用如下规则:
当 PC 发送数据:
RS-232 库必须检测 CTS 线高后才能发送数据。
当 PC 接收数据:
如果端口打开,且输入队列有空接收数据,库函数置高 RTS 和 DTR。
如果输入队列 90%满,库函数置低 RTS,但使 DTR 维持高电平。
如果端口队列近乎空了,库函数置高 RTS,但使 DRT 维持高电平。
如果端口关闭,库函数置低 RTS 和 DTR。
c,XModem 握手:最后讨论的握手叫做 XModem 文件传输协议。这个协议在 Modem
通信中非常通用。 尽管它通常使用在 Modem 通信中,XModem 协议能够直接在其他遵循
这个协议的设备通信中使用。在 LabWindows 中,实际的 XModem 应用对用户隐藏了。
只要 PC 和其他设备使用 XModem 协议,在文件传输中就使用 LabWindows 的 XModem 函
数。函数是 XModemConfig ,XModemSend 和 XModemReceive 。
XModem 使用介于如下参数的协议: start_of_data 、end_of_data 、neg_ack 、wa
it_delay 、start_delay 、max_tries 、packet_size 。这些参数需要通信双方认定,
标准的 XModem 有一个标准的定义:然而,可以通过 XModemConfig 函数修改,以满足
具体需要。这些参数的使用方法由接收方发送的字符 neg_ack 确定。这通知发送方其
准备接收数据。它开始尝试发送,有一个超时参数 start_delay ;当超时的尝试超过
max_ties 次数,或者收到接收方发送的 start_of_data ,发送方停止尝试。如果从发
送方收到 start_of_data ,接收方将读取后继信息数据包。包中含有包的数目、包数
目的补码作为错误校验、 packet_size 字节大小的实际数据包,和进一步错误检查的
求和校验值。在读取数据后,接收方会调用 wait_delay ,然后想发送方发送响应。如
果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最
大值 max_tries 。如果一直没有收到响应,发送方通知用户传输数据失败。
由于数据必须以 pack_size 个字节按包发送,当最后一个数据包发送时,如果数
据不够放满一个数据包,后面会填充 ASCII 码 NULL(0)字节。这导致接收的数据比
原数据多。在 XModem 情况下一定不要使用 XON/XOFF ,因为 XModem 发送方发出包的数
目很可能增加到 XON/OFF 控制字符的值,从而导致通信故障。
【USB 的简述】
.. .. ..