Arduino串口通讯十六进制少前导零问题
2022-06-117793
AI 快速预览详细
本文探讨了在使用Arduino进行串口通讯时遇到的一个常见问题:返回的十六进制数据缺少前导零。文章提供了具体的代码示例和解决方案,帮助用户解决这一问题。通过修改代码中的`String(buf[i], HEX)`为`String(buf[i], HEX, 2)`,可以确保每个字节都显示为两位十六进制数,从而避免数据偏差。
|
大家好,我在淘宝买了一个电量模块。可以通过串口命令帧调试获取参数。如图: ![]() 在我使用串口调试的时候,可以正常返回数据。 虽然我在使用Arduino串口获取数据的时候也返回了数据,代码如下: 但是有一个不完美的地方:把返回的数据转化成十六进制之后,格式并没有按照预期的显示: ![]() 我疑惑的点是:为什么转化后的十六进制不像普通的显示一样是两位的比如第一行中十进制: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,会导致我最终算出来的电压等参数会有偏差,所以这个零不能少 求解,万分感激~~~ |





