同步串口与异步串口的区别是什么呢?
同步串口RS422和异步串口RS422都是RS422C方式的体现。
数据流的发送,在物理上,体现为一个高低电平序列。发送方产生电平序列,接收方进行解码。双方需要约定一个规矩,使得数据能够正确的发送与接收。其中,关键的一条,是接收方如何辨别每个数据位在电平序列中的始末位置。
对于异步串口,定位信息包含在电平序列中。双方先约定好数据帧的格式,例如波特率、数据位、停止位、奇偶校验等。线路空闲时,电平为高。
一旦检测到一个下降沿,则视为一个起始位。然后按照约定的格式,接收这一帧的数据。接收完成后,继续检测下一个起始位。也就是说,异步串口的同步,是以帧为单位的。对帧内的各个数据位,则通过约定的波特率来识别。
对于同步串口,定位信息则通过专门的时钟信号线来实现。发送、接收方根据时钟,将数据流转换为电平信号。
两者的区别是在它们的传输方式上:异步传输是指一次传输一个字符(5~8位)的数据。每个字符用一个韦始位引5261导,用一个停止位结束。这样就能使4102接收方分析出发送方的数据。但容易发生计时漂移。
而同步传输是采用面向字1653符或面向位的插入方式,控制所传送的一帧的起始。这就是同步传输和异步传输的区别。
扩展资料
串行队列异步执行
let serialQueue = DispatchQueue(label: "serial_queue")
serialQueue.async {
print(Thread.current)
serialQueue.async {
sleep(2)
print(Thread.current)
print(1)
}
print(2)
serialQueue.async {
print(3)
print(Thread.current)
}
sleep(1)
}