我是Java的初学者。我正在从串行端口读取数据。我有

serialPort.setSerialPortParams(
   9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
   SerialPort.PARITY_NONE);
9600DATABITS_8,STOPBITS_1PARITY_NONE是什么意思?

最佳答案



9600 BAUD :波特是每秒符号或脉冲的同义词。在这种情况下,它是指每秒传输的位数。

DATABITS _8 :一次传输8位数据。这是典型的情况,因为如今大多数机器都具有8位字节。

STOPBIT S_1 :添加了一个结尾位以标记单词的结尾。

PARITY_NONE :不包括parity位。这是一个错误检查功能。对于偶数奇偶校验,如果它会使比特的总和为偶数,则加1,反之亦然。有时也会使用标记和空间奇偶校验。 RS-232是一种低级协议(protocol),错误检查通常留给应用程序层。因此,串行数据包中通常包含checksumCRC。例如,以太网为其数据帧使用32位CRC,但它与应用程序开发人员无关。

在RS-232通信中,始终包含一个起始位。 universal asynchronous receiver/transmitter (UART)(此Java库将控制的硬件)寻找该标记,然后开始将数据位移入缓冲区。因此,传输中的每个字都将占用10位:1个起始位+ 8个数据位+ 1个停止位。在9600 BAUD的情况下,即使将发送相当于1200字节的数据,这也将为您提供最大960字节/秒的最大数据传输速率:9600比特/秒除以每个字的10个比特将产生960字/秒的8个数据位(每个字1个字节)。

对于速度,数据位,奇偶校验和停止位,您使用的此配置通常缩写为 9600,8,N,1

09-29 19:45