Java中串口参数的含义是什么?

5

我是Java的初学者,正在从串口读取数据。我收到了

serialPort.setSerialPortParams(
   9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, 
   SerialPort.PARITY_NONE); 
< p >“9600”,“DATABITS_8,STOPBITS_1”和“PARITY_NONE”的含义是什么?< /p>
3个回答

10

9600 波特率: 波特率是指每秒钟传输的符号或脉冲数。在本例中,它指的是每秒传输的比特数。

数据位_8: 每次传输8位数据。由于大多数设备现在都有8位字节,因此这是典型的数据位长度。

停止位_1: 为了标记一个字的结束,添加一个停止位。

奇偶校验: 不包括校验位。这是一种错误检查功能。对于偶校验,如果添加一个1可以使位的总和为偶数,则会添加1;对于奇校验则相反。有时还会使用标志和空间奇偶校验。RS-232是一种低级别的协议,错误检查通常留给应用程序层处理。为此,通常在串行数据包中包含校验和循环冗余校验(CRC)。例如,以太网使用32位CRC进行数据帧校验,但这不涉及应用程序开发人员。

在RS-232通信中,始终会包含一个起始位。这个Java库将控制的通用异步收发器/传输器(UART)硬件会寻找这个标记并开始将数据位移动到缓冲区中。因此,你传输的每个字都需要10位:1个起始位+8个数据位+1个停止位。在9600 BAUD下,即使发送相当于1200字节的数据,也只能达到960字节每秒的最大传输速率:9600比特每秒除以10比特每个字等于每秒960个字,每个字有8个数据位(1个字节)。
你正在使用的配置通常会缩写为9600,8,N,1,分别表示速度,数据位,奇偶校验和停止位

2

当你说"got serialPort.setSerialPortParams(...."时,这个方法是从什么地方获取的?如果你想了解此方法的参数,请参考javadoc文档


0

欢迎来到Stack Overflow!尽管这理论上可能回答了问题,但最好在此处包含答案的关键部分,并提供参考链接。 - Flexo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接