当前板子上存在1个串口,波特率分别为9600: (1)依次写入字符串指令:unlog\r\n , saveconfig\r\n;异常则重写(最多尝试5次) (2)监控返回数据指令判断是否写入成功:[例如:'$command, saveconfig,response: OK*55\r'],其中格式为:$command, 写入指令, response: 返回结果 xxx\r'。 (3)其中的写入指令为写入的字符串指令,返回结果若是写入成功会传回OK,异常会传回Error; (4)打印监控返回的结果。并输出最终写入结果是否OK。
时间: 2024-03-09 11:50:10 浏览: 57
串口通信-双机.rar_fallur1_电位器通过两个HC-05控制灯亮灭_蓝牙双机通信
以下是一个简单的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_RETRY 5
#define BUF_LEN 128
int main() {
char buf[BUF_LEN];
int retry = 0;
int success = 0;
while (retry < MAX_RETRY && !success) {
// 写入unlog指令
printf("Writing unlog command...\n");
printf("unlog\\r\\n\n");
printf("Waiting for response...\n");
fgets(buf, BUF_LEN, stdin);
// 写入saveconfig指令
printf("Writing saveconfig command...\n");
printf("saveconfig\\r\\n\n");
printf("Waiting for response...\n");
fgets(buf, BUF_LEN, stdin);
// 检查返回结果
if (strstr(buf, "response: OK") != NULL) {
printf("Write success!\n");
success = 1;
} else {
printf("Write failed! Retrying...\n");
retry++;
}
}
if (success) {
printf("Final result: OK\n");
} else {
printf("Final result: Error\n");
}
return 0;
}
```
这个代码首先定义一个长度为128的缓冲区,然后循环尝试写入unlog和saveconfig指令,并等待返回结果。如果返回结果中包含"response: OK"字符串,则表示写入成功,程序输出"Write success!"并退出循环。否则,程序输出"Write failed! Retrying..."并将重试次数加1。如果重试次数超过5次,则程序输出"Final result: Error"并退出。如果成功写入,程序输出"Final result: OK"。需要注意的是,在输出字符串指令时,需要使用反斜杠转义字符。在等待返回结果时,程序使用fgets函数从串口读取数据,并将其存入缓冲区中。如果返回结果中包含"response: OK"字符串,则表示写入成功。
阅读全文