标题:VFP 通过 COM 口接收数据问题
只看楼主
youyaoshuan
Rank: 1
等 级:新手上路
威 望:1
帖 子:33
专家分:5
注 册:2008-12-20
结帖率:50%
 问题点数:0 回复次数:17 
VFP 通过 COM 口接收数据问题
在网上搜到一段接收COM口的代码:
(2) 在VFP中,建立一个新的表单
(3) 插入标签 (命名为重量)  
(4) 插入文本 (命名为 TEXT1,用来显示重量数据)
(5) 建立 Microsoft Communication Control1 控件 在工具栏中点插入ole容器控件,选择 Microsoft Communication Control 控件(NAME 为 OLECONTRO1)
(6) 设置 commport = 2 (串口2)
(7) 设置 settings = 1200,e,7,2(1200 波特率,偶校验,7 个数据位,1 个停止位)
(8) 设置 Rthreshold = 17 表示当缓冲区中有 17 个数据等待接受时,产生 OnComm
(9) 在表单的 init 事件中写 thisform.olecontrol1.portopen=.t.,
      释放事件中写 thisform.olecontrol1.portopen = .f.  
(10) 在控件 olecontrol1 的 OnComm 事件中写如下程序代码   
      if = 2    && 缓冲区中有 17 个字符等待接受,产生 OnComm 事件   
      dbbl=subs(this.input,1,17)   && 取串口数据   
      thisform.text1.value=subs(dbbl,5,6)  && 取字符串中的重量数据   
      thisform.refresh
      endif
为什么运行的时候是一串数字和问号在TEXT1中循环滚动?怎么才能接收到正确的称重数据,并在TEXT1中显示出来,让TEXT1中的内容和电子称显示屏上显示的数据相同?
搜索更多相关主题的帖子: Microsoft settings 工具栏 波特率 缓冲区 
2014-09-27 21:40
youyaoshuan
Rank: 1
等 级:新手上路
威 望:1
帖 子:33
专家分:5
注 册:2008-12-20
得分:0 
期待高手帮助
2014-09-27 21:42
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
2014-09-27 21:58
youyaoshuan
Rank: 1
等 级:新手上路
威 望:1
帖 子:33
专家分:5
注 册:2008-12-20
得分:0 
和这个贴子上的情况不一样
2014-09-28 09:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用youyaoshuan在2014-9-28 09:04:12的发言:

和这个贴子上的情况不一样


看似是有关系哦,分析一下这句:“为什么运行的时候是一串数字和问号在TEXT1中循环滚动?”。
TEXT1只能显示可打印文本,否则就有“乱码”现象。
2014-09-28 09:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
thisform.text1.value=subs(dbbl,5,6)  && 取字符串中的重量数据

这个是6字节二进制数格式,它到底是不是你需要的重量,要看对方发送数据的协议是怎样约定的。不要想当然用二进制转换函数。

[ 本帖最后由 TonyDeng 于 2014-9-28 11:31 编辑 ]

授人以渔,不授人以鱼。
2014-09-28 09:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
数值用 6 个字节存放很有个性。
2014-09-28 11:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
字节多少还是小事,关键是字节序!

授人以渔,不授人以鱼。
2014-09-28 11:31
wmcwww
Rank: 2
等 级:论坛游民
威 望:1
帖 子:60
专家分:21
注 册:2012-11-2
得分:0 
太高深了
2014-09-28 14:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用TonyDeng在2014-9-28 11:31:42的发言:

字节多少还是小事,关键是字节序!


取出后加多两个空字节,变8字节(64位数值)就可以用现成的二进制转换函数。
2014-09-28 16:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-436672-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.417230 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved