以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 通信协议请教 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79348) |
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:ljh29206 -- 发布时间:2015/12/29 14:46:00 -- 通信协议请教 采用RS485 MODBUS RTU标准通讯 ,说明如下 2、数字量输入信号采集命令:
发送:01 02 00 00 00 08 79 CC (例/16进制)
接收:01 02 01 C2 20 19(例/16进制)
读取的数据“C2”,转换成2进制数为“11000010”,从左至右分别对应8路数字量输入信号DI_08-DI_01的状态,即DI_08、DI_07、DI_02有输入,其它通道无输入 项目打开后写入 Ports.Add("COM15")
窗体 计时器写入 Ports("COM15").Write("01 02 00 00 00 08 79 CC ") Dim s1 As String = Ports("COM15").ReadExisting() Dim s2 As String s2 = s1.Replace("g","").Trim() e.Form.Controls("TextBox1").text = s2 e.Form.Controls("Label1").text = s2 不能读出数值,求指点 |
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:大红袍 -- 发布时间:2015/12/29 15:24:00 -- Dim Val() As Byte = New Byte(){&H01,&H02,&H00,&H00,&H00,&H08,&H79,&HCC} Ports("COM15").Write(Val, 0, Val.Length) |
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:ljh29206 -- 发布时间:2015/12/29 15:33:00 -- 袍哥 此主题相关图片如下:无标题.png 请看 读数 出现报错 这个是不是不能正常读取? |
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:大红袍 -- 发布时间:2015/12/29 15:48:00 -- Com15是不是正确的端口啊?哪有这么大的。确定你连接的哪一个,然后add哪一个
Ports.Add("COM3")
-----------------
Dim Val() As Byte = New Byte(){&H01,&H02,&H00,&H00,&H00,&H08,&H79,&HCC} |
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:ljh29206 -- 发布时间:2015/12/29 15:53:00 -- 确定没错的, 只有1个COM口 可以读了 读出来的数据是 “ ”`H “ [此贴子已经被作者于2015/12/29 15:59:27编辑过]
|
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:大红袍 -- 发布时间:2015/12/29 15:55:00 -- 确认一下你的端口号
http://www.foxtable.com/help/topics/2419.htm
|
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:ljh29206 -- 发布时间:2015/12/29 15:58:00 -- 老师请看上贴 ,可以读了, 但读出来的乱码! |
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:大红袍 -- 发布时间:2015/12/29 16:11:00 -- 读字节这样处理
Dim cnt As Integer = Ports("COM1").BytesToRead |
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:ljh29206 -- 发布时间:2015/12/29 17:07:00 -- OK了 多谢袍哥指点 最后问下 1:MessageBox.Show(Ports("COM15").ReadExisting()) 读出来 乱码 2: Dim cnt As Integer = Ports("COM15").BytesToRead If cnt > 0 Then \'缓冲区是否有数据 Dim rval(cnt - 1) As Byte Ports("COM15").Read(rval,0,cnt) Dim str As String = BitConverter.ToString(rval).Replace("-", " ") msgbox(str) End If 以上就正确 为什么 要用2的方式读书呢 ,为什么 1的方式 读不出数据来?
|
||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:大红袍 -- 发布时间:2015/12/29 17:10:00 -- 1、你可以设置一下字符,用ReadExisting应该也可以
http://www.foxtable.com/help/topics/1980.htm
2、否则,直接用字节收发
http://www.foxtable.com/help/topics/1979.htm
|