3958|9

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

TAPI的一个问题 [复制链接]

请问lineOpen的dwPrivileges和dwMediaModes参数是什么意思?

dwPrivileges设置成NONE的话就只能打电话吗?就不能接电话? 要打电话、接电话都可以的话是不是要设置成LINECALLPRIVILEGE_MONITOR + LINECALLPRIVILEGE_OWNER

dwMediaModes常用的设置是哪个?

我想要做的是,写一个打电话的测试程序,那些基本功能都有就行了。但是在lineOpen的时候老返回LINEERR_OPERATIONFAILED,我就想是不是上面的两个参数是不是设置错了。
还有,如果我没有硬件的话,是在CE6.0的模拟上调的时候,到LineOpen的时候就会出错吗,还是会在LineMakeCall的时候出错?

谢谢!

最新回复

“放到mobile里面”是指放到mobile的模拟器中,还是实际设备中?  详情 回复 发表于 2010-3-17 11:50
点赞 关注

回复
举报

51

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你的前个问题直接查msdn比较好,第二个问题我们的电话程序这样用的:

lRet = lineOpen(m_hLineApp, m_nDevID, &m_hLine, m_dwTAPIVer, m_dwTapiExtVer, 0,LINECALLPRIVILEGE_MONITOR|LINECALLPRIVILEGE_OWNER,dwMediaMode,NULL);
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
其中:

if(!nMode)
                dwMediaMode = LINEMEDIAMODE_DATAMODEM; // call
        else
                dwMediaMode = LINEMEDIAMODE_AUTOMATEDVOICE;// data
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
if(!nMode)
dwMediaMode = LINEMEDIAMODE_DATAMODEM; // data
else
dwMediaMode = LINEMEDIAMODE_AUTOMATEDVOICE;// call

注释是不是不对呀

 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
两位大侠:
nMode是什么啊。
设成那样还是不行,依然返回操作失败!

请问是不是和第三个问题有关啊(还有,如果我没有硬件的话,是在CE6.0的模拟上调的时候,到LineOpen的时候就会出错吗,还是会在LineMakeCall的时候出错? )
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
代码如下:
LONG lRet = lineInitialize(&m_hLineApp, AfxGetInstanceHandle(), lineCallbackFunc, NULL, &m_NumDvs);
        if (lRet)
        {
                CString msg;
                msg.Format(L"Line liitialize error %x!", lRet);
                MessageBox(msg);
                goto Error;
        }

//Get a tapi version to use
        lRet = lineNegotiateAPIVersion(m_hLineApp, 0, 0x00010000, 0x00020000, &dwAPIVersion, &ExtensionID);
        if (lRet)
        {
                CString msg;
                msg.Format(L"Get Version error %x!", lRet);
                MessageBox(msg);
                goto Error;
        }

        lineGetDevCaps(m_hLineApp, 0, dwAPIVersion, 0, &lineDvsCaps);


        lRet = lineOpen(m_hLineApp, 0, &m_hLineHandles, dwAPIVersion, 0, 0,
                LINECALLPRIVILEGE_MONITOR | LINECALLPRIVILEGE_OWNER, LINEMEDIAMODE_DATAMODEM/*LINEMEDIAMODE_INTERACTIVEVOICE*/, NULL);
        if (lRet)
        {
                CString msg;
                msg.Format(L"Open line device error %x!", lRet);
                MessageBox(msg);
                goto Error;
        }
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 
以下示例代码演示了如何在WIN CE6.0下实现拨号:


  1. #include
  2. #include

  3. using namespace Microsoft.WindowsMobile.Telephony;

  4. #pragma comment (lib, "Tapi32.lib")

  5. #define         DEVCAPSSIZE     1024

  6. long            lRet;
  7. HLINEAPP        hLineApp;
  8. HINSTANCE       hInst;
  9. DWORD           dwNumDevs;
  10. DWORD           dwDeviceID;
  11. DWORD           dwAPIVersion;
  12. LINEEXTENSIONID ExtensionID;
  13. LPLINEDEVCAPS   lpDevCaps;
  14. HLINE           hLine;
  15. HCALL           hCall;
  16. LPTSTR          lpszDialableAddr;
  17. TCHAR           szPhoneNumber[120] = {TEXT("10086")};
  18. LINECALLPARAMS  CallParams;
  19. DWORD           dwCountryCode = 86;



  20. void CallParamInit(LINECALLPARAMS &cp);
  21. void CALLBACK
  22. lineCallbackFunc(DWORD dwDevice, DWORD dwMsg, DWORD dwCallbackInstance,
  23.                  DWORD dwParam1, DWORD dwParam2, DWORD dwParam3)
  24. {
  25.         return;
  26. }



  27. int WINAPI WinMain (HINSTANCE hInstance,
  28.                     HINSTANCE hPreviousInstance,
  29.                     LPWSTR pszCommandLine,
  30.                     int nCommandShow)
  31. {
  32.         lRet = lineInitialize(
  33.                 &hLineApp,
  34.                 hInst,
  35.                 lineCallbackFunc,
  36.                 NULL,
  37.                 &dwNumDevs
  38.                 );

  39.         lRet = lineNegotiateAPIVersion(
  40.                 hLineApp,
  41.                 dwDeviceID,
  42.                 0x00010000,
  43.                 0x00030000,
  44.                 &dwAPIVersion,
  45.                 &ExtensionID
  46.                 );

  47.         lpDevCaps = (LPLINEDEVCAPS)(LocalAlloc(LPTR, DEVCAPSSIZE));
  48.         lpDevCaps->dwTotalSize = DEVCAPSSIZE;
  49.         lRet = lineGetDevCaps(
  50.                 hLineApp,
  51.                 dwDeviceID,
  52.                 dwAPIVersion,
  53.                 0,
  54.                 lpDevCaps
  55.                 );

  56.         lRet = lineOpen(
  57.                 hLineApp,
  58.                 dwDeviceID,
  59.                 &hLine,
  60.                 dwAPIVersion,
  61.                 0,
  62.                 0,
  63.                 LINECALLPRIVILEGE_NONE,
  64.                 LINEMEDIAMODE_INTERACTIVEVOICE,
  65.                 NULL
  66.                 );


  67.         lpszDialableAddr = szPhoneNumber;
  68.         CallParamInit(CallParams);
  69.         lRet = lineMakeCall(
  70.                 hLine,
  71.                 &hCall,
  72.                 lpszDialableAddr,
  73.                 0,
  74.                 &CallParams
  75.                 );

  76.         Sleep(10000);

  77.         return TRUE;
  78. }

  79. void CallParamInit(LINECALLPARAMS &cp)
  80. {
  81.         cp.dwTotalSize = sizeof(LINECALLPARAMS);
  82.         cp.dwBearerMode = LINEBEARERMODE_VOICE;
  83.         cp.dwMinRate = 9600;
  84.         cp.dwMaxRate = 9600;
  85.         cp.dwMediaMode = LINEMEDIAMODE_INTERACTIVEVOICE;
  86.         cp.dwCallParamFlags = LINECALLPARAMFLAGS_IDLE;
  87.         cp.dwAddressMode = LINEADDRESSMODE_ADDRESSID;
  88.         cp.dwAddressID = 0;
  89.         cp.DialParams.dwDialPause = 0;
  90.         cp.DialParams.dwDialSpeed = 0;
  91.         cp.DialParams.dwDigitDuration = 0;
  92.         cp.DialParams.dwWaitForDialtone = 0;
  93.         cp.dwOrigAddressSize = 0;
  94.         cp.dwOrigAddressOffset = 0;
  95.         cp.dwDisplayableAddressSize = 0;
  96.         cp.dwDisplayableAddressOffset = 0;
  97.         cp.dwCalledPartySize = 0;
  98.         cp.dwCalledPartyOffset = 0;
  99.         cp.dwCommentSize = 0;
  100.         cp.dwCommentOffset = 0;
  101.         cp.dwUserUserInfoSize = 0;
  102.         cp.dwUserUserInfoOffset = 0;
  103.         cp.dwHighLevelCompSize = 0;
  104.         cp.dwHighLevelCompOffset = 0;
  105.         cp.dwLowLevelCompSize = 0;
  106.         cp.dwLowLevelCompOffset = 0;
  107.         cp.dwDevSpecificSize = 0;
  108.         cp.dwDevSpecificOffset = 0;
  109. }


复制代码
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

8
 
唉!就没有人回答我第三个问题,不过没关系我已经解决了,果然是没有信号的原因。
我把同样的代码放到mobile里面去,在把那个cellular模拟器打开,lineOpen就通过了。

谢谢各位的帮助!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
我也遇到这样的问题,"没有信号的原因"是指没有连接实际的设备(通讯模块或modem),还是没有GSM/GPRS信号的原因?
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

10
 
“放到mobile里面”是指放到mobile的模拟器中,还是实际设备中?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表