我是业余的,有个串口通讯的问题请求大佬解答下 vb.net serialport

邓朝山 2020-01-06 11:27:51
我是业余的,有个串口通讯的问题请求大佬解答下,按照通讯协议,需要发送给仪器的串口命令为:stx+"00541 "+etx+"13"+CR+LF,我将此字符串 我将比字符串含控制符转为16进制ascii码表示 02 30 30 35 34 31 20 20 20 03 31 33 0D 0A在串口助手中使用16进制发送,仪器响应成功, 那么问题来了,如果我以ascii方式怎么表示呢? 我用vb.net写的程序,串口serialport控件中使用write()方法发送字符串是没有响应的,是不是我需要在程序中将比字符串转成16进制的字节数组呢,该如何转呢? 请大佬不吝赐教!
...全文
343 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
邓朝山 2020-01-09
  • 打赏
  • 举报
回复
谢谢热心的网友,已经解决了,是代码端口选择错误了,难怪没报错,也发送不成功
yishumei 2020-01-09
  • 打赏
  • 举报
回复
引用 2 楼 邓朝山 的回复:
或者这么问吧,我通过串口通讯控件serialport,怎么把这14个字符串发给设备(4个控制符,3个空格) stx+"00541 "+etx+"13"+CR+LF, 代码如下,仪器没有响应通过上面串口调试工具,输入上述16进制码可以通讯: dim strSendStr string strSendStr = Chr(2) & “00541 ”&“13” & vbCr & vbLf serialport1.write(strSendStr )'发送字符串
楼主设置serialport的属性了吗? 串口助手的串口设置是9600, 7, E, 1。
xiaoid 2020-01-08
  • 打赏
  • 举报
回复
将整数数、字符串转换为Byte[]的方法:

BitConverter.GetByte(数据或字符串); 这里的字符串默认是Unicode编码。

//用gb2312编码转换为byte[]
System.Text.Encoding.GetEncoding(936).GetBytes("字符内容");
邓朝山 2020-01-08
  • 打赏
  • 举报
回复

serialport1.write(strSendStr ),好像字符串根本就没发出去,因为发完之后我用一个变量接收发送缓存区的字节,发现还是0,程序整个运行完,也没报异常,这是为什么?有大佬知道?
邓朝山 2020-01-08
  • 打赏
  • 举报
回复
或者这么问吧,我通过串口通讯控件serialport,怎么把这14个字符串发给设备(4个控制符,3个空格) stx+"00541 "+etx+"13"+CR+LF,
代码如下,仪器没有响应通过上面串口调试工具,输入上述16进制码可以通讯:
dim strSendStr string
strSendStr = Chr(2) & “00541 ”&“13” & vbCr & vbLf
serialport1.write(strSendStr )'发送字符串

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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