热情软件屋

 

怎样用Mscomm.ocx控件进行数据传送


编号:QA001453
建立日期: 1999年8月2日 最后修改日期:1999年11月15日
所属类别:

李强:
    visualfoxpro6
    windows98
    请问怎样用windows9x带的'Mscomm.ocx'控件对调制解调的控制及数据传送等功能?谢谢!

回答:

    下面的文章摘自新闻组,作者不详。
    

对于有调制解调器的用户来说,大多使用过Windows 95提供的‘电话拨号程序’,使用起来也确实非常的方便。但是,如何在我们的Visual FoxPro 5.0应用程序中进行电话拨号呢?还好微软为我们提供了一个非常有用的控件--‘Microsoft Communication Control’,使用它,我们可以迅速的制作出一个通用的电话拨号程序。以下是本程序的编写方法:
    1.进入Visual FoxPro 5.0中,建立一个新的表单(Form1)。设置表单的Caption属性为‘电话拨号程序’,Windowtype属性为1-模式。
    2.建立‘Microsoft Communication Control’控件(Olecontrol1)。在‘表单控件’工具条上选择‘查看类’,在下拉菜单中选择‘ActiveX控件’,然后在‘表单控件’上选择‘Microsoft Communication Control’(若无此控件可查看系统菜单的‘工具’的‘选项’中的‘控件’选项卡),在表单上点击一下即可。
    3.建立两个按钮。在‘表单控件’工具条上选择‘命令按钮’并在表单体上点击一下即可生成一个命令按钮(Command1),设置它的Caption属性为‘拨号’。依此方法再制作出‘退出’按钮(Command2)。
    4.建立文本输入框。在‘表单控件’工具条上选择‘文本框’并在表单体上点击一下即可生成一个文本输入框(Text1),设置它的InputMask属性为‘9999999999999999’。
    5.建立两个标签。在‘表单控件’工具条上选择‘标签’并在表单体上点击一下即可生成一个标签(Label1),设置它的Caption属性为‘电话号码:’,Autosize属性为.T.。同样方法制作Label2,设置它的Caption属性为‘联接中……’,Autosize属性为.T.,Fontbold属性为.T.,Fontsize属性为22,Forecolor属性为蓝色(RGB(0,0,255)),Visible属性为.F.。
    6.编写相应控件的执行过程。在系统菜单的‘表单’中选择‘新方法程序’,在名称栏中输入“Dial”,按‘关闭’按钮退出。以下是程序代码:
    Form1的Dial过程:
     Parameter Number
     DialString = "ATDT" + Number + ";" + Chr(13)
     * 设置通讯端口号
     Thisform.Olecontrol1.CommPort = 2
     * 设置波特率,奇偶校验,数据位和停止位参数
     Thisform.Olecontrol1.Settings = "9600,N,8,1"
     Err = 0
     On Error Err = Messagebox("无法打开通讯端口,请重新设置!",0 + 16,"错误信息")
     * 打开通讯端口
     Thisform.Olecontrol1.PortOpen = .T.
     If Err = 1
     Return
     Endif
     On Error
     Thisform.Olecontrol1.InBufferCount = 0
     Thisform.Olecontrol1.Output = DialString
     FromModem = ""
     StartTime = DATETIME()
     Do While .T.
     * 检测联接是否超时
     If DATETIME() - StartTime >= 10
     = MessageBox("不能进行联接,请检查设置是否正确!", 0 + 64,"提示信息")
     Thisform.Mousepointer = 0
     Thisform.Label2.Visible = .F.
     Exit
     Endif
     Thisform.Mousepointer = 11
     Thisform.Label2.Visible = .t.
     If Thisform.Olecontrol1.InBufferCount > 0 Then
     FromModem = FromModem + Thisform.Olecontrol1.Input
     If at("OK",FromModem) > 0 Then
     = MessageBox ("请先拿起话筒然后再按下‘确认’按钮!",0 + 64,"提示信息")
     Thisform.Mousepointer = 0
     Thisform.Label2.Visible = .F.
     Exit
     EndIf
     EndIf
     Enddo
     * 断开联接
     Thisform.Olecontrol1.Output = "ATH" + Chr(13)
     * 关闭通讯端口
     Thisform.Olecontrol1.PortOpen = .F.
     Form1的Activate过程:
     Set Escape Off
     Thisform.Olecontrol1.InputLen = 0
     Command1的Click过程:
     If Empty(Thisform.Text1.Value)
     = Messagebox("电话号码不可为空!",0 + 16,"提示信息")
     Return
     Endif
     Thisform.Dial(Alltrim(Thisform.Text1.Value))
    Command2的Click过程:
     Thisform.Release
     以上程序默认调制解调器使用的是Com2通讯口,可根据实际情况进行调整。
    

    另外,参考:
    微软的Knowledge Base的文章:“Q154741 OWTO: Transmit and Receive Binary Data using MSCOMM32”
    微软的Knowledge Base的文章:“Q139526 OWTO: Send to the Serial Port by Using Mscomm32.ocx”
    微软的Knowledge Base的文章:“Q140525 OWTO: Receive from the Serial Port by Using MScomm32.ocx”

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio