LabVIEWwilliam hill官网
直播中

h1654156016.0300

4年用户 80经验值
擅长:测量仪表
私信 关注
[问答]

串口字符串如何实现十六进制发送命令(字符串输入控件右键选择十六进制显示可以,我需要在程序框图里实现)

我需要用串口发送一串数字给单片机,作为产品的SN,发送时命令必须是以十六进制发送才有效。我现在想请问我扫描的时候字符串控件选择正常显示,然后在程序框图怎么去实现变成同样的十六进制显示,比如我扫描枪扫二维码识别字符串为BC2109000023, 我怎么转换成同样的数字,但是要十六进制格式用串口发送?

正常显示.png

  • 右键十六进制显示2.png
  • 右键十六进制显示.png
已退回10积分

回帖(6)

zhangdong1997

2021-10-11 11:41:42
看你的输入代码,格式应该都是固定的,先把字母和数字拆分开,然后对数字进行16进制转换,最后把两个字符串合并就好了,代码如图
1 举报
  • mmexport1633923659118.png

恂恂zzz

2021-10-11 11:45:33
之前做的一个串口收发有用到这类功能。这种转换方法我也是网上搜的,如果你看不懂我发的你可以再尝试搜搜。
我来讲解一下,可能不太对
1.首先是接收模块
左边是接收到的十六进制显示类型的字符串 比如01020304 会显示成0102 0304 这样,我们需要把0102 0304 这样十六进制显示的字符串转换成01020304,所以要先用 字符串至字节数组 这个函数进入for循环  进循环的接线点用索引。然后用数值至十六进制字符串转换,因为字符串数量可能是1个或者2个,所以这里要弄一个条件选择,再用移位寄存器和连接字符串组合起来 就得到了正常显示的十六进制字符串。

2.然后是发送模块
左边那部分可以无视,从“正常显示数组”开始,数组也可以是单个字符串,这样的话就不需要外部那个for循环了,只需要里面那个for循环就行。
假如我们有一个要发送的字符串是01020304050607080900(正常显示),进入里面那个for循环时会2个数字2个数字一组进行转换,最后也是用移位寄存器连接。如果只是单个字符串发送的话里面这个条件判断框是不需要的,直接一条线连过去就行。

举报
  • 十六进制接收.PNG
  • 发送.PNG
  • 发送2.PNG

jf_94335316

2021-10-11 19:31:46
小白写的,根据场景不同可能会有bug。
举报
  • 1633951621(1).png

更多回帖

发帖
×
20
完善资料,
赚取积分