使用getchar()编了一段代码,放到荔枝派上运行时 无法获取正确的输入, 运行结果是不停打印else分支语句的提示字符串加一段乱码,程序代码如下:
/*
终端接收调试命令线程
在终端中输入相对应字符即可执行对应调试命令
根据需求 可增删改 调试命令
*/
void *Terminal_Cmd_Process(void *arg)
{	
	char cmd_buf[256] = {0};
	char tmp;
	uint8_t stat = 0, i = 0;
	char *p = 0;
	while(1){
		while((tmp = getchar()) != '\n'){		//从终端逐个接收字符放到cmd_buf缓冲区中(不超过256字节) 收到'\n'结束 
			cmd_buf[i] = tmp;
			i++;
		}
		if((p = strstr(cmd_buf,"init node"))){
			printf("ENTER CMD :%s \r\n",cmd_buf);
			Lora_Node_Init(Target_Node_Table[0],9,0);
		}
		else if((p = strstr(cmd_buf,"probe node"))){
			printf("ENTER CMD :%s \r\n",cmd_buf);
			Lora_Node_Prob_All(Target_Node_Table[0],9,0);
		}
		else if((p = strstr(cmd_buf,"lora send"))){
			printf("ENTER CMD :lora send \r\n");
			pthread_mutex_lock(&Lora_SRC_Lock[0]);	
			LoraMess_Forwarding("hello",5,0);
			pthread_mutex_unlock(&Lora_SRC_Lock[0]);
		}
		else{
			printf("unuseful cmd you have entered:%s\r\n",cmd_buf);
		}
		memset(cmd_buf,0,256);
		i = 0;
		//usleep(100000);			
	}
}此代码在其它平台上运行过,可正常工作,在荔枝派上运行出现上面描述的错误。
请教各位路过的大佬,这可能是什么原因造成的?有没有解决方法或者思路?
离线
使用的是V3s linux-4.14-y
离线
嗯,回家试一下,手头没有板子
离线