大家好、我正在使用 Code Composer Studio 6中的 CC2650 Launchpad 开发自动门锁。
为此、我从 simple_Observer 开始。
想法是等待 RSSI 大于(-40)并检查 pEvent->deviceInfo.pEvtData 以查看它是否与存储在变量中的 RSSI 相同。
我将在上下文中发布相关代码:
//变量与我在 termite 中看到的数据相同,抛出 UART
静态 uint8_t MsgData[512]={0x02、0x01、0x1a、0x06、0x09、0x50、0x6f、0x72、0x74、0x61、0x04、0xff、0xf2、0xf1、0x02、0x02、0x2、0x4、0xb2
、0x4、0x2、0x4、0xb2、0x4、0x4、0x4、0x4、0xb2、0x4、0xf2、0x4、0x4、0xb2、0x
{
静态 char cmd[512]、cmd2[512];//变量"cmd"接收来自广播器的数据,变量"cmd2"接收来自内部变量的数据,该数据应与"cmd"相同。
静态 int ret;//此变量用于(memcmp 函数)
//仅写入 RSSI 级别
UART_WRITE (UART、"level:"、sizeof ("level:")-1);
sprintf (cmd、"%d\r\n"、pEvent->deviceInfo.RSSI);
UART_WRITE (UART、cmd、strlen (cmd)-1);
//将接收到的广播数据从 uint8转换为字符串 in (sprintf 函数)
UART_WRITE (UART、"Data:"、sizeof ("Data:")-1);
对于(int j=0;j DeviceInfo.dataLen;j++)
{
sprintf (cmd、"%02x "、pEvent->deviceInfo.pEvtData[j]);
UART_WRITE (UART、cmd、3);
}
UART_WRITE (UART、"\r\n"、sizeof ("\r\n")-1);
UART_WRITE (UART、"\r\n"、sizeof ("\r\n")-1);
//检查 RSSI 水平,直到这里一切都很好
if (pEvent->deviceInfo.RSSI >=(-40))
{
Flag = 1;
}
否则(pEvent->deviceInfo.RSSI <(-40))
{
标志= 0;
}
//在这里,我从与接收到的 uint8矢量具有相同 uint8矢量的变量 MsgData 转换到转换为"cmd"变量的 UART
if (flag = 1)
{
for (int i=0;i DeviceInfo.dataLen;i++)
{
sprintf (cmd2、"%02x "、MsgData[i]);
UART_WRITE (UART、cmd2、3);
}
//这里我比较两个字符串。
RET = memcmp (cmd、cmd2、pEvent->deviceInfo.dataLen);
if (ret =0)
{
PIN_setOutputValue (pinHandle、IOID_6、1);
PIN_setOutputValue (pinHandle、IOID_7、1);
Clock_start (Clock_handle (&myClock));
}
否则、如果(RET < 0)
{
UART_WRITE (UART、"cmd2 > cmd \n\r"、sizeof ("Erro ret < 0 \n\r")-1);
}
否则(RET >0)
{
//我从 memcmp 获取此响应
UART_WRITE (UART、"cmd2 < cmd \n\r"、sizeof ("Erro ret < 0 \n\r")-1);
}//返回;
所以我不知道为什么,但是它说 CM2比 cmd 小,这让我很奇怪,我是否看到了从广播包接收到的所有数据?
接下来是我在 Termite 中看到的内容:
发现
地址:70925d364852Level:-28
数据:02 01 1a 06 09 50 6F 72 74 61 04 ff f2 B2 02 0A 01 04 16 F4 F9 B2
02 01 1a 06 09 50 6F 72 74 61 04 ff f2 b2 02 0A 01 04 16 f4 f9 b2 cmd2 < cmd
[00]à