Arduino串口通讯十六进制少前导零问题
本帖最后由 LK 于 2022-6-11 11:45 编辑大家好,我在淘宝买了一个电量模块。可以通过串口命令帧调试获取参数。如图:
在我使用串口调试的时候,可以正常返回数据。
虽然我在使用arduino串口获取数据的时候也返回了数据,代码如下:
#include <SoftwareSerial.h>
char item = {0x55, 0x55, 0x01, 0x01, 0x00, 0x00, 0xAC};//16进制命令
unsigned long buf;//接收到的16进制字符串
String data = "";
String data_to_hex = "";
SoftwareSerial RS485(3, 2); //RX, TX
void setup() {
// put your setup code here, to run once:
RS485.begin(9600);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
data = "";
RS485.write(item, 7);
while(RS485.available()>0){
int i = 0;
buf = (unsigned char)RS485.read();
Serial.print(buf);
Serial.print(",");
data += String(buf, HEX);
data += ",";
i++;
}
Serial.println("");
Serial.println(data);
}
但是有一个不完美的地方:把返回的数据转化成十六进制之后,格式并没有按照预期的显示:
我疑惑的点是:为什么转化后的十六进制不像普通的显示一样是两位的比如第一行中十进制:85,85,1,1,0,12,0,3,170,176,0,0,0,0,0,0,0,0,21,
转化成十六进制后应该为:55,55,01,01,00,0c,00,03,aa,b0,00,00,00,00,00,00,00,00,15,而不是像串口显示的一样是55,55,1,1,0,c,0,3,aa,b0,0,0,0,0,0,0,0,0,15,,每个字节只有一个数字。如果少了一个0,会导致我最终算出来的电压等参数会有偏差,所以这个零不能少
求解,万分感激~~~
16进制少个0 对最后的数字有什么影响? 不太理解。 00 就是对应10进制的0啊,
页:
[1]