本帖最后由 wuliao0o0 于 2023-9-25 18:52 编辑
使用这个nb模块时会一直多收6个字节的数据,即使在我没发数据时也可以接收到,所以在处理时需要对这个进行单独判断。
Hex-asciiHex代码:
[code]void splitByteToASCII(unsigned char byte) {
buffer[length] = byte >> 4; // 取高4位
buffer[length + 1] = byte & 0x0F; // 取低4位
buffer[length] += (buffer[length] > 9) ? 'A' - 10 : '0'; // 将高4位转换为对应的ASCII码
buffer[length + 1] += (buffer[length + 1] > 9) ? 'A' - 10 : '0'; // 将低4位转换为对应的ASCII码
length += 2;
}[/code]
这里的length是一个公共变量用来控制数组元素的位移的(因为我是把数据放到数组里然后通过串口发出去的),可以根据自己需求删/留.
以下是通过at指令配置连接云端代码(官方有具体解释我就贴个代码,有问题可以问我):
[code]Uart2_SendStr("AT+CGATT=1");
delay(1000);
Uart2_SendStr("AT+SKTCREATE=1,1,6\r\n");
delay(500);
Uart2_SendStr("AT+SKTCONNECT=0,\"122.114.122.174\",35648\r\n");
delay(1000);
Uart2_SendStr("AT+ECIPR=115200\r\n");
delay(300);[/code]
发数据的时候可以用sprintf(buffer, "AT+SKTSEND=0,%u,", (unsigned int)(p->len + 24)); 来拼开头,长度为源数据的长度即原本的字节数据 |