工具与软件:
在论坛上做了一些阅读后,我发现了它的功能
uart_echo_on、uart_data_text、uart_readPolling ()、uart_writePolling ()与 CC1310 UART 驱动程序不兼容。
我的问题是:我将一个 CC1310通过 UART 连接到一个传感器、当它执行成功的发送操作时响应"+OK"、当接收传感器响应数据时、它会发送至 CC1310、如"+RCV=3、5、hello、-13、23"。 我已经确定在 CC1310中、我在 RX 引脚中会有一个这样的字符串:"+OK+RCV=3、5、hello、-13、23"。 最后一个字符串告诉我、传感器成功发送了数据并接收了包含有用数据的响应。
我使用该函数编写了以下程序
UART_CONTROL (UART、UARTCC26XX_CMD_RETURN_PARTIAL_ENABLE、NULL);
在第一个实例中、我注意到当部分返回被激活时、我得到对应于"+OK"的5个字节、在未连接目标传感器的情况下正常。
当部分返回值检测到"+OK"时、它是否会完成读取字符串?
如何继续读取其余有用数据?
"+OK\r\n+RCV=3,5,hello,-13,23.
我可以想到在回调中调用 uart_read 并存储在一个新的缓冲区中。
这种方法是否正确?
提前感谢。
char buffer01[]="AT+SEND=5,4,CMD1\r\n";
static void Task_RF(UArg arg0, UArg arg1){
uartLoRa_Init();
while(1){
if(motionFlag){
switch(status){
case Send_CMD01:{
UART_write(uart,buffer01, strlen(buffer01));
usleep(500000);
Noc.status = RX_CMD01;
break;
}
case RX_CMD01:{
UART_control(uart, UARTCC26XX_CMD_RETURN_PARTIAL_ENABLE, NULL);
UART_read(uart, &data,5);
usleep(100000);
break;
}
}
}
}
static void RXUartCb(UART_Handle handle, void *buf, size_t count){
if(count == 5){
UART_control(uart, UARTCC26XX_CMD_RETURN_PARTIAL_DISABLE, NULL);
UART_read(uart, &data2,21);
}
if(data2[0]== '+' && data2[1]== 'R' &&data2[2]== 'C' &&data2[3]== 'V'){
//Here I will process the useful data
}
else{
//I will return to the initial state Send_CMD01
}
void uart_Init(void){
UART_init();
UART_Params uartParams;
UART_Params_init(&uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readMode = UART_MODE_CALLBACK;
uartParams.writeMode = UART_MODE_CALLBACK;
uartParams.readCallback = RXUartCb;
uartParams.writeCallback = TXUartCb;
uartParams.baudRate = 115200;
uart = UART_open(Board_UART0, &uartParams);
}