我正在编写一个小型软件,用RN2483收发器发送数据,我已经意识到当我通过串口发送数据时,我的数据被转换为ASCII。也就是说,我在发件人中有以下部分,数据必须是HEX
String aux = String(message.charAt(i),HEX);
dataToBeTx = "radio tx " + aux+ "\r\n";
Serial1.print(dataToBeTx)
在接收器上我正在读取Serial1,直到我收到正确接收的消息,但它是HEX数据的ASCII表示,我想要它的HEX,我的意思是,我发送转换后的HI接收器上的HEX(HI => 0x48 0x49)如果我再次将该值转换为HEX,我得到的东西比我的H或I不同,所以我猜它是用ASCII编码的,我怎么能从那里开始呢? / p>
提前致谢,
问候
答案 0 :(得分:1)
目前还不清楚你想要实现的目标。代码中的第一行将单个字符转换为十六进制的字符串。例如:
void setup ()
{
Serial.begin (115200);
Serial.println ();
String aux = String('A', HEX);
Serial.print ("aux = ");
Serial.println (aux);
} // end of setup
void loop ()
{
} // end of loop
输出:
aux = 41
所以我的代码中的'A'(内部表示为0x41)现在变成了两个ASCII字符:4
和1
。也就是说,一个两个字节长的字符串。
所以,从某种意义上说,你可以说它已经是十六进制了。
如果我再次将该值转换为HEX,我会得到与H或I不同的东西
嗯,是的,如果你再次翻译它,那么你会得到0x34和0x31。
在这种情况下,您想发送A
,41
还是其他?