请问怎么在arduino上实现串口助手中hex发送和hex接收显示功能-Arduino中文社区 - Powered by Discuz!
查看: 372|回复: 3

请问怎么在arduino上实现串口助手中hex发送和hex接收显示功能

[复制链接]

签到天数: 2 天

[LV.1]初来乍到

发表于 2021-8-4 16:52 | 显示全部楼层 |阅读模式
如第一个图,黄色框中是我要发送的信息,绿色框中是想要接收到的信息,需要用到红色框中的hex发送和hex显示功能
这是我现在的代码,无法实现想要的效果
  1. #include <SoftwareSerial.h>

  2. byte item[8] = {02,03,00,00,00,10,44,35};  //16进制测温命令
  3. String data = "";  //接收到的16进制字符串
  4. SoftwareSerial RS485(0, 1);   //RX, TX

  5. void setup()
  6. {
  7.   RS485.begin(9600);
  8.   Serial.begin(9600);
  9. }

  10. void loop()
  11. {
  12.   delay(1000);   //放慢输出频率
  13.   for (int i = 0 ; i < 8; i++)   //发送测温命令
  14.   {
  15.     RS485.write(item[i]);    //write输出
  16.   }
  17.   delay(1000);  // 等待测温数据返回
  18.   data = "";
  19.   while (RS485.available()) //从串口中读取数据
  20.   {
  21.     unsigned char in = (unsigned char)RS485.read();   //read读取
  22.     Serial.print(in,HEX);
  23.     Serial.print(',');
  24.     data += in;
  25.     data += ',';
  26.   }

  27.   if (data.length() > 0) //输出接收到的数据
  28.   {
  29.     Serial.println();
  30.     Serial.println(data);
  31.   }
  32. }
复制代码
现有代码在串口监视器中没有任何返回值,如果手动发送指令,则返回第二张图中第一行的值
求大佬指点,谢谢
InkedInked屏幕截图 2021-08-04 162558_LI.jpg
比特截图2021-08-04-16-47-45.png

签到天数: 68 天

[LV.6]常住居民II

发表于 2021-8-4 22:43 | 显示全部楼层
你自己写的有问题

签到天数: 222 天

[LV.7]常住居民III

发表于 2021-8-4 22:51 | 显示全部楼层

签到天数: 2 天

[LV.1]初来乍到

 楼主| 发表于 2021-8-7 10:15 | 显示全部楼层
已解决,贴出代码供需要的朋友参考
  1. #include <SoftwareSerial.h>

  2. unsigned char item[8] = {0x02, 0x03, 0x00, 0x00, 0x00, 0x10, 0x44, 0x35};  //16进制命令
  3. String data = "";  //接收到的16进制字符串
  4. SoftwareSerial RS485(3, 2);  // RX, TX

  5. void setup()
  6. {
  7.   RS485.begin(9600);
  8.   Serial.begin(115200);
  9. }

  10. void loop()
  11. {
  12.   delay(1000);   //放慢输出频率  
  13.   for (int i = 0 ; i < 8; i++)
  14.   {  // 发送命令
  15.     RS485.write(item[i]);   // write输出
  16.   }
  17.   delay(1000);  // 等待测温数据返回
  18.   data = "";

  19.   while (RS485.available()) //从串口中读取数据
  20.   {
  21.     unsigned char in = (unsigned char)RS485.read();   //read读取
  22.     Serial.print(in,HEX);
  23.     Serial.print(',');
  24.     data += in;
  25.     data += ',';

  26.   }


  27.   
  28.   if (data.length() > 0) //输出接收到的数据
  29.   {
  30.     Serial.println();
  31.     Serial.println(data);
  32.   }
  33. }
复制代码


主要就两点,一个是传感器不要接0,1接口,一个是arduino的串口波特率不要和传感器的一样
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

继电器断开瞬间esp32重启或者网络断开
继电器断开瞬间esp32重启
主要模块: 芯片ESP32-WROOM-32D 供电用的220V转5V模块,700mA 网络LAN8720A模块 继电
【Arduino】168种传感器系列实验(171)---HLK-V20离线语音模块
【Arduino】168种传感器系
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
【Arduino】168种传感器系列实验(181)---1.3寸OLED液晶屏模块
【Arduino】168种传感器系
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
大佬们,帮帮忙
大佬们,帮帮忙
为什么我写的子程序,单独使用运行没问题,两个程序合起来就只会运行一个程序
OLED 128*64自制可达10000000个选项的菜单(已更新)
OLED 128*64自制可达10000
OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表