-
vfp教程之VFP中实现电话拨号
用VFP 管理名片簿、通信录时,经常要用到电话拨号程序。如直接使用Windows 98自带的拨号程序,VFP 程序的完整性和界面一致性都将受到影响。
设计思想
要实现拨号,只需让程序往串口写入at 命令。利用VFP 对Microsoft CommControl 控件的支持可以方便地控制电话。假设有一数据表Communication .dbf ,内容如下:姓名电话号码其他张三1234567ETC……将上述表引入表单Form1的数据环境之后,在Form1上加入下列控件,如下所示:
控件名称控件类型控件属性值
Text1Text ControlSource =communication .姓名
Text2Text ControlSource =communication .电话号码
Command1Command Button Caption =“拨号”
Command2Command Button Caption =“挂断”
Command3Command Button Caption =“下条记录”
在表单中加入OLE 容器控件,当提示菜单出现时,选择Insert Control ,在Control Type(控件类型)栏内找到并双击Microsoft CommControl ,这时表单上会出现一个带电话标志的图标,设定该控件的名称为Telephone ,这就是在VFP 中实现电话拨号的核心部件。选择Telephone 控件,单击鼠标右键,选择MSCommProperties 菜单项,可以更加灵活地控制该控件。
设定事件代码
在Form1的Init 事件中加入下列代码:
go top
*设定通讯端口号,可根据你的实际情况设定
*笔者的Modem 是接在Com3上的thisform.telephone .CommPort =3
*设定端口的通讯速率(波特率)、通讯字长以及是否进行校验
thisform.telephone .Settings =″9600,n ,8,1″
在Command1的Click 事件中加入下述代码:
this .enabled =.not .this .enabled
thisform.command2.enabled =.t .
*打开通信端口,准备工作
thisform.telephone .portopen =.t .
*ATDT表示执行AT命令中的DT指令,D 表
示首先挂断电话
*T表示使用音频拨号,如果你的电话使用的
是脉冲方式拨号
*请将T改为P,CHR(13)表示发送命令完毕
thisform.telephone .output =″ATDT″+电话号码+
chr(13)
wait wind″正在拨号,请稍候″nowa
在Command2的Click 事件中写入下列代码:
thisform.command1.enabled =.t .
thisform.command2.enabled =.f .
*关闭通信端口
thisform.telephone .portopen =.f .
在Command3的Click 事件中写入下列代码:
skip if eof()
go top
endi
thisform.refresh
经过上面几个步骤,大功告成了。戴上耳机,对着话筒。
(四川省新都县国家税务局610500)
设计思想
要实现拨号,只需让程序往串口写入at 命令。利用VFP 对Microsoft CommControl 控件的支持可以方便地控制电话。假设有一数据表Communication .dbf ,内容如下:姓名电话号码其他张三1234567ETC……将上述表引入表单Form1的数据环境之后,在Form1上加入下列控件,如下所示:
控件名称控件类型控件属性值
Text1Text ControlSource =communication .姓名
Text2Text ControlSource =communication .电话号码
Command1Command Button Caption =“拨号”
Command2Command Button Caption =“挂断”
Command3Command Button Caption =“下条记录”
在表单中加入OLE 容器控件,当提示菜单出现时,选择Insert Control ,在Control Type(控件类型)栏内找到并双击Microsoft CommControl ,这时表单上会出现一个带电话标志的图标,设定该控件的名称为Telephone ,这就是在VFP 中实现电话拨号的核心部件。选择Telephone 控件,单击鼠标右键,选择MSCommProperties 菜单项,可以更加灵活地控制该控件。
设定事件代码
在Form1的Init 事件中加入下列代码:
go top
*设定通讯端口号,可根据你的实际情况设定
*笔者的Modem 是接在Com3上的thisform.telephone .CommPort =3
*设定端口的通讯速率(波特率)、通讯字长以及是否进行校验
thisform.telephone .Settings =″9600,n ,8,1″
在Command1的Click 事件中加入下述代码:
this .enabled =.not .this .enabled
thisform.command2.enabled =.t .
*打开通信端口,准备工作
thisform.telephone .portopen =.t .
*ATDT表示执行AT命令中的DT指令,D 表
示首先挂断电话
*T表示使用音频拨号,如果你的电话使用的
是脉冲方式拨号
*请将T改为P,CHR(13)表示发送命令完毕
thisform.telephone .output =″ATDT″+电话号码+
chr(13)
wait wind″正在拨号,请稍候″nowa
在Command2的Click 事件中写入下列代码:
thisform.command1.enabled =.t .
thisform.command2.enabled =.f .
*关闭通信端口
thisform.telephone .portopen =.f .
在Command3的Click 事件中写入下列代码:
skip if eof()
go top
endi
thisform.refresh
经过上面几个步骤,大功告成了。戴上耳机,对着话筒。
(四川省新都县国家税务局610500)
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式