我的源代码中发生了一些非常奇怪的事情。以下函数运行良好,当密码正确时打印“y”,当密码不正确时打印“n”。但是,如果我在 else 语句中添加一些 UART1_Write 和 Delay 函数,错误就会出现,即使密码是“zxc”(正确),它总是会进入 else 语句。我正在使用 MikroC PRO for PIC v6.0.0,机器人系统由 PIC18F452 和连接到它的 RN-42 蓝牙模块组成。我正在使用带有蓝牙和 TeraTerm 的笔记本电脑进行测试。
欲了解更多信息:http: //instagram.com/p/pLnU9eDL8z/#
这是正常工作的例程:
void authenticate() {
char *input = "";
char *password = "zxc\0";
unsigned char ready = 0;
while (connected && !ready) {
if (UART1_Data_Ready()) {
UART1_Read_Text(input, "|", 17);
strcat(input, "\0");
if (strcmp(input, password) == 0) {
UART1_Write('y');
ready = 1;
} else {
UART1_Write('n');
ready = 1;
}
}
}
}
这个版本的例程总是放在 strcmp(input, password) == 0 部分的 ELSE 语句中:
void authenticate() {
char *input = "";
char *password = "zxc\0";
unsigned char ready = 0;
while (connected && !ready) {
if (UART1_Data_Ready()) {
UART1_Read_Text(input, "|", 17);
strcat(input, "\0");
if (strcmp(input, password) == 0) {
UART1_Write('y');
ready = 1;
} else {
UART1_Write('n');
Delay_ms(100);
UART1_Write('$');
Delay_ms(100);
UART1_Write('$');
Delay_ms(100);
UART1_Write('$');
Delay_ms(100);
UART1_Write('K');
Delay_ms(100);
UART1_Write(',');
Delay_ms(100);
UART1_Write('-');
Delay_ms(100);
UART1_Write('-');
Delay_ms(100);
UART1_Write('-');
Delay_ms(100);
UART1_Write('\n');
ready = 1;
}
}
}
}
发送所有这些附加符号以使 RN-42 进入命令模式并在密码错误时断开用户连接是很重要的。请帮我解决问题。任何想法表示赞赏!