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

lixinyu306 2017-11-24 11:34:39
需要通过串口向期间发送指令EFEF 06FF 1780 0190 0B,请问各位大佬用什么办法?我的代码如下:但总是提示不是有效的十六位进制数字是怎么回事?
...全文
787 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-11-24
  • 打赏
  • 举报
回复
EFEF 06FF... 按空格切分后是 EFEF、 06FF、... 大部分都是两个字节,而 byte 是一个字节 你 byte.Parse("EFEF", System.Globalization.NumberStyles.HexNumber) 显然超出了 byte 可容纳的范围 因此出现异常:System.OverflowException: 值对于无符号的字节太大或太小。 你却不加区别的一律:不是有效的十六位进制数字 这能怪谁呢?
xuzuning 2017-11-24
  • 打赏
  • 举报
回复
你自己看看 msg 的内容是什么
  • 打赏
  • 举报
回复
为什么还要再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: 值对于无符号的字节太大或太小。 你却不加区别的一律:不是有效的十六位进制数字 这能怪谁呢?

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧