当前位置:首页Arduino > 正文

Arduino串口发送与接收16进制数据(HEX)

作者:野牛程序员:2023-07-27 07:32:28Arduino阅读 6571

在Arduino中,要发送和接收16进制数据(HEX),需要将数字转换为对应的16进制表示,并在串口上进行传输。Arduino提供了Serial对象,可用于与计算机或其他设备进行串口通信。

下面是Arduino代码示例,演示如何发送和接收16进制数据:

  1. 发送16进制数据:

void setup() {
  Serial.begin(9600); // 初始化串口通信,波特率为9600
}

void loop() {
  // 要发送的16进制数据
  int dataToSend = 0xAB; // 这里使用0x前缀表示16进制数

  // 发送数据
  Serial.print("Sending: 0x"); // 可选,打印提示信息
  if (dataToSend < 0x10) {
    Serial.print("0"); // 如果数据小于0x10,补充一个零
  }
  Serial.println(dataToSend, HEX); // 将数据发送为16进制值,以换行符结尾

  delay(1000); // 等待1秒后继续发送下一个数据
}
  1. 接收16进制数据:

void setup() {
  Serial.begin(9600); // 初始化串口通信,波特率为9600
}

void loop() {
  if (Serial.available() > 0) {
    String inputString = Serial.readStringUntil('\\n'); // 读取串口数据,直到遇到换行符
    inputString.trim(); // 去掉字符串前后的空格

    // 检查字符串是否以"0x"开头,如果是,则表示数据为16进制格式
    if (inputString.startsWith("0x")) {
      // 去掉"0x"前缀并将剩余部分解析为16进制值
      int receivedData = strtol(inputString.substring(2).c_str(), NULL, 16);
      
      // 处理接收到的16进制数据
      Serial.print("Received: 0x");
      Serial.println(receivedData, HEX);
    }
  }
}

在发送数据时,使用Serial.print()Serial.println()函数,将数字转换为16进制并通过串口发送。在接收数据时,使用Serial.available()函数检查是否有数据可用,并用Serial.readStringUntil('\\n')读取一行数据。然后,检查是否以"0x"开头,如果是,则将其解析为16进制值,并进行相应的处理。

请注意,在串口通信时,发送和接收双方必须使用相同的数据格式,以正确解释数据。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击