Foxtable(狐表)用户栏目专家坐堂 → [求助]串口读取数据问题


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

主题:[求助]串口读取数据问题

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


加好友 发短信
等级:三尾狐 帖子:635 积分:3639 威望:0 精华:0 注册:2011/5/21 18:05:00
[求助]串口读取数据问题  发帖心情 Post By:2017/11/1 15:17:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ac200.foxdb


图片点击可在新窗口打开查看此主题相关图片如下:01.png
图片点击可在新窗口打开查看

这是通讯协议,我现在遇到两个问题,请指导
一.

图片点击可在新窗口打开查看此主题相关图片如下:tim截图20171101150941.png
图片点击可在新窗口打开查看
这里点击确定按钮出错.
二.建立通讯以后,我从控制器里面用ReadExisting命令读取的值都有问题,用Read(buffer, offset, count)命令读取出来的值也不对,请帮帮忙,谢谢!
 

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


加好友 发短信
等级:三尾狐 帖子:635 积分:3639 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By:2017/11/1 16:13:00 [只看该作者]

各位大神都这么忙啊

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/1 16:21:00 [只看该作者]

不能直接用 parity.none 这些值,要对应改成 0、1、2、3 这样

 

0-None
1-Odd
2-Even
3-Mark
4-Space

 

--------------------StopBits 也是

 

0-None
1-One
2-Two
3-OnePointFive

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/1 16:24:00 [只看该作者]

 你在DataReceived事件,把接收到的信息都打印出来,看是否正确

 

Dim cnt As Integer = e.Port.BytesToRead
If cnt > 0 Then '缓冲区是否有数据
    Dim Val(cnt - 1) As Byte
    e.Port.Read(val,0,cnt)
    For Each s As object In val
        output.show(s & " " & DecToHex(s))
    Next
End If


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


加好友 发短信
等级:三尾狐 帖子:635 积分:3639 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By:2017/11/1 17:11:00 [只看该作者]

一.为什么这里就可以呢?

提示:

1、如果串口已经打开,则不能设置其属性,必须先关闭。
2、串口属性一般不需要设置,默认的属性设置符合大多数场合的需要。

示例

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

End
With



二.不对的,应该是10个字节的,这样打印出来只有五个,这是为什么呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/1 17:44:00 [只看该作者]

1、不一样的,字符串你不能直接当代码用的;

 

2、不应该,认真对比测试一下,肯定能正常读取到值的


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


加好友 发短信
等级:三尾狐 帖子:635 积分:3639 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By:2017/11/2 7:54:00 [只看该作者]

我再试试,还有就是怎么能把Ports.PortNames获得的串口名称设置为forms("主窗口").Controls("ck").ComboList

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


加好友 发短信
等级:三尾狐 帖子:635 积分:3639 威望:0 精华:0 注册:2011/5/21 18:05:00
  发帖心情 Post By:2017/11/2 8:11:00 [只看该作者]

    .ReadBufferSize() = 4096
    .WriteBufferSize() =
2048
还有就是这两个属性的具体用法在那里可以查找到

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/2 8:38:00 [只看该作者]

以下是引用YDS在2017/11/2 7:54:00的发言:
我再试试,还有就是怎么能把Ports.PortNames获得的串口名称设置为forms("主窗口").Controls("ck").ComboList

 

For Each p As String In Ports.PortNames
    forms("主窗口").Controls("ck").items.add(p)
Next


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/2 8:40:00 [只看该作者]

以下是引用YDS在2017/11/2 8:11:00的发言:
    .ReadBufferSize() = 4096
    .WriteBufferSize() =
2048
还有就是这两个属性的具体用法在那里可以查找到

 

这两个的设置基本不影响,这两个是缓冲的大小值,基本都不会超出的。


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