QQ登录

只需一步,快速开始

321上位机VC MFC开发语音卡实例

[ 复制链接 ]

321上位机VC MFC开发语音卡实例

321上位机VC MFC开发语音卡实例

开发语音卡实例
功能展示
利用上位机开发第三方产品,在我们工控领域是很常见的任务,如上位机控制西门子欧姆龙PLC,温控仪表等,我们当前例程演示上位机开发东进公司的语音卡电话呼叫功能,效果如图,在正确安装了语音卡驱动及板卡后,程序可正确运行,选择通道输入电话后,可点击排号;

要点提示
第三方产品都会提供产品的开发包,驱动等产品使用必须的文件,当前例程演示东进公司的8通道语音卡,其开发包及驱动,编程手册都可以从官网下载,也可以到gkbc8.com搜索<东进D系列语音处理板卡>相关信息下载,例程已将使用到的头文件tc08a32.h,NewSig.h库文件Tc08a32.lib NewSig.lib复制到工程根目录,具体可以在开发包的安装目录查找,库文件对应的动态库文件Tc08a32.DLL NewSig.DLL可以到系统目录system32中查找;
此项产品提供多个API函数,具体的函数使用介绍也可以参考编程手册,这里简单绍介主要几个函数;
LoadDRV()返回0表示加载成功,-1表示加载驱动出错,-2表示读取TC08A-V.INI出错,-3表示INI文件设置与实际的硬件不一致;
FreeDRV()用于关闭驱动程序;
ENABLECARD()初始化卡,给每个通道初始化缓冲区;
Checkvalidch()检查语音卡可用通道数;
ChceckChType()检查指定通道类型

实现功能
1.新建基于对话框的应用程序
2.从官网或工控编程吧下载产品的开发包进行安装,进而获得编程手册,驱动,头文件,静态库文件,动态库文件;
3.设置编辑器库文件及头文件所在目录,或直接拷贝用到的语音卡文件到项目根目录;
4.根据例程界面添加列表控件,组合框,按钮等控件,控件ID和例程匹配,在主对话框头文件添加语音卡的头文件,库文件,及两结构体
#include "tc08a32.h"
#pragma comment (lib,"Tc08a32")
#include "NewSig.h"
#pragma comment (lib,"NewSig.lib")
typedef struct LINESTRUCT
{
int nType;
int State;
char TelNum[32];
}* lpLINESTRUCT;
enum CHANNEL_STATE {
CH_FREE,
CH_DIAL,
CH_CHECKSIG,
CH_PLAY,
CH_ONHOOK,
CH_CONNECT,
CH_OFFHOOK,
CH_BUSY,
CH_NOBODY, CH_NOSIGNAL, CH_NODIALTONE, CH_NORESULT};
5.添加几个变量,并在OnInitDialog()函数中初始化控件及语音卡
lpLINESTRUCT m_pLines;
WORD m_Chanels;
int m_CurChanel; //当前通道
CString m_CurNumber; ;
CListCtrl *pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST1);
pListCtrl->ModifyStyle(0,LVS_REPORT,NULL);
pListCtrl->SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT |LVS_EX_TWOCLICKACTIVATE);
pListCtrl->InsertColumn(1,"通道号",LVCFMT_LEFT,80);
pListCtrl->InsertColumn(2,"通道类型",LVCFMT_LEFT,80);
pListCtrl->InsertColumn(3,"流程状态",LVCFMT_LEFT,120);
pListCtrl->InsertColumn(4,"号码",LVCFMT_LEFT,150);


//加载驱动程序
long result = LoadDRV(); //0成功,
if (result!=0)
MessageBox("加载驱动程序错误");
//检查合法的通道
m_Chanels = CheckValidCh();
m_pLines = new LINESTRUCT[m_Chanels];
SetBusyPara(400);//设置忙音0.40秒

//初始化电话卡的硬件,并为每个通道分配语音缓冲区
EnableCard(m_Chanels,1024*16);
CString convert;
CComboBox* pCombo=(CComboBox*)GetDlgItem(IDC_COMCHANEL);
for (int i = 0; i<m_Chanels; i++)
{
m_pLines.State = CH_FREE;
convert.Format("%i",i);
pListCtrl->InsertItem(i,"");
pListCtrl->SetItemText(i,0,convert);
WORD type = CheckChType(i);
m_pLines.nType = type ;

switch(type)
{
case 0: //内线
{
convert = "内线";
break;
}
case 1: //外线
{
pCombo->AddString(convert);
convert = "外线";
break;
}
case 2: //悬空
{
convert = "悬空";
break;
}

}
pListCtrl->SetItemText(i,1,convert);
}
//初始化信号音函数
Sig_Init(0);
SetTimer(1,500,NULL);
6.最后是按钮<拔号><挂机>及定时器的实现代码及程序退出后成员变量的释放,具体代码可查阅例程

我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:321.上位机VC MFC开发语音卡实例.zip 
文件大小:1.55 MB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索