主题:[原创]在Vfp9中用Mscomm.ocx控件进行串口通信的经验
近来,本讨论区中不断有人提及串口接、发的问题。现把本人多年来积累的经验贴出来。
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”
欢迎讨论!不妥处请VfpFans指正。
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”
欢迎讨论!不妥处请VfpFans指正。