进阶小菜鸟
获得 71 次赞
帮助过146人
前两天有个公司在学校招聘,我本来觉得我的水平还可以,做了很多比赛,也拿奖了,简历上也比较好看,但是笔试的时候,我好多都不会,C语言的题,基本上都不会,我平时写程序的时候,都是在电脑上写,错了就改,不会的查,结果叫我在卷子上看的时候,我一脸懵逼,简直不知道该从何下笔,不知道工作的朋友原来也没有遇到过,请支一下招,感激不尽呐。
我在串口上收到一个12位的字符串,比如是“1122334455EF”,怎么样转换成一个unsigned char的{0x110x220x330x440x550xEF}
nt str_cmp(unsigned char *str1unsigned char *str2int len){ int i=0; while(i<len) { if(str1[i]!=str2[i]) { return 0; } i++; } return 1;}static void NpiSerialCallback( uint8 port uint8 events ){ (void)port; // 避免编译告警 if (events & (HAL_UART_RX_TIMEOUT | HAL_UART_RX_FULL)) //串口有数据 { RX_Num = 0; RX_Num = NPI_RxBufLen(); //读出串口缓冲区有多少字节 if(RX_Num == 0) { return; } else { RX_Buffer = osal_mem_alloc(RX_Num); //申请缓冲区buffer if(RX_Buffer) { NPI_ReadTransport(RX_BufferRX_Num); //读取读取串口缓冲区数据,释放串口数据 if(str_cmp("QZ+AT"RX_BufferRX_Num)) { NPI_PrintString("AT OK\r\n"); memset(RX_Buffer 0 RX_Num); //清缓存数据 RX_Num = 0; // osal_mem_free(RX_Buffer); //释放申请的缓冲区 return; } if(str_cmp("QZ+RST"RX_BufferRX_Num)) { NPI_PrintString("RST OK\r\n"); memset(RX_Buffer 0 RX_Num); //清缓存数据 RX_Num = 0; return; // RX_Num = 0; //osal_mem_free(RX_Buffer); //释放申请的缓冲区 } if(str_cmp("QZ+RMAC"RX_BufferRX_Num)) { NPI_PrintString("READ MAC OK\r\n"); memset(RX_Buffer 0 RX_Num); //清缓存数据 RX_Num = 0; //RX_Num = 0; // osal_mem_free(RX_Buffer); //释放申请的缓冲区 return; } if(str_cmp("QZ+WMAC"RX_BufferRX_Num)) { NPI_PrintString("WRITE MAC OK\r\n"); memset(RX_Buffer 0 RX_Num); //清缓存数据 RX_Num = 0; // RX_Num = 0; // osal_mem_free(RX_Buffer); //释放申请的缓冲区 return; } NPI_WriteTransport(RX_Buffer RX_Num); //把收到的数据发送到串口-实现回环 memset(RX_Buffer 0 RX_Num); //清缓存数据 RX_Num = 0; //RX_Num = 0; //osal_mem_free(RX_Buffer); //释放申请的缓冲区 } } }}这个程序相当于串口接收判断接收的内容。每次执行到第一个判断就结束了,,而且我内存不是已经释放了嘛?那个字符串判断我在VC上试过是正确的呀,谢谢各位了。
利用CC2541,主从模式,观察者模式两种单独我都实现了,但是现在要求利用APP远程改MAC,这个问题我刚刚问了,但是改MAC肯定要连接,但是最终工作在广播模式,所以说能不能先配置成从机模式,等改完了Mac地址再变成广播模式,请大佬解答一下,比较急,网上没有查到。