Foxtable(狐表)用户栏目专家坐堂 → 串口数据传递问题


  共有3187人关注过本帖树形打印复制链接

主题:串口数据传递问题

帅哥哟,离线,有人找我吗?
jxc55
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:113 威望:0 精华:0 注册:2015/2/20 14:54:00
串口数据传递问题  发帖心情 Post By:2015/7/1 19:26:00 [只看该作者]

串口数据传递,我在普通的串口调试工具上可以准确发送及接收数据(HEX)。
但是在FOXTABLE上,依据pdf帮助设置无效。
首先配置串口属性(波特率,校验。。。),设置后OPEN串口,串口打开正常。
第2 步,如何把HEX数据帧发送过去,以字符串还是字节?字节发送报错“编译错误,未声明名称E9”。
第3步,如果以字符串方式发送后,收不到反馈数据


请求专家能指导下,谢谢
[此贴子已经被作者于2015/7/1 19:27:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/1 19:27:00 [只看该作者]

 贴出你字节发送的代码。

 回到顶部
帅哥哟,离线,有人找我吗?
jxc55
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:113 威望:0 精华:0 注册:2015/2/20 14:54:00
  发帖心情 Post By: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()

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:113 威望:0 精华:0 注册:2015/2/20 14:54:00
  发帖心情 Post By: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命令窗口中,没有返回数据
加了下面的语句又报错。
有没有办法,求指导

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/1 20:59:00 [只看该作者]

 write之后不一定马上就能得到数据啊

 

接收字节

将DataReceived事件代码设置为:

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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}
Ports("COM1").Write(Val, 0, Val.Length)

 

'-----------------------------------------------------------


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


 回到顶部
帅哥哟,离线,有人找我吗?
jxc55
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:113 威望:0 精华:0 注册:2015/2/20 14:54:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/1 21:12: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 = Ports("COM1").BytesToRead
If cnt > 0 Then '缓冲区是否有数据
    Dim rval(cnt - 1) As Byte
    Ports("COM1").Read(rval,0,cnt)
End If


 回到顶部
帅哥哟,离线,有人找我吗?
jxc55
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:6 积分:113 威望:0 精华:0 注册:2015/2/20 14:54:00
  发帖心情 Post By: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
还是有问题。


 回到顶部
总数 13 1 2 下一页