通过Vision编写程序实现: 从串口1接收由计算机发送过来的6个字节的数据串,其中,最后一个字节是前面5个字节的异或值(称为校验值)。在程序中进行校验,若计算的校验值和收到的校验值相同,则发回1;否则,发回0。通信参数:9600,n,8,1
时间: 2023-12-14 15:37:41 浏览: 131
以下是基于 Vision 的程序实现:
```
char checksum(char* data) {
char check = 0;
for (int i = 0; i < 5; i++) {
check ^= data[i];
}
return check;
}
void main() {
char buffer[6];
char received_checksum, calculated_checksum;
// 初始化串口1
OpenCom(1, 9600, 'n', 8, 1);
while (1) {
// 从串口1接收6个字节的数据
ReadCom(1, buffer, 6);
// 计算校验值
calculated_checksum = checksum(buffer);
// 获取接收到的校验值
received_checksum = buffer[5];
// 进行校验并回复结果
if (calculated_checksum == received_checksum) {
WriteCom(1, "1", 1);
} else {
WriteCom(1, "0", 1);
}
}
}
```
程序中定义了一个 `checksum` 函数,用于计算前5个字节的异或值。在主循环中,使用 `ReadCom` 函数从串口1接收6个字节的数据,并调用 `checksum` 函数计算校验值。然后,程序将接收到的校验值和计算的校验值进行比较,如果相同就通过 `WriteCom` 函数向计算机发送一个字节的数据 "1",否则发送 "0"。
阅读全文