一、串口基础知识概述
在计算机通信领域,串口作为一种非常通用的设备通信协议,广泛应用于计算机与其他设备之间的数据传输。不要与通用串行总线(USB)混淆。大多数计算机通常包含两个基于RS232的串口,而串口也是仪器仪表设备通用的通信协议。许多GPIB兼容的设备也配备了RS-232接口。串口通信协议可用于获取远程采集设备的数据。
串口通信的概念相对简单,它是按位(bit)发送和接收字节的。尽管相较于按字节(byte)的并行通信,串口的传输速度较慢,但其优势在于可以通过一根线发送数据同时使用另一根线接收数据,实现远距离通信。比如,在IEEE488定义的并行通信状态中,设备线路总长常不得超过20米,任意两个设备间的长度不得超过2米;而对于串口而言,通信距离可达1200米。
串口主要用于ASCII码字符的传输。通信使用三根线完成:(1)地线,(2)发送线,(3)接收线。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其余的线主要用于握手,不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须相互匹配。
二、关于波特率
波特率是衡量通信速度的关键参数,表示每秒钟传送的bit的个数。例如,如果协议需要4800波特率,那么时钟频率是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率设置为14、28800和36600。需要注意的是,波特率与通信距离成反比,高波特率通常用于近距离设备间的通信,如GPIB设备的通信。
三、关于数据位
数据位是衡量通信中实际数据位的参数。当计算机发送一个信息包时,实际的数据位数量可能不是8位,常见的数值包括5位、7位和8位。如何设置取决于想传送的信息类型。例如,标准的ASCII码是0~127(7位),而扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),则每个数据包使用7位数据。每个数据包包括开始/停止位、数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,“包”指任何通信的情况下的信息单位。
四、关于停止位
停止位用于表示单个包的结束。典型的值为1位、1.5位和2位。由于数据是在传输线上定时的,并且每个设备都有自己的时钟,因此在通信中两台设备间可能会出现小小的不同步。停止位不仅表示传输的结束,而且为计算机提供了校正时钟同步的机会。停止位的位数越多,对时钟不同步的容忍程度就越大,但数据传输率也会降低。
五、关于奇偶校验位
奇偶校验是串口通信中一种简单的检错方式。有四种检错方式:偶校验、奇校验、高校验和低校验。没有校验位也是可以的。对于偶校验和奇校验,串口会设置校验位(数据位后面的一位),以确保传输的数据具有偶数个或奇数个逻辑高位。例如,如果数据是011,对于偶校验,校验位为0,保证逻辑高位数是偶数个;对于奇校验,校验位为1,这样就有3个逻辑高位。高校验和低校验则简单地设置逻辑高或逻辑低位校验。这样可以使接收设备了解位的状态,有助于判断是否有噪声干扰通信或传输和接收数据是否不同步。
六、关于握手基础知识
在数据传输过程中,保证流畅无阻的通讯至关重要。为确保这一目标的实现,众多传输协议中都内嵌了握手机制。针对 LabWindows 系统中的数据传输,也不例外地采用了多种握手方式,包括 XOFF 传输中断恢复、硬件握手以及 XModem 文件传输协议等。这些机制确保了数据传输的顺畅进行,同时提供了灵活多变的通信方式。
让我们关注 XOFF 传输中断恢复机制。当数据传输过程中遭遇中断,LabWindows 系统会在缓冲区达到特定阈值时触发 XOFF 信号的发送。具体而言,当缓冲区占用率达到 75% 和 90% 时,系统会发送 XOFF 信号。显然,发送方必须遵循这一规则,以确保数据传输的继续。这种机制为数据传输提供了稳健性,确保了即便在中断情况下,也能迅速恢复传输。
接下来,我们硬件握手。这是一种通过硬件线路实现的握手方式。类似于 Tx 和 Rx 线路,RTS/CTS 和 DTR/DSR 线路共同协作,一组负责输出,另一组负责输入。RTS(Request to Send)和 CTS(Clear to Send)线路在接收方准备接收数据时发挥作用。当接收方准备就绪时,它会通过置高 RTS 线路来表明状态。发送方在确认可以发送数据时,会置高 CTS 线路。另一组 DTR(Data Terminal Ready)和 DSR(Data Set Ready)线路则主要用于 Modem 通信,它们的状态表示系统通信是否就绪。例如,当 Modem 与电话线连接建立后,它会置高 DTR 线路。在 LabWindows 系统中,可以通过 SetCTSMode 函数来启用或禁用硬件握手。当使用硬件握手时,RS-232 库会在发送数据前检测 CTS 线路的状态。
我们讨论 XModem 握手,这是一种文件传输协议。尽管它通常用于 Modem 通信,但 XModem 协议也可以在遵循该协议的设备之间直接通信。在 LabWindows 中,XModem 的实际应用对用户是隐藏的。只要 PC 和其他设备使用 XModem 协议,就可以使用 LabWindows 的 XModem 函数进行文件传输。这些函数包括 XModemConfig、XModemSend 和 XModemReceive。
XModem 协议使用一系列参数来进行通信,包括 start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries 和 packet_size 等。这些参数需要通信双方共同认定。标准的 XModem 有一个标准的参数定义,但可以通过 XModemConfig 函数进行修改,以满足具体需求。数据的传输以数据包的形式进行,每个数据包包含特定数量的字节。如果数据不足以填满一个数据包,会在其后添加 ASCII 码 NULL(0)字节。接收的数据量通常会多于原始数据。在 XModem 传输中,不能使用 XON/XOFF 控制字符,因为它们可能导致通信故障。通过遵循这些规则和参数,XModem 协议确保了文件传输的准确性和可靠性。
总体而言,LabWindows 系统中的数据传输机制通过不同的握手方式确保了通信的顺畅进行。无论是 XOFF 传输中断恢复、硬件握手还是 XModem 文件传输协议,它们都提供了灵活多变的通信方式,以适应不同的数据传输需求。
Copyright@2015-2025 www.xingbingw.cn 性病网版板所有