我正在使用他们的应用程序称为移动合作伙伴,这是一个相当完整的应用程序,支持拨打和接听电话但我想构建我自己的应用程序,它将在Mac OS X上运行.但我无法找到任何详细说明Voice API和板载PCM通道的文档.如果有人知道这一点,请告诉我.
谢谢
Harryd
语音(输入)数据的格式:
wFormatTag = WAVE_FORMAT_PCM; nChannels = 1; nSamplesPerSec = 8000; nAvgBytesPerSec = 16000; nBlockAlign = 2; wBitsPerSample = 16; cbSize = 0;
Readfile或Writefile *** 作(对于COM端口)中的语音数据块大小必须设置为320字节.在每个Readfile之后必须进行Writefile *** 作(在其他选择缓冲区中将溢出并且调制解调器将在一段时间后重新启动).样品:
// BlockSize - size of buff for wave in|out operations (in my case 320*4 bytes) while (!bAllRead) { if (cInfo->hCom == INVALID_HANDLE_VALUE) { SetVoiceClosed(cInfo);//exit from thread return 0; } BOol isRead = Readfile(cInfo->hCom,cInfo->header[counter].lpData + currBlocLength,320,&nActualRead,&cInfo->o); if (isRead || (GetLastError() == ERROR_IO_PENDING && GetoverlappedResult(cInfo->hCom,&cInfo->o,TRUE))) { if (nActualRead > 0) { // обратка nActualWrite = 0; int nActualWriteall = 0; BOol isWrite = Writefile(cInfo->hCom,CurrBuffPtr + currBlocLength,nActualRead,&nActualWrite,&cInfo->oVoiceOut); while (isWrite || (GetLastError() == ERROR_IO_PENDING && GetoverlappedResult(cInfo->hCom,&cInfo->oVoiceOut,TRUE))) { nActualWriteall += nActualWrite; if (nActualWriteall >= nActualRead) break; } currBlocLength += nActualRead; if (currBlocLength >= BlockSize) bAllRead = true; } else { Sleep(25);// wait for voice data (resync) PurgeComm(cInfo->hCom,PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); } } else { bAllRead = true;// there are no active call PurgeComm(cInfo->hCom,PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); } }
像这样的东西))).我没有在互联网上找到任何有用的信息,所以所有建议都基于我的实验.我希望这很有用.
PS:我希望波浪进出 *** 作对你来说不是问题.
PS2:对不起我的英语,我来自乌克兰.
总结以上是内存溢出为你收集整理的macos – 如何使用Voice API使用华为3g调制解调器进行呼叫?全部内容,希望文章能够帮你解决macos – 如何使用Voice API使用华为3g调制解调器进行呼叫?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)