![](https://csdnimg.cn/release/download_crawler_static/87468890/bg4.jpg)
线置高,PC 机开始发送数据。 一个简单的规则是 DTR/DS R 用于表示系统通信就
绪,而RT S/CTS 用于单个数据包的传输。
在 LabWindo ws,函数 SetC TSMode 使能或者禁止使用硬件握手。如果 CTS
模式使能, LabWindo ws使用如下规则 :
当 PC 发送数据:
RS-232 库必须检测 CTS 线高后才能发送数据。
当 PC 接收数据 :
如果端口打开,且输入队列有空接收数据,库函数置高 RTS 和 DTR。
如果输入队列 90%满,库函数置低R TS,但使 DTR维持高电平。
如果端口队列近乎空了 ,库函数置高 RTS ,但使D RT 维持高电平。
如果端口关闭 ,库函数置低 RTS 和 DTR。
c,XMode m握手 :最后讨论的握手叫做 XMode m文件传输协议。这个协议在 Mod
em 通信中非常通用。尽管它通常使用在 Modem 通信中 ,XModem 协议能够直接在
其他遵循这个协议的设备通信中使用。在 LabWind ows 中,实际的X Mode m应用对
用户隐藏了。只要 PC 和其他设备使用 XModem 协议,在文件传输中就使用 LabW
indows 的X Modem 函数。函数是XM odemConfig ,XMod emSend 和 XMod
emReceive 。
XModem 使用介于如下参数的协议 :start _o f_dat a、end_o f_dat a、
neg_ack、wait_de lay、start_ delay 、max_t ri es、pack et_si ze。这些
参数需要通信双方认定 ,标准的 XModem 有一个标准的定义 :然而,可以通过 XMode
mCon fi g 函数修改,以满足具体需要。 这些参数的使用方法由接收方发送的字符 n
eg_ack 确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数 st
art _delay ;当超时的尝试超过 max_ti es 次数,或者收到接收方发送的 star t_
of_data ,发送方停止尝试。如果从发送方收到 start_o f_data,接收方将读取后继
信息数据包。包中含有包的数目、包数目的补码作为错误校验、 packet_size 字节大
小的实际数据包 ,和进一步错误检查的求和校验值。在读取数据后 ,接收方会调用 wai
t_delay, 然后想发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,
直到收到响应或者超过重发次数的最大值 max_tri es。如果一直没有收到响应,
发送方通知用户传输数据失败。
由于数据必须以 pac k_size个字节按包发送, 当最后一个数据包发送时 ,如果数
据不够放满一个数据包,后面会填充 ASCI I 码 NULL(0)字节。这导致接收的数
据比原数据多。在 XModem 情况下一定不要使用X ON/XOFF,因为 XMod em发送
方发出包的数目很可能增加到X ON/OFF 控制字符的值,从而导致通信故障。