串口通信校验方式(even,odd,space,mark) 分类: 开...
时间: 2024-02-10 15:46:10 浏览: 28
串口通信校验方式包括以下几种:
1. 奇偶校验(Odd Parity):发送端在数据位中加入一位奇偶校验位,使得数据位中1的个数为奇数或偶数。接收端在接收时检测数据位中1的个数是否为奇数或偶数,如果接收到的数据与发送的数据的1的个数不同,说明数据出错。
2. 偶校验(Even Parity):与奇偶校验相似,只不过发送端在数据位中加入一位使得数据位中1的个数为偶数,接收端同样检测数据位中1的个数是否为偶数。
3. 无校验(No Parity):没有校验位,数据传输速度较快,但可靠性较低。
4. 标志校验(Mark Parity):发送端在数据位中加入一位标志位,使得数据位中为1。接收端检测到标志位时,知道数据传输开始,如果标志位错误,则数据传输失败。
5. 空格校验(Space Parity):发送端在数据位中加入一位空格位,使得数据位中为0。接收端检测到空格位时,知道数据传输开始,如果空格位错误,则数据传输失败。
以上是串口通信常见的校验方式,选择不同的校验方式可以根据通信的要求来确定。
相关问题
编写程序实现:用户输入一组数据,中间以空格分隔,比如:'88 74 101 26 15 0 34 22 77',进行奇偶分组并输出。 偶数有x个:... 奇数有y个:...
好的,我可以帮你编写这个程序。以下是Python的代码实现:
```python
data = input("请输入一组数据,以空格分隔:")
nums = data.split() # 将输入的字符串转换为整数列表
even_nums = []
odd_nums = []
for num in nums:
num = int(num)
if num % 2 == 0:
even_nums.append(num)
else:
odd_nums.append(num)
even_count = len(even_nums)
odd_count = len(odd_nums)
print("偶数有{}个:{}".format(even_count, even_nums))
print("奇数有{}个:{}".format(odd_count, odd_nums))
```
程序首先接受用户的输入,并将输入的字符串转换为整数列表。然后,程序遍历整数列表,将偶数和奇数分别添加到两个列表中。最后,程序输出偶数和奇数的个数以及它们的列表。
java.lang.IllegalArgumentException: Odd number of characters.
这个异常通常是在使用十六进制字符串转换为字节数组时出现的。如果十六进制字符串的长度是奇数,则会抛出java.lang.IllegalArgumentException: Odd number of characters异常。因为十六进制字符串必须是偶数位,每两个字符表示一个字节。如果字符串长度是奇数,则最后一个字符没有匹配的字符,因此会抛出异常。
以下是一个将十六进制字符串转换为字节数组的示例,如果字符串长度是奇数,则会抛出java.lang.IllegalArgumentException: Odd number of characters异常:
```java
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
if (len % 2 != 0) {
throw new IllegalArgumentException("Odd number of characters.");
}
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
```