社区
VFP
帖子详情
请教VFP串口发送数据问题
JK9481
2010-05-27 03:06:09
有一串字符 6000ff60 通过MSCOMM方式,发送不成功,请高手指点:
thisform.olecontrol1.settings='9600,n,8,1'
thisform.olecontrol1.portopen=.t.
Thisform.olecontrol1.Output=CREATEBINARY('6000ff60')
...全文
279
23
打赏
收藏
请教VFP串口发送数据问题
有一串字符 6000ff60 通过MSCOMM方式,发送不成功,请高手指点: thisform.olecontrol1.settings='9600,n,8,1' thisform.olecontrol1.portopen=.t. Thisform.olecontrol1.Output=CREATEBINARY('6000ff60')
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
十豆三
2010-05-28
打赏
举报
回复
0h 表示二进制数据
0x 表示十六进制数据
你的 Olecontrl 控件,只接收二进制数据,如果不加 0h,他会自动转换成二进制数据,那样接收后还需要转换回来,所以加上 0h,控件认为是二进制数据,不用转换了,即达到了你的要求。
JK9481
2010-05-28
打赏
举报
回复
为什么前面要加 0H呀??
JK9481
2010-05-28
打赏
举报
回复
为什么关面要加 0H 呀 ??
JK9481
2010-05-28
打赏
举报
回复
谢谢,十豆三和都市夜猫,不加引号已经OK,电脑另一端也接收OK
现在想知道为什么6000FF60前面要加 0H,谢谢
十豆三
2010-05-28
打赏
举报
回复
[Quote=引用 8 楼 jk9481 的回复:]
感谢十豆三的回复,再次请教:
我也可以这样发送:
A1='6000ff60'
Thisform.olecontrol1.Output=A1
未用CREATEBINARY( ) 函数转换,接收到的数据仍然是363030303066663630
我如果发送这串数据 363030303066663630 接收到的又是另一串数据了 3336333033303330363636363336……
[/Quote]
再不行,就把接收到的再转换回来吧。转换代码参考7楼
JK9481
2010-05-28
打赏
举报
回复
OK,不加引号也行
A1=0h6000ff60
Thisform.olecontrol1.Output=A1
但为什么前面要加,0H
十豆三
2010-05-28
打赏
举报
回复
[Quote=引用 11 楼 jk9481 的回复:]
我是这样试的:
A1='0h6000ff60' &&加了一个引号
Thisform.olecontrol1.Output=A1
电脑另一端接收到的数据是: 6F68363030306666363
[/Quote]
不要加引号。你用的是VFP9.0吗?如果不是推荐用VFP9.0
JK9481
2010-05-28
打赏
举报
回复
我再用这种试试 A1 = chr(0x60)+chr(0)+chr(0xff)+chr(0x60)
JK9481
2010-05-28
打赏
举报
回复
我不加 引号过不了
JK9481
2010-05-28
打赏
举报
回复
我就是 VFP9
都市夜猫
2010-05-28
打赏
举报
回复
加引号意义就变了
vfp6 可能不支持 0h6000ff60 这种写法,需要 vfp9
vfp6 的话,这样试试:
A1 = chr(0x60)+chr(0)+chr(0xff)+chr(0x60)
JK9481
2010-05-28
打赏
举报
回复
我是这样试的:
A1='0h6000ff60' &&加了一个引号
Thisform.olecontrol1.Output=A1
电脑另一端接收到的数据是: 6F68363030306666363
JK9481
2010-05-28
打赏
举报
回复
好,马上试
都市夜猫
2010-05-28
打赏
举报
回复
试试:
A1=0h6000ff60
Thisform.olecontrol1.Output=A1
JK9481
2010-05-28
打赏
举报
回复
感谢十豆三的回复,再次请教:
我也可以这样发送:
A1='6000ff60'
Thisform.olecontrol1.Output=A1
未用CREATEBINARY( ) 函数转换,接收到的数据仍然是363030303066663630
我如果发送这串数据 363030303066663630 接收到的又是另一串数据了 3336333033303330363636363336333
十豆三
2010-05-28
打赏
举报
回复
如果要将接收到的数据还原
变量=Rtrim(Cast(0h3630303066663630 As Char(50)))
或
变量=Cast(0h3630303066663630 As Varchar(50))
十豆三
2010-05-28
打赏
举报
回复
Thisform.olecontrol1.Output=CREATEBINARY('6000ff60')
这是你的代码
这个函数 CREATEBINARY( ) 函数 的作用
将 Visual FoxPro 字符型数据转换为二进制字符型数据。您在向 ActiveX 控件或 OLE对象传递数据时需要使用二进制字符型数据。
也就是说是你转成 你的olecontrol1控件能够认识的二进制字符型数据,才发送成功的,因为你不转换,olecontrol1控制不识别,所以发送也就不成功。
你实际发的就是 363030303066663630,所以得到的肯定也是这个363030303066663630,一点没错。
JK9481
2010-05-28
打赏
举报
回复
哦,懂了,谢谢,非常感谢
JK9481
2010-05-27
打赏
举报
回复
也就是VFP是以那种格式发送的,为什么接收端接收过来是 显示的这种数据:363030303066663630
JK9481
2010-05-27
打赏
举报
回复
哦,谢谢十豆三
再次请教:
发送: 6000ff60
接收: 0h3630303066663630
想问一个问题: VFP是那种方式发送成 0h3630303066663630 这样的字符串的?
我现在就是发送 6000ff60 给一个控制端,控制端不认识这个?
加载更多回复(3)
VFP
利用MsComm32控件接收
串口
(COM)数据示列
VFP
利用MsComm32控件接收
串口
(COM)数据示列
VFP
编的五子棋游戏
五子棋源代码
VFP
编的游戏,棋力不错。
arm-linux-gcc-4.5.1-v6-
vfp
-20101103
来自友善之臂公司的光盘,是ARM11的交叉编译器,供需要的朋友下载。
62.[开源][安卓]FFmpeg-Android-master
62.[开源][安卓]FFmpeg-Android-master 为Android neon、armv7、
vfp
、armv6及用于Android的VPlayer构建FFmpeg。
VFP
串口
通讯难倒9527,猫猫刚显身手,惨败于kiss轻轻一招
网友9527发过求助,需要
VFP
控制
串口
通讯,控制硬件设备。 前线火速响应。 9527代码如下 立马反馈说搞不了,返回来的全部是0 9527发来一段文档说明,十六进制的格式。 当时我在手机上,就跟他说两两一位,加上&转换。
发送数据
=chr(&a1)+chr(&a2)+chr(&a3) 9527很高兴地说,有返回啦。 猫猫帮助了别人,甚是高兴。 未曾料到佛山的kiss直接说,这代码写得一堆废话。 一句a=0h010400000008F1CC 搞定。 猫猫惨败,高
VFP
2,749
社区成员
29,140
社区内容
发帖
与我相关
我的任务
VFP
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
复制链接
扫一扫
分享
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章