中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

串口通信

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 串口通信 → 浏览主题: 各位大虾,语音medom主动打电话后如何送出语音呢
发表新帖 回复该主题
回帖:11个,阅读:8492 [上一页] [1] [2] [下一页]
* 帖子主题:

各位大虾,语音medom主动打电话后如何送出语音呢

分享到
938
Kcanvas
文章数:12
年度积分:50
历史总积分:938
注册时间:2003/4/1
发站内信
发表于:2003/4/1 16:35:00
#0楼
我已经发出声音的数据,但是电话那边是乱七八糟的东西。请问你是否有同感呢?
938
Kcanvas
文章数:12
年度积分:50
历史总积分:938
注册时间:2003/4/1
发站内信
发表于:2003/4/9 10:54:00
#1楼
这里是我提出的问题,现在由我来解答自已。
用AT指令发送语音时只能发送一定采样频率的WAV文件。
我现在采用的是TAPI已经解决这个问题。
923
pdsbingjian
文章数:7
年度积分:50
历史总积分:923
注册时间:2003/5/3
发站内信
发表于:2003/5/3 9:16:00
#2楼
楼上的老师:
  我现在正在学TAPI方面的串口编程,
我打算做一个毕业设计,就是利用语音“猫”的电话聊天问题(通过公用电话网),却不知如何送出语音,
TAPI好像也没有提到如何控制猫送出语音的问题,
  请给与帮助!!!!!!谢谢!!!
938
Kcanvas
文章数:12
年度积分:50
历史总积分:938
注册时间:2003/4/1
发站内信
发表于:2003/5/5 10:09:00
#3楼
楼上的,你会VC++.虽然我也会,但是我不是VC实现的,现在说明如下:
TAPI並不提供錄放音的功能,錄放音是藉由Windows 音效API來達成,例如本實作由TAPI打電話,電話接通後,使用Windows 音效API,對此通電話錄音(收電話的聲音),或對此通電話放音(送聲音到電話中)。當對此通電話錄音,電話機被當成音源輸入(Wave/In)裝置;當對此通電話放音,電話機被當成音源輸出(Wave/Out)裝置。

Windows 音效API為MMSYSTEM.DLL,Delphi 4.0 已改寫為MMSYSTEM.PAS檔案,可以直接叫用音效函數。
938
Kcanvas
文章数:12
年度积分:50
历史总积分:938
注册时间:2003/4/1
发站内信
发表于:2003/5/5 10:12:00
#4楼
下面是原程式不知你是否能明白:
procedure PlayRecordedCall; //已錄音放音

var

WAVEOUTCAPS: TWAVEOUTCAPS;

hWaveOut1 : HWAVEOUT;

WAVEFORMATEX : TWAVEFORMATEX;

WAVEHDR : TWAVEHDR;

Buffer: PChar;

begin

begin

GetMem(Buffer, Sizeof(WAVEHDR));

WAVEHDR.dwBytesRecorded := BytesRecorded; //BytesRecorded: Global variable

WAVEHDR.dwBufferLength := BytesRecorded;

WAVEHDR.dwFlags := 0;

WAVEHDR.dwLoops := 0;

WaveOutGetDevCaps( 0, @WAVEOUTCAPS, Sizeof( WAVEOUTCAPS) );

WaveOutOpen( @hWaveOut1, 0, @WAVEFORMATEX, 0, 0, CALLBACK_NULL );

 

WaveOutPrepareHeader( hWaveOut1, @WAVEHDR, Sizeof(WAVEHDR));

waveOutWrite( hWaveOut1, @WAVEHDR, Sizeof(WAVEHDR)); //放音

WaveOutUnPrepareHeader( hWaveOut1, @WAVEHDR, Sizeof(WAVEHDR)); //free data blocks

WaveOutClose(hWaveOut1);

FreeMem(Buffer);

end;

 
938
Kcanvas
文章数:12
年度积分:50
历史总积分:938
注册时间:2003/4/1
发站内信
发表于:2003/5/5 10:16:00
#5楼
网上有很多这方面的资料,有兴趣的朋友,我们可以进一步交流.
923
pdsbingjian
文章数:7
年度积分:50
历史总积分:923
注册时间:2003/5/3
发站内信
发表于:2003/5/6 8:35:00
#6楼
朋友,久久不见你的回信,原来你都回到了这里了,谢谢了,
以上的代码我是看不明白(我没有学过DELPHI)的,
但我想着录放音的时候,要用到什么句柄吧,那么是不是通过调用lineMakeCall()函数的时候,得到的m_hCall句柄呢,通过此句柄,把语音传进传出呢?
我还要查一查资料,我是一个大专生,对于VC是自学的,没有什么经验,见笑了!
938
Kcanvas
文章数:12
年度积分:50
历史总积分:938
注册时间:2003/4/1
发站内信
发表于:2003/5/6 14:25:00
#7楼
不是的。先用LineMakeCall 成功后再用 LineGetID返回的结果就可以了。
938
Kcanvas
文章数:12
年度积分:50
历史总积分:938
注册时间:2003/4/1
发站内信
发表于:2003/5/6 14:31:00
#8楼
void GethModem(HLINE hLine)  

{   ModemID far *mid;  

     VARSTRING * str;  

     LONG lid;  

    DWORD size;  

     char mark=1;  

     str=(VARSTRING *)malloc(sizeof(VARSTRING));  

     if(!str)  

return NULL;  

    str- >dwTotalSize=sizeof(VARSTRING);  

     do  

     { if((lineGetID(myhLine,0,NULL,LINECALLSELECT_LINE,str,  

"comm/datamodem")==0)&&(str- >dwTotalSize < str- > dwNeededSize))  

     { dwSize=str- >dwNeededSize;  

          free(str);  

            str=(VARSTRING *)malloc(dwSize);  

           if(!str)  

            { myhModem=NULL;  

    mark=2;  

}  

       str- >dwTotalSize=dwSize;  

        }  

  else mark=0;  

   }while(mark==1);  

  if(mark==0)  

  { mid=(ModemID far *)((LPSTR)str+str- >dwStringOffset);  

      myhModem=mid- >hModem;  

  }  

     free(str);  

}  
923
pdsbingjian
文章数:7
年度积分:50
历史总积分:923
注册时间:2003/5/3
发站内信
发表于:2003/5/7 14:52:00
#9楼
我找到了一些资料,是这样的,
 当得到modem的句柄后,当 回 调 函 数 收 到LINECALLSTATE_CONNECTED 消 息 后, 请 先 清 除 接 收 缓 冲 区, 可 以 使 用 函 数 为WriteFile 及ReadFile 函 数 进 行 数 据 交 换, 注 意 参 数hFile 调制解调器句柄hModem,
 对于播放声音这一块儿,我还是搞不定,若再加个来电显示,也没有头绪,
只恨自己的外语太菜啊,否则msdn中的,也够我啃一段时间的!
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005