我有一个设备驱动程序,使用C中的#define宏对wifi路由器的访问进行硬编码,代码如下:
#define SSID "XXXX-XXX"
#define AUTH AAAA
#define PSK “YYyy00”
并且使用这些用户定义常量的函数定义为:
router_connect((char *)SSID, sizeof(SSID), AUTH, (char *)PSK, CH_ALL);
我想将这些常量更改为定义.h文件作为字符串,我可以从SD卡读取并将其传递给函数调用而不是在main.h文件中进行硬编码。我希望能够更改它们而不是像程序中编码的固定存储一样存储它们。毕竟它们是用户定义的字符串,只要值在设备之间正确传递,它们就不需要在主代码中进行硬编码。
所以我在main.c中将它们写成:
extern char SSID[] = "XXXX-XXX";
extern uint8 AUTH = AAAA;
extern char PSK[] = "YYyy00";
在SD卡中我有一个文件setup.txt,我在下面用三行输入三个字符串:
XXXX-XXX;
AAAA;
YYyy00;
我写了一个小例程来读取SD卡中的每一行并将字符串分配给变量 SSID,AUTH,PSK
char line[20];
int line_count;
FRESULT my_res;
FIL myfil;
my_res = f_open(&myfil, "setup.txt", FA_READ);
if (my_res != FR_OK) {
printf("file: setup.txt is not found. \n\r");
/* deal with errors */;
}
for (line_count = 1; line_count < 4;) {
f_gets(line, sizeof(line), &myfil);
if (line_count == 1) {
strcpy(SSID, line);
printf("SSID: %s %s \n\r", SSID, line);
}
if (line_count == 2) {
strcpy(AUTH, line);
printf("AUTH: %s %s \n\r", AUTH, line);
}
if (line_count == 3) {
strcpy(PSK, line);
printf("PSK: %s %s \n\r", PSK, line);
}
line_count++;
}
我的意图是在调用函数“router_connect”之前从SD卡读取这些字符串。 我可以毫无问题地做到这一点,当我打印出我从SD卡读取的叮咬时,它们就像硬编码时一样,但我发现“router_connect”功能不喜欢我传递的参数。设备驱动程序在我对#define语句中的值进行硬编码时起作用,但由于某种原因它没有正确地将值传递给函数。你能告诉我,如果我把参数传递给函数调用是不正确的,那么实现它的正确方法是什么。感谢。
答案 0 :(得分:-1)
首先,很高兴看到这个功能与这些参数的确切程度。其次,我看到你将AUTH
值读作char数组,函数想要的是uint8
。你怎么通过它?也许将AUTH解析为uint8
就可以了。