我的程序是从 Zigbee 接收数据并对其进行过滤以获得我想要的。
unsigned char idata buff[100]; //To read data from rawrxd[] and process data
unsigned char count=0; //To store counter for rawrxd[]
unsigned char buff_count=0; //store counter for buff[], read counter for rawrxd[]
if(buff_count!=count) //checking Is there any unread data?
{
if(buff_count==100) //go back to start position of array
buff_count=0;
buff[buff_count] = rawrxd[buff_count]; //read the data
if(strcmp(buff, "UCAST:000D6F0000A9BBD8,06=!221~@") ==0)
{
ES0=0;
Serial_txString("AT+UCAST:000D6F0000A9BBD8=!222~@");
tx(0x0D);
tx(0x0A);
ES0=1;
}
if(strcmp(buff, "UCAST:000D6F0000A9BBD8,06=!221#@") ==0)
{
ES0=0;
Serial_txString("AT+UCAST:000D6F0000A9BBD8=!222#@");
tx(0x0D);
tx(0x0A);
ES0=1;
}
buff_count++; //increase the read_count
}
这就是缓冲区应该如何接收UCAST,然后将它与字符串进行比较,如果它相同,则返回0。但是,它只比较一次,之后我收到下一个UCAST,它根本不比较.
此外,它的第一次比较必须相同才能工作。如果收到错误的字符,然后收到正确的字符,它将无法工作。由此看来,是指针问题吗?因为我的缓冲区是一个字符数组,我试图将它与一个字符串进行比较。