Foxtable(狐表)用户栏目专家坐堂 → 串口接收


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

主题:串口接收

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


加好友 发短信
等级:婴狐 帖子:24 积分:406 威望:0 精华:0 注册:2013/2/22 14:52:00
串口接收  发帖心情 Post By:2015/7/17 14:45:00 [只看该作者]

用串口调试助手给foxtable发数据,用Dim cnt As Integer = Ports("COM2").BytesToRead得到的字节数对,第二次,第三次再接收就不对了,波特率为38400,字节数34,除第一次正确,以后都是8,不知错在那里

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


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

 第一次争取,说肯定没问题。

 

 肯定是你代码哪里写不对。代码写到 DataReceived 事件


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


加好友 发短信
等级:婴狐 帖子:24 积分:406 威望:0 精华:0 注册:2013/2/22 14:52:00
  发帖心情 Post By:2015/7/17 15:25:00 [只看该作者]

代码在 DataReceived 事件事件里,用的是字节接收帮助里的例程

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


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

 那就,不会有问题。

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


加好友 发短信
等级:婴狐 帖子:24 积分:406 威望:0 精华:0 注册:2013/2/22 14:52:00
  发帖心情 Post By:2015/7/17 15:29:00 [只看该作者]

 

我换台机子式式

 

 


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


加好友 发短信
等级:婴狐 帖子:24 积分:406 威望:0 精华:0 注册:2013/2/22 14:52:00
  发帖心情 Post By:2015/7/17 15:55:00 [只看该作者]

换台机子还一样.两端都用串口助手,同样的波特率互发都没问题.


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


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

 测试例子和测试工具都发上来
[此贴子已经被作者于2015/7/17 15:57:23编辑过]

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


加好友 发短信
等级:婴狐 帖子:24 积分:406 威望:0 精华:0 注册:2013/2/22 14:52:00
  发帖心情 Post By:2015/7/18 9:32:00 [只看该作者]

下面是DataReceived事件的代码

 

Dim cnt As Integer = Ports("COM1").BytesToRead

If cnt > 0 Then '缓冲区是否有数据
        Ports("COM1").Read(sj,0,cnt)
End If

Vars("bz") = 1 + Vars("bz")
Vars("len") = cnt

 

这是初始化代码

Ports.Add("COM1")
With Ports("COM1")
    .Close()
    .Parity = Parity.None
    .Handshake = Handshake.None
    .StopBits = StopBits.One
    .BaudRate = 38400
    .DataBits = 8
    .ReadBufferSize() = 4096
    .WriteBufferSize() = 2048
    .Open
End With

 

sj(0 to 127) 在全局BYTE的数组变量

 

我测试了一下,当接收的字节大于8个就出问题了,例如接收22个字节,cnt为6,而不是22,

cnt = 6 好像是 22 - 2*8 得到的 也就是串口接收只能接收小于8个字节的字节流,请问如何解决。


 回到顶部