TC官方合作论坛

 找回密码
 立即注册
查看: 3392|回复: 16

[问题] 串口通讯插件怎么发送16进制

[复制链接]
发表于 2021-9-7 00:23:04 | 显示全部楼层 |阅读模式
之前在论坛查到有大佬发的串口通讯插件,学习过程中发现写数据的功能,无法传送16进制的字符.又没用用过的大佬给指点下怎么写.谢谢!!
int WriteData(string pData)

写数据

例:
sp.WriteData("test")


如果我要发送的是16进制的"01 01"命令里面"test"中的test该怎么填写.



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

发表于 2021-9-7 05:11:28 | 显示全部楼层
本帖最后由 bestkakkoii 于 2021-9-7 05:15 编辑

改用十进制按字节照顺序写入内存

比如 test 转 16进制为 74 65 73 74

转10进制(4byte)按顺序写入 116 101 115 116

比如你从第一个地址 #78A0F0 开始写  按顺序 > #78A0F0 #78A0F1 #78A0F2 #78A0F3写入
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-7 10:02:46 来自手机 | 显示全部楼层
我也说一句感谢大佬。多问一句,我是给单片机发送的数据,单片机需要接受到16进制的0x01才会启动,这样的话,我test要改成什么?先将0x01转成10进制与test替换吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-7 10:51:26 | 显示全部楼层
bestkakkoii 发表于 2021-9-7 05:11
改用十进制按字节照顺序写入内存

比如 test 转 16进制为 74 65 73 74

感谢大佬。多问一句,我是给单片机发送的数据,单片机需要接受到16进制的0x01才会启动,这样的话,我test要改成什么?先将0x01转成10进制与test替换吗?这样应该是不行吧
回复 支持 反对

使用道具 举报

发表于 2021-9-7 11:02:26 | 显示全部楼层
本帖最后由 bestkakkoii 于 2021-9-7 11:07 编辑
slc18590 发表于 2021-9-7 10:51
感谢大佬。多问一句,我是给单片机发送的数据,单片机需要接受到16进制的0x01才会启动,这样的话,我test ...

你只要把头一个数据地址指针传递给单片机让他直接去读那个地址的数据就好了
跟你WriteData用同一个地址比如你原本WriteData(hwnd, #123456, "74 65 73 74")

你只是把它拆解成
var len = strsplit("74 65 73 74", " ", buffer)
for (var i = 0; i < len; i++)
    WriteInt(hwnd, #123456 + i * #1, cint(buffer))
end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-7 11:33:57 | 显示全部楼层
bestkakkoii 发表于 2021-9-7 11:02
你只要把头一个数据地址指针传递给单片机让他直接去读那个地址的数据就好了
跟你WriteData用同一个地址比 ...

大佬,没明白你的意思,这个插件是论坛内别人发的用于串口通讯的插件,我是直接调用的,给的接口说明是,

int WriteData(string pData)

写数据

例:
sp.WriteData("test")

这种情况下给COM3串口发一个0x01的指令的话,sp.WriteData()这个指令的参数应该怎么填写.
回复 支持 反对

使用道具 举报

发表于 2021-9-7 12:01:52 | 显示全部楼层
本帖最后由 bestkakkoii 于 2021-9-7 12:04 编辑
slc18590 发表于 2021-9-7 11:33
大佬,没明白你的意思,这个插件是论坛内别人发的用于串口通讯的插件,我是直接调用的,给的接口说明是,

int ...

按照他上面的例子不是就 >> sp.WriteData("test")这样嘛?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-7 13:03:17 | 显示全部楼层
bestkakkoii 发表于 2021-9-7 12:01
按照他上面的例子不是就 >> sp.WriteData("test")这样嘛?

例:
sp.WriteData("test")

例子给的参数是发送test,应该是个字符串,我想发送的是0X01,不知道()内应该怎么填写,如果填"01""0X01"  都不行,我单片机那边要接收的数据是0X01.
回复 支持 反对

使用道具 举报

发表于 2021-9-7 13:27:57 | 显示全部楼层
本帖最后由 bestkakkoii 于 2021-9-7 13:31 编辑
slc18590 发表于 2021-9-7 13:03
例:
sp.WriteData("test")

01   ----16进制转回字符串
01 转字符串是 ""
或是你直接不加 "" 改  #01 之类的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-7 13:46:18 | 显示全部楼层
bestkakkoii 发表于 2021-9-7 13:27
01   ----16进制转回字符串
01 转字符串是 " ...

可以了,大佬."" 就是发01,但是如果是 01 32 01 32 这种呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-3-29 09:43 , Processed in 0.046155 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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