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


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

主题:串口数据传递问题

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


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

 贴出你字节发送的代码。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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)

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/1 22:05:00 [显示全部帖子]


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/5 14:58:00 [显示全部帖子]

 对你无语。18是长度,11楼的是显示长度。

 

 获取值以后,循环取出。

 

Dim cnt As Integer = Ports("COM1").BytesToRead
If cnt > 0 Then '缓冲区是否有数据
    Dim rval(cnt - 1) As Byte
    Ports("COM1").Read(rval,0,cnt)

    For each r As byte in rval

        msgbox(r)

    Next
End If


 回到顶部