手机来电弹屏软件?手机来电弹屏?C#控制语音卡实现呼叫、录音以及来电弹屏(2)

电脑杂谈  发布时间:2016-08-17 06:01:19  来源:网络整理

图13.13 客户来电查询
技术要点
其他相关函数介绍请参见实例“语音卡电话呼叫系统”,本实例主要介绍GetCallerIDStr函数,该函数用于获取主叫号码。语法如下:
[DllImport("Tc08a32.dll", CharSet = CharSet.Auto)]
public static extern short GetCallerIDStr(short wChnlNo, byte[] IDStr);
参数说明如下。
l wChnlNo:标识通道号。
l IDStr:用于接收读取的号码。
l 返回值:为0,表示未收到任何信息;为1,表示正在接收头信息;为2表示正在接收ID号码;为3表示接收完毕,校验正确;为4表示接收完毕,校验错误。
在调用GetCallerIDStr函数时,只有返回值为3或4才表示已经正确接收了主机号码。
实现过程
(1)新建一个项目,命名为Ex13_12,默认窗体为Form1。
(2)在Form1窗体中,主要添加一个DataGridView控件,显示语音卡各通道和通道状态,并在来电时显示来电号码;添加一个Timer控件用于时刻检测来电信息;添加其他控件及用途如图13.13所示。
(3)主要程序代码。
private void timer1_Tick(object sender, EventArgs e)
{
byte[] ss = new byte[100];
for (short i = 0; i < 8; i++)
{
DJ160API.StartSigCheck(i);
if(open_close==false)
DJ160API.ResetCallerIDBuffer(i);
if (DJ160API.RingDetect(i))
{
open_close = true;
//获取来电号码
result = DJ160API.GetCallerIDStr(i, ss);
if (result == 3 || result == 4)
{
string str = Encoding.UTF8.GetString(ss);
txtTel.Text = str;
txtTel.Text = txtTel.Text.Substring(txtTel.Text.Length - 8, 8);
dataGridView1[2, i].Value = txtTel.Text;
//查询客户资料
this.getMessage(txtTel.Text);
}
}
}
}
private void getMessage(string str)
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "db_csell.mdb" + ";Persist Security Info=False");
OleDbDataAdapter dap = new OleDbDataAdapter("SELECT * FROM 个人名录表 WHERE 电话='" + str + "'", con);
DataSet ds = new DataSet();
dap.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
txtName.Text = ds.Tables[0].Rows[0]["姓名"].ToString();
txtDuty.Text = ds.Tables[0].Rows[0]["职务"].ToString();
txtAddress.Text = ds.Tables[0].Rows[0]["地址"].ToString();
txtMobile.Text = ds.Tables[0].Rows[0]["手机"].ToString();
txtCompany.Text = ds.Tables[0].Rows[0]["公司名称"].ToString();
txtPostId.Text = ds.Tables[0].Rows[0]["邮编"].ToString();
}
else
{
labStatus.Text = "非本单位会员客户。。。。";
}
}
举一反三


根据本实例,读者可以开发以下程序。
用语音卡实现客户某项费用的查询。
用语音卡实现客户在某个时间的留言信息。
用语音卡实现客户购买物品的查询。
实现客户反馈电话录音系统。
实例430语音卡实现电话录音
实例说明


如今的许多电话都具有电话录音的功能。本例实现了该功能,当有电话打入时,即刻将双方的对话信息进行录音。实例运行结果如图13.14所示。
技术要点
其他相关函数介绍请参见实例“语音卡电话呼叫系统”,本实例主要介绍StartRecordFile函数和StopRecordFile函数。
(1)StartRecordFile函数用于开始文件录音。停止该方式的录音一定要用StopRecordFile函数。检查录音是否结束,用CheckRecordEnd函数。StartRecordFile函数语法如下:
[DllImport("Tc08a32.dll", CharSet = CharSet.Auto)]
public static extern bool StartRecordFile(short wChnlNo, byte[] FileName, long dwRecordLen);
参数说明如下。
l wChnINo:标识录音的通道号。
l FileName:标识录音的文件名。
l dwRecordLen:标识文件大小。
(2)StopRecordFile函数用于停止录音。该函数语法如下:
[DllImport("Tc08a32.dll", CharSet = CharSet.Auto)]
public static extern void StopRecordFile(short wChnlNo);
参数说明如下。
l wChnINo:标识要停止的录音通道。
(3)CheckRecordEnd函数检查指定通道录音是否结束(缓冲区已满)。
[DllImport("Tc08a32.dll", CharSet = CharSet.Auto)]
public static extern int CheckRecordEnd(int ChannelNo);
参数说明如下。
l wChnINo:标识录音的通道号。
l 返回值:0表示未结束;1代表结束。
实现过程
(1)新建一个项目,命名为Ex13_13,默认窗体为Form1。
(2)在Form1窗体中,主要添加一个DataGridView控件,显示语音卡各通道和通道状态,并在来电时显示来电号码;添加一个Timer控件用于实时检测来电信息,如果来电,程序将自动摘机并且实现录音;添加其他控件及用途如图13.14所示,。
(3)主要程序代码。
private void timer1_Tick(object sender, EventArgs e)
{
//维持文件录音持续执行
DJ160API.PUSH_PLAY();
for (short i = 0; i < 8; i++)
{
DJ160API.StartSigCheck(i);
if (open_close == false)
DJ160API.ResetCallerIDBuffer(i);
if (DJ160API.RingDetect(i))
{
open_close = true;
//摘机
DJ160API.OffHook(i);
DJ160API.StartSigCheck(i);
//是否挂机
if (DJ160API.ReadCheckResult(i, 2) != 33)
{
bool bl = DJ160API.StartRecordFile(i, Encoding.UTF8.GetBytes(@"D:/ly.001"), 600 * 1024);
dataGridView1[2, i].Value = "已接来电,开始录音";
}
else
{
DJ160API.StopRecordFile(i);
open_close = false;
DJ160API.Sig_ResetCheck(i);
dataGridView1[2, i].Value = "";
}
if (DJ160API.CheckRecordEnd(i)==1)
{
DJ160API.StopRecordFile(i);
open_close = false;
dataGridView1[2, i].Value = "";
}
}
}
}

本文来自CSDN博客,转载请标明出处:

以上就是关于来电弹屏的全部内容,相信你一定会非常满意。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-14727-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...