主题:求教: VFP 控制 COM 外围电路的方案
琅拿度
[专家分:2820] 发布于 2009-05-05 15:29:00
或许汇编更合适,但如果外围电路成本不差钱的情况下,用VFP...探讨一下。
我想用VFP控制外围电路的16个开关,可行吗?(如果要求每个开关都有一次动作,总时间能控制在4秒内吗)
最后更新于:2009-05-05 15:32:00
回复列表 (共19个回复)
11 楼
琅拿度 [专家分:2820] 发布于 2009-05-07 12:10:00
[quote]楼主:
Mscomm.ocx 在VFP60是自带的是在安装目录\PVFP60\OS\SYSTEM\下面(的客户现在都一直在用,都很正常。。。。)
VFP90没调成因时间关系我就没再搞,一直在用VFP60。[/quote]
你的意思是V6可以用这个控件, 用 V9会不正常?
12 楼
zfh630528 [专家分:130] 发布于 2009-05-08 19:53:00
Vfp9.0中的mscomm.ocx可以用,我就是在Vfp9.0下实现的串口与单片机通信的。只是串口发送出去的是Ascii码,接收的也是。在Vfp下编程发送前,要用适当的函数把字符转换为Ascii码,且0——255范围内的Ascii可以发送和接收。不像“老狐狸”说的那样只能接收打印码。
13 楼
琅拿度 [专家分:2820] 发布于 2009-05-10 10:54:00
到底 mscomm.ocx 与 mscomm32.ocx 是不是同一个东西? 6 和 9 用都没有问题?
14 楼
zfh630528 [专家分:130] 发布于 2009-05-10 21:26:00
mscomm.ocx 与 mscomm32.ocx 是同一个东西。但是,我只在Vfp9.0中用过,其它没有试验,不能妄加评论。
15 楼
琅拿度 [专家分:2820] 发布于 2009-05-11 10:52:00
Many thanks
9没问题就好,我用6的试。
16 楼
BEYER [专家分:90] 发布于 2009-05-11 17:00:00
[quote]Vfp9.0中的mscomm.ocx可以用,我就是在Vfp9.0下实现的串口与单片机通信的。只是串口发送出去的是Ascii码,接收的也是。在Vfp下编程发送前,要用适当的函数把字符转换为Ascii码,且0——255范围内的Ascii可以发送和接收。不像“老狐狸”说的那样只能接收打印码。
[/quote]
我试过超出127时发送会产生变异,如发送167,接收到的码变成了134之类的,而接收就没试过收到错的
17 楼
zfh630528 [专家分:130] 发布于 2009-05-11 21:43:00
我试过超出127时发送会产生变异,如发送167,接收到的码变成了134之类的,而接收就没试过收到错的[/quote]
18 楼
zfh630528 [专家分:130] 发布于 2009-05-11 21:44:00
19 楼
zfh630528 [专家分:130] 发布于 2009-05-11 22:24:00
Vfp9的Mscomm.ocx控件传递数据时需要使用二进制字符型数据。在 Visual FoxPro 中,二进制数据可以包含在字符串中。但 ActiveX 控件和 OLE 对象中的字符串 (OLE VT_BSTR 数据类型) 不能包含二进制数据。ActiveX 控件和 OLE 对象通过 VT_UI1 类型数组与 Visual FoxPro 传递二进制形式的数据。
ActiveX 控件和 OLE 对象通过 VT_UI1 类型的数组将二进制数据传递给 Visual FoxPro后。Visual FoxPro 自动将它转换为 Visual FoxPro 字符串的形式,但 Visual FoxPro 内部会把由 ActiveX 控件和 OLE 对象传递来的字符串标记为二进制字符串。当需要把数据传回 ActiveX 控件和 OLE 对象时,Visual FoxPro 再自动将它们转换为 VT_UI1 类型的数组。
如果您需要把一个 Visaul FoxPro 字符串传递给 ActiveX 控件和 OLE 对象,您必须首先使用 CRETEBINARY()函数将它转换为二进制字符串形式。
Vfp9的Mscomm.ocx控件,对Ascii码0——255的发送与接收的方法:
发送端:如发送Ascii码为167的字符,
......................
Thisform.olecontrol1.Output=Createbinary(CHR(167))
......................
接收端:
......................
cString=transform(This.Input)
?cString && 显示167的十六进制字符“A7”
......................
我来回复