char command[] = "/usr/bin/sn_core.elf getstat"; 调用此指令 打印出来的是Status:WR mode : WRC_SLAVE_WR1 wr0 -> lnk:0 rx:0 tx:79928 lock:1 wr1 -> lnk:1 rx:4168 tx:1190 lock:1 syncs:wr1 sv:1 ss:'TRACK_PHASE' aux:0 sec:28662 nsec:792863776 mu:864840 dms:428450 dtxm:240682 drxm:187822 dtxs:241345 drxs:180545 asym:7940 crtt:14446 cko:-10 setp:2523 hd:57772 md:33249 ad:65000 ucnt:1109 temp: 45.625 C Time: Thu, Jan 1, 1970, 07:57:43 +677359904 nanoseconds. 将WR mode 的值传递给一个变量
时间: 2023-08-29 07:05:06 浏览: 108
可以使用C语言的字符串处理函数和指针操作来获取 WR mode 的值。具体实现如下:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char command[] = "/usr/bin/sn_core.elf getstat";
char result[1024];
char *needle = "WR mode :";
char *pos, *end;
int wr_mode;
// 执行命令并获取输出结果
FILE *fp = popen(command, "r");
if (fp == NULL) {
printf("Failed to execute command\n");
return -1;
}
fgets(result, sizeof(result), fp);
pclose(fp);
// 获取 WR mode 的值
pos = strstr(result, needle);
if (pos == NULL) {
printf("Failed to find WR mode\n");
return -1;
}
pos += strlen(needle); // 跳过"WR mode :"
wr_mode = strtol(pos, &end, 10); // 将字符串转换为整数
printf("WR mode is %d\n", wr_mode);
return 0;
}
```
解释一下上面的代码,首先定义了一个命令字符串 `command`,用于执行获取状态的命令。然后使用 `popen` 函数执行命令并获取输出结果,将结果保存到字符数组 `result` 中。
接着使用 `strstr` 函数在结果字符串中查找子串 `"WR mode :"`,如果找到了,则将指针 `pos` 指向该子串的起始位置。接下来使用指针操作跳过 `"WR mode :"` 并将指针 `pos` 指向 WR mode 的值的起始位置。然后使用 `strtol` 函数将该位置开始的字符串转换为整数,并将转换后的整数赋值给变量 `wr_mode`。
最后输出 `wr_mode` 的值,即为所需的 WR mode。
阅读全文