磁动力电子网-雕刻机DIY论坛,单片机论坛,CNCDIY,DIYCNC

 找回密码
 加入磁动力

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 379|回复: 5

[其它] 紧急求助arduino16进制数转为10进制数的方法

[复制链接]
发表于 2018-1-10 14:19:02 | 显示全部楼层 |阅读模式
今日得一武汉中显的触摸屏,触摸屏串口返回数据格式是十六进制:A5 5A 08 83 00 24 02 00 00 EA 60

其中最后的EA 06,是要用的变量数据,需要转成十进制来使用其中两个连起来 EA60=60000。

现在可以通过string的分别读取出了这个EA和06单个的数,但不会把它连起来成EA60,求指教。另连起来又怎么能把他们变成十进制的数呢?


自己也想用笨办法:E*16∧3 + A*16∧2 + 0+6来计算这个数,可是还是不会取出E,A,0,6这些单个数值的方法,求大家指教。
回复

使用道具 举报

发表于 2018-1-10 15:21:19 | 显示全部楼层
可以用Serial.read()来读每个字节,再把最后读到的E A 6 0 存到4个int变量中再用公式转成数字 或者找一个现成的STR转INT的库
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-10 23:33:04 | 显示全部楼层
明浩 发表于 2018-1-10 15:21
可以用Serial.read()来读每个字节,再把最后读到的E A 6 0 存到4个int变量中再用公式转成数字 或者找一个现 ...

void loop()
{
  while (Serial.available() > 0) //监测串口是否有数据输入
  {
    read_com(); //读串口数据到数组和字符串
    num_data(); //监测数据类型判断事件
  }
}
/***************************读串口中断***************************/
void read_com()
{

  for (int i = 0; i < 7; i++)
  {
    com_data = Serial.read(); //单字节读取数据到数组
    delay(2);
    Serial.println(com_data, HEX);
  }



老大帮忙再看看,我用上面的代码,运行后输入aaaaaabbbbbbcccccc,可是输出出来不正确,只有前面几个(一般是3个)是正确的,后面都是ffffffff

何解?



回复 支持 反对

使用道具 举报

发表于 2018-1-11 10:16:58 | 显示全部楼层
Serial.available>0 应该改成 对应 你的read_com  Serial.available==7
回复 支持 反对

使用道具 举报

发表于 2018-1-11 10:18:04 | 显示全部楼层
因为可能在串口字符进来几个时就已触发了 while (Serial.available() > 0)
回复 支持 反对

使用道具 举报

发表于 2018-1-12 07:42:58 | 显示全部楼层
飘走,这些只是看懂一点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入磁动力

本版积分规则

QQ|小黑屋|手机版|Archiver|www.cdle.net 磁动力电子网 2001-2017 ( 粤ICP备10098153号

粤公网安备 44040402000001号

GMT+8, 2018-9-24 02:49

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.