C#向串口写入指令(十六进制字符串)用什么办法?

lixinyu306 2017-11-24 11:34:39
需要通过串口向期间发送指令EFEF 06FF 1780 0190 0B,请问各位大佬用什么办法?我的代码如下:但总是提示不是有效的十六位进制数字是怎么回事?
...全文
478 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xuzuning 2017-11-24
EFEF 06FF... 按空格切分后是 EFEF、 06FF、... 大部分都是两个字节,而 byte 是一个字节 你 byte.Parse("EFEF", System.Globalization.NumberStyles.HexNumber) 显然超出了 byte 可容纳的范围 因此出现异常:System.OverflowException: 值对于无符号的字节太大或太小。 你却不加区别的一律:不是有效的十六位进制数字 这能怪谁呢?
  • 打赏
  • 举报
回复
xuzuning 2017-11-24
你自己看看 msg 的内容是什么
  • 打赏
  • 举报
回复
exception92 2017-11-24
为什么还要再parse一下了
  • 打赏
  • 举报
回复
易2017 2017-11-24
原谅我笑了 能告诉我这个“不是有效的十六进制怎么得到的?”
引用 楼主 lixinyu306 的回复:
需要通过串口向期间发送指令EFEF 06FF 1780 0190 0B,请问各位大佬用什么办法?我的代码如下:但总是提示不是有效的十六位进制数字是怎么回事?
  • 打赏
  • 举报
回复
_jiasong 2017-11-24
EF EF 06 FF 17 80 01 90 0B 一个byte可以存储 一个EF这样的十六进制数 list<byte> add只能每次添加一个byte ,建议直接用byte[] 然后将string转换成byte[](网上都有代码,百度就行),还有sting指令中间最好一个十六进制一个空格。
  • 打赏
  • 举报
回复
易2017 2017-11-24
引用 4 楼 xuzuning 的回复:
EFEF 06FF... 按空格切分后是 EFEF、 06FF、... 大部分都是两个字节,而 byte 是一个字节 你 byte.Parse("EFEF", System.Globalization.NumberStyles.HexNumber) 显然超出了 byte 可容纳的范围 因此出现异常:System.OverflowException: 值对于无符号的字节太大或太小。 你却不加区别的一律:不是有效的十六位进制数字 这能怪谁呢?
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-11-24 11:34
社区公告

让您成为最强悍的C#开发者