一、前导知识 串行口是计算机的标准接口,现在的PC机(个人电脑)一般至少有两个串行口COM1和COM2。串行口应用广泛,在数据通信、计算机网络以及分布式工业控制系统中,经常采用
一、前导知识串行口是计算机的标准接口,现在的PC机(个人电脑)一般至少有两个串行口COM1和COM2。串行口应用广泛,在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息 电气标准及协议来分包括RS-232-C、RS-422、RS485、USB(Universal Serial Bus)等 实现串口通信的必要设置串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。 对于两个进行通行的端口,这些参数必须匹配: 波特率 这是一个衡量通信速度的参数。它表示**每秒钟传送的bit的个数**。例如300波特表示每秒钟发送300个bit,波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信 数据位 这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位,如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 停止位 用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢 奇偶校验位 在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步 二、实验我们将通过模拟串口通信,在pc机上进行两个串口(COM1、COM2)的交互 需要用到的软件: Launch Virtual Serial Port Driver Pro:虚拟串口。使用它来模拟两个串口的连接 绘制窗口代码实现 1.使用SerialPort控制串口
2.打开串口
3.关闭串口
串口2的打开和关闭同理串口1实现 4.发送
5.接收
这里仅仅实现了一般的接收方式,并不严谨和健壮 测试使用软件模拟串口连接 打开两个程序 在一程序中打开串口1,在二程序中打开串口2,发送消息 在一程序中输入字符"hello,HanHanCheng!",发现在二程序中接收到,同样,在二程序中输入,在一中也能收到 三、总结1.由于是异步线程接收,在接收中需要使用委托来跨线程调用组件
2.DataReceived事件触发条件需要注意,可能在实现时,无法触发导致无法接收。 触发条件是:在接收到了ReceivedBytesThreshold设置的字符个数或接收到了文件结束字符并将其放入了输入缓冲区时被触发 四、附件完整代码
|
2022-05-13
2022-03-10
2021-07-02
2021-08-14
2021-05-17