c# 语音卡控制--语音卡实现电话录音

实例430 语音卡实现电话录音

image010.gif实例说明image011.gif
文本框:图13.14  利用语音卡实现电话录音如今的许多电话都具有电话录音的功能。本例实现了该功能,当有电话打入时,即刻将双方的对话信息进行录音。实例运行结果如图13.14所示。
image010.gif技术要点image011.gif
其他相关函数介绍请参见实例“语音卡电话呼叫系统”,本实例主要介绍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代表结束。
image010.gif实现过程image011.gif
(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);

//这一行中的录音长度可能有点问题!如果不进行SetPackRate ( WORD wPackRate );设置压缩率,则按(无压缩) 每秒64K bits 即 8K bytes.这样的录音长度设为8000*xxx.你用的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 = "";
                    }
                }
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值