以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 串口数据传递问题 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=70937) |
-- 作者:jxc55 -- 发布时间:2015/7/1 19:26:00 -- 串口数据传递问题 串口数据传递,我在普通的串口调试工具上可以准确发送及接收数据(HEX)。 但是在FOXTABLE上,依据pdf帮助设置无效。 首先配置串口属性(波特率,校验。。。),设置后OPEN串口,串口打开正常。 第2 步,如何把HEX数据帧发送过去,以字符串还是字节?字节发送报错“编译错误,未声明名称E9”。 第3步,如果以字符串方式发送后,收不到反馈数据 请求专家能指导下,谢谢
[此贴子已经被作者于2015/7/1 19:27:16编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/7/1 19:27:00 -- 贴出你字节发送的代码。 |
-- 作者:jxc55 -- 发布时间:2015/7/1 20:27:00 -- Dim Val() As Byte = New Byte() {68,00,21,13,00,80,13,68,01,02,44,E9,C7,16} Ports("COM1").Write(Val, 0, Val.Length) s = Ports("COM1").ReadExisting()
|
-- 作者:大红袍 -- 发布时间:2015/7/1 20:31:00 -- Dim Val() As Byte = New Byte() {&H68,&H00,&H21,&H13,&H00,&H80,&H13,&H68,&H01,&H02,&H44,&HE9,&HC7,&H16} Ports("COM1").Write(Val, 0, Val.Length) |
-- 作者:jxc55 -- 发布时间:2015/7/1 20:57:00 -- Dim Val() As Byte = New Byte(){&H68,&H00,&H21,&H13,&H00,&H80,&H13,&H68,&H01,&H02,&H44,&HE9,&HC7,&H16} Ports("COM1").Write(Val, 0, Val.Length) Dim cnt As Integer = Ports("COM1").BytesToRead If cnt > 0 Then \'缓冲区是否有数据 Dim Val(cnt - 1) As Byte Ports("COM1").Read(val,0,cnt) End If 用版主的语句,不报错,但在foxtable命令窗口中,没有返回数据 加了下面的语句又报错。 有没有办法,求指导
|
-- 作者:大红袍 -- 发布时间:2015/7/1 20:59:00 -- write之后不一定马上就能得到数据啊
接收字节 将DataReceived事件代码设置为:
Dim cnt As
Integer = e.Port.BytesToRead |
-- 作者:大红袍 -- 发布时间:2015/7/1 21:01:00 -- Dim Val() As Byte = New Byte(){&H68,&H00,&H21,&H13,&H00,&H80,&H13,&H68,&H01,&H02,&H44,&HE9,&HC7,&H16}
\'-----------------------------------------------------------
|
-- 作者:jxc55 -- 发布时间:2015/7/1 21:10:00 -- Ports.Add("COM1") With Ports("COM1") .Close() .Parity = Parity.Even .Handshake = Handshake.None .Encoding = Encoding.Default .StopBits = StopBits.One .BaudRate = 1200 .DataBits = 8 .ReadBufferSize() = 4096 .WriteBufferSize() = 2048 .Open End With Dim Val() As Byte = New Byte(){&H68,&H00,&H21,&H13,&H00,&H80,&H13,&H68,&H01,&H02,&H44,&HE9,&HC7,&H16} Ports("COM1").Write(Val, 0, Val.Length) Dim cnt As Integer = e.Port.BytesToRead If cnt > 0 Then \'缓冲区是否有数据 Dim Val(cnt - 1) As Byte e.Port.Read(val,0,cnt) End If 在命令窗口显示:编译错误,e是private。因此它在此上下文中不可访问。错误代码:Dim cnt As Integer = e.Port.BytesToRead
|
-- 作者:大红袍 -- 发布时间:2015/7/1 21:12:00 -- Ports.Add("COM1")
|
-- 作者:jxc55 -- 发布时间:2015/7/1 22:03:00 -- 通过etheral抓包可以抓到正确的回应报文了,命令窗口没有收到回应数据。估计回应的: Dim cnt As Integer = Ports("COM1").BytesToRead If cnt > 0 Then \'缓冲区是否有数据 Dim rval(cnt - 1) As Byte Ports("COM1").Read(rval,0,cnt) End If 还是有问题。 |