以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  rs485通讯  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=169164)

--  作者:shyilin
--  发布时间:2021/6/4 17:09:00
--  rs485通讯
 Ports.Add("COM5")
With Ports("COM5")
    .Close()
    .Parity = Parity.Odd \'奇效验
    .StopBits = StopBits.One \'停止位  1
    .Encoding=Encoding.ASCII
    .BaudRate = 9600
    .DataBits = 8
    .ReadBufferSize() = 4096
    .WriteBufferSize() = 2048
    .Open
End With
Dim Val() As Byte = New Byte(){&H17,&H03,&H00,&H0A,&H00,&H25,&HA6,&HE5}
Ports("COM5").Write(val,0,val.length)
老是报写入超时   老师帮我看看呢
图片点击可在新窗口打开查看此主题相关图片如下:1622797655(1).jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/6/4 17:21:00
--  
打开端口后单独测试下面代码有没有问题

If Ports("COM5").Open then
Dim Val() As Byte = New Byte(){&H17,&H03,&H00,&H0A,&H00,&H25,&HA6,&HE5}
Ports("COM5").Write(val,0,val.length)
endif

发送其它内容试试有没有问题,比如只有一个字节

--  作者:shyilin
--  发布时间:2021/6/4 17:24:00
--  
 ---------------------------
错误
---------------------------
编译错误:表达式不产生值。



错误代码:If Ports("COM5").Open Then
---------------------------
确定   
---------------------------


--  作者:有点蓝
--  发布时间:2021/6/4 17:26:00
--  
If Ports("COM5").IsOpen Then
--  作者:shyilin
--  发布时间:2021/6/4 17:28:00
--  
 ---------------------------
版本:2020.5.1.8
---------------------------
代码执行出错,错误信息:



System.TimeoutException: 写入超时。

   在 System.IO.Ports.SerialStream.Write(Byte[] array, Int32 offset, Int32 count, Int32 timeout)

   在 System.IO.Ports.SerialPort.Write(Byte[] buffer, Int32 offset, Int32 count)

   在 UserCode.Test()
---------------------------
确定   
---------------------------


--  作者:有点蓝
--  发布时间:2021/6/4 17:31:00
--  
写一个字节呢?硬件是不是没有连接好,端口是不是被占用了。硬件是不是要发送固定规则的内容才接收?
[此贴子已经被作者于2021/6/4 17:31:55编辑过]

--  作者:shyilin
--  发布时间:2021/6/4 17:33:00
--  
写一个字节也是这样的
--  作者:shyilin
--  发布时间:2021/6/4 17:33:00
--  
 端口没被占用呢
--  作者:有点蓝
--  发布时间:2021/6/4 17:35:00
--  
使用其它串口软件能不能连接?
--  作者:shyilin
--  发布时间:2021/6/4 17:39:00
--  
 用原厂的软件就可以正常读取数据