如果你愿意的话,整个比特集合就是一个数据包.否则,起始位和停止位与数据位无法区分.比如说你有一个起始位,一个停止位,没有奇偶校验和8个数据位.这意味着存在低位(开始)8个数据位(可以是256种组合中的任何一种)和高位(停止).接收器必须被告知这是8N1所以它正在寻找低,8位和高,如果它没有看到它然后它没有锁定数据,并且很可能它基本上丢弃了第一位,转移再一次,然后寻找一个开始和停止8中间.一旦它看到它然后它假定它是真实数据并允许字节/字符进入接收缓冲区.如果接下来的10位没有那个开始8位停止模式,那么这是一个帧错误,它再次开始搜索.所以,如果这种模式进来
000000000000011111
前10位没有启动和停止
0000000000
所以丢弃第一个零,然后再试一次
00000000000011111
0000000000
不,仍然没有开始和停止
这种情况一直重复,直到串行流转换为这样
00000000011111xxxxxxxxxxx
0000000001
我们有一个开始,8位和一个停止,所以我们认为一个好的字符0x00在rx缓冲区中保存0x00.
从停止位后的下一位开始,我们接下来的10位
1111xxxxxxxxxxx
并且这不是以起始位开始,因此这是一个帧错误
1111xxxxxx
我们回去寻找8位的起始位和停止位.
如果你使用奇偶校验位然后它是相同的,但你不仅需要一个启动和停止,但你需要中间的位具有一定的奇偶校验,偶数或奇数.所以为了获得一个好的字符,你需要启动,一些具有正确奇偶校验位和停止位的位,然后你可以提取字符并在停止位之后寻找另一个起始位.