软串口如何以十六进制发送和接收命令-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: ken0137

[已解决] 软串口如何以十六进制发送和接收命令

[复制链接]
 楼主| 发表于 2015-1-16 10:54 | 显示全部楼层
本帖最后由 ken0137 于 2015-1-16 11:12 编辑
tsaiwn 发表于 2015-1-16 10:19
(1)你看到用 Serial.println( )的亂碼是正常的,
   因為comdata 裡面有些不是字符, 例如 AA 55 就是 誙
( ...


这里说明一下,返回值AA 55 04 F6 C9 01 01 C4
其中AA 55 04 F6 是固定的
C9 01 是测试值,高低位对换为01C9,等于457,就是4.57mA
01 C4是校验值,01C4=04+F6+C9+01
发表于 2015-1-16 21:13 | 显示全部楼层
ken0137 发表于 2015-1-16 10:50
非常感谢tsaiwn的热心回答,
假如我使用电流表头+USB转TTL串口 PL2303HX模块,这样的方式连接电脑,发送和 ...

Sorry 我的代碼漏掉一列
麻煩在  int a = g& 0xf0;  // 左邊 4 bits
的下方加入以下:
   a = a >> 4;
然後再測試看看

就是myPtHex( ) 應該如下:
void myPtHex(int g){ // 把 g 最右邊 byte 印成 Hex 倆位
  int a = g& 0xf0;  // 左邊 4 bits
  a = a >> 4;  // 右移 4 bits
  int b = g& 0x0f;  // 右邊 4 bits
  char c = a < 10 ? a + '0' : a + 'A' - 10;
  Serial.write(c);
  c = b < 10 ? b + '0' : b + 'A' - 10;
  Serial.write(c);
} // myPtHex(
 楼主| 发表于 2015-1-20 18:07 | 显示全部楼层
tsaiwn 发表于 2015-1-16 21:13
Sorry 我的代碼漏掉一列
麻煩在  int a = g& 0xf0;  // 左邊 4 bits
的下方加入以下:

谢谢tsaiwn 的指导
发表于 2015-4-19 19:27 | 显示全部楼层
奈何col 发表于 2015-1-15 12:02
先搞清楚什么是16进制。
进制只是一种数据的表示形式,不是数据类型;
确定你要发送的是字符串,还是其他什 ...

你好,想通过arduino控制舵机控制板,Serial.print("#1P1500T100\r\n"),后面的\r\n,是被当成字符串还是回车换行输入到串口的呢?
发表于 2015-4-20 00:12 | 显示全部楼层
狙击手ggg 发表于 2015-4-19 19:27
你好,想通过arduino控制舵机控制板,Serial.print("#1P1500T100\r\n"),后面的\r\n,是被当成字符串还是 ...

Serial.print("\r\n");
相當於:
   Serial.write(13);   // '\r'
   Serial.write(10);   // '\n'
如果 Serial.println("ABC");  則相當於
   Serial.write('A');   //  'A' 就是 65
   Serial.write(66);   // 66 就是 'B'
   Serial.write( 2 + 'A');   // 就是 'C', 因為 'C' 就是 67
   Serial.write(13);   // '\r'  因為用 println 就是會自動補 "\r\n"
   Serial.write(10);   // '\n'
发表于 2015-9-22 17:22 | 显示全部楼层
tsaiwn 发表于 2015-1-16 10:19
(1)你看到用 Serial.println( )的亂碼是正常的,
   因為comdata 裡面有些不是字符, 例如 AA 55 就是 誙
( ...

我想将myPthex取出来的char c,进行运算,代码应该怎么编写啊
发表于 2016-12-7 00:19 | 显示全部楼层
每次发送0x00时,编译过程都会提示call of overloaded 'write(int)' is ambiguous
怎么办?
还有接受的部分感觉写的不太清楚。。。可能因为我是小白啦。
发表于 2017-10-30 15:23 | 显示全部楼层
又聂 发表于 2016-12-7 00:19
**** 作者被禁止或删除 内容自动屏蔽 ****

怎么解决的
发表于 2017-10-31 22:36 | 显示全部楼层
ken0137 发表于 2015-1-16 10:50
非常感谢tsaiwn的热心回答,
假如我使用电流表头+USB转TTL串口 PL2303HX模块,这样的方式连接电脑,发送和 ...

界面左上角的波特率115200,右边的波特率9600. 显示肯定不对啊,波特率要相同。
发表于 2019-11-9 17:51 | 显示全部楼层
没看懂啊,一开始定义的时候String comdata = "";     是String
后面的函数是void myPtHex(int g)    指定g是int

居然可以  myPtHex(comdata);   ?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:44 , Processed in 0.130717 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表