全双工,半双工,单工
全双工方式( full duplex )
当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制。在全双工方式下,通信系统的每一端都设置了发送器和接收器。因此,能控制数据同时在两个方向上传送。全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利。这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号。(可能还需要控制线和状态线,以及地线)。
半双工方式( half duplex ) 若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制。采用半双工方式时,通信系统每一端的发送器和接收器,通过收 / 发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟。收 / 发开关实际上是由软件控制的电子开关
单工方式 一般分主从设备,只允许主设备给从设备发,不允许从设备往主设备发;即主设备发送,从设备接收,通讯是单向的。
串口传输
USART:是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备
1> 打开: 串口助手。
2> 配置“com”口: 要和设备管理器中对应的com口号一致。
3> 配置“波特率”: 要和通讯的协议一致。
4> 配置其他的功能参数: 比如“16进制显示”,“白底黑字”等等这些根据自己的需求选择。一般就不进行配置的。配置完后打开串口
QT中的串口通信
-
串口通信需要用到QT的serialport模块,在pro文件中添加
QT += serialport -
获取电脑端口号:
在网络技术中,端口包括逻辑端口和物理端口两种类型。物理端口是用于连接物理设备之间的接口。
#include <QSerialPort>
#include <QSerialPortInfo>
查询可用串口
int SerialPort_Number=0; //记录设备串口数量
QSerialPortInfo SerialPort_info[36]; //本机可使用的串口信息
foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
{
SerialPort_info[SerialPort_Number++]=info;
}
设置串口
//检测串口是否已被占用
if(SerialPort_info[SerialPort_Idx].isBusy())
{
//该串口被占用
/*code begin*/
SerialPort_Idx++;
/*code end*/
return 0;
}
//设置串口
QSerialPort uSerial;
uSerial.setPort(SerialPort_info[SerialPort_Idx]);
uSerial.setBaudRate(256000); //波特率
uSerial.setDataBits(QSerialPort::Data8); //数据位:8
uSerial.setParity(QSerialPort::NoParity); //无校验
uSerial.setStopBits(QSerialPort::OneStop); //停止位:1
uSerial.setFlowControl(QSerialPort::NoFlowControl);//无流控
uSerial.open(QIODevice::ReadWrite); //打开