我有一modem接在PC串口上,定期向外拨号,请问用TAPI怎么实现,最好能给出VC源码, 到http://codeguru.com/上找tapi_dialout这个C++类吧,如果找不到的话,告诉我你的地址,我发一个给你。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sans(sans): 我也要 [email protected] 我下载了这个类,用如下方式调用, CTapiLine m_tapiLine;m_tapiLine.Create(m_hWnd);m_tapiLine.DialCall("196");但我的猫没有一点反应,望sans(sans) 给予解答,不胜感激! 在你程序的头文件中加入如下代码:#include "TapiLine.h"CTapiLine m_tapi;在头文件的MESSAGE_MAP中加入: afx_msg int OnConnect(WPARAM wParam,LPARAM lParam); afx_msg int OnDisConnect(WPARAM wParam,LPARAM lParam); afx_msg int OnReplay(WPARAM wParam,LPARAM lParam); afx_msg int OnStatus(WPARAM wParam,LPARAM lParam);在CPP文件中的MESSAGE_MAP中加入: ON_MESSAGE(WM_TAPI_CONNECT,OnConnect) ON_MESSAGE(WM_TAPI_DISCONNECT,OnDisConnect) ON_MESSAGE(WM_TAPI_LINE_REPLY,OnReplay) ON_MESSAGE(WM_TAPI_STATUS,OnStatus)初始化时使用如下代码:m_tapi.Create( m_hWnd );if( m_tapi.DialCall( "163" ) < 0 ){ MessageBox("拨号失败。"); return;}于是你就可以在下面的几个函数中获得信息(xxx根据你的软件而定,可以是对话框类等):int xxx::OnConnect(WPARAM wParam,LPARAM lParam){ HANDLE hComm = (HANDLE)lParam; DWORD dwSize; COMSTAT comStat; DWORD dwError; // 清除接收缓冲区 ClearCommError( hComm, &dwError, &comStat ); ReadFile( hComm, m_szTemp, comStat.cbInQue, &dwSize, NULL ); //清除接收缓冲区 strcpy( m_szTemp, "UPDATEFILE" ); if( WriteFile( hComm, m_szTemp, 10, &dwSize, NULL ) == 0 ) {_ERROR_: Message( "线路发生错误,请重新发送..." ); goto _END_; } if( ReadFile( hComm, m_szTemp, 10, &dwSize, NULL ) == 0 ) { goto _ERROR_; }............. Message("发送完成..."); m_tapi.HangupCall(); return 0;}int xxx::OnDisConnect(WPARAM wParam,LPARAM lParam){ return 0;}int xxx::OnReplay(WPARAM wParam,LPARAM lParam){ return 0;}int xxx::OnStatus(WPARAM wParam,LPARAM lParam){ Message(m_tapi.GetTapiStatus()); return 0;}其中Message函数是用来显示提示信息的,可以如下:void xxx::Message( char * szMessage) { if(m_MESSAGE.GetCount()>1000) { m_MESSAGE.DeleteString(0); } int c = m_MESSAGE.GetCount(); m_MESSAGE.InsertString(c,szMessage); m_MESSAGE.SetCurSel( c );}m_MESSAGE是一个LISTBOX控件。 把LINECALLPRIVILEGE_OWNER换为LINECALLPRIVILEGE_MONITOR + LINECALLPRIVILEGE_OWNER 你试试看 老兄啊,你会不会用TAPI拨号先?会的话,定时拨就可以了。我有个例子。 to Ashura(阿修罗) 我现在做一个2台计算机之间用modem进行数据传输,希望给于指点 倒!你在剽窃我的创意!不过我7月就做好了,mail呢? [email protected][email protected]谢谢Ashura(阿修罗) to Ashura(阿修罗)留下你的联系方式我们可以联系一下我的QQ2831626 to Ashura(阿修罗) 请给我一份![email protected][email protected] static控件背景透明 连接数据时的内存溢出问题---急 高分求性能监视工具,能监视统计线程或函数的cpu占用率和内存使用率等 怎么自动改变窗口大小 DZYMZ DLL中使用ADO的问题,大家帮忙看看 关于GPS通信的问题 如何显示AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp )中的位图 在vc++里用api要不要做什么声明? 初鸟的问题? 大侠请留步! function object与重载()有什么区别? 英语好的兄台请进
我也要
[email protected]
CTapiLine m_tapiLine;
m_tapiLine.Create(m_hWnd);
m_tapiLine.DialCall("196");但我的猫没有一点反应,望sans(sans) 给予解答,不胜感激!
#include "TapiLine.h"CTapiLine m_tapi;在头文件的MESSAGE_MAP中加入:
afx_msg int OnConnect(WPARAM wParam,LPARAM lParam);
afx_msg int OnDisConnect(WPARAM wParam,LPARAM lParam);
afx_msg int OnReplay(WPARAM wParam,LPARAM lParam);
afx_msg int OnStatus(WPARAM wParam,LPARAM lParam);在CPP文件中的MESSAGE_MAP中加入:
ON_MESSAGE(WM_TAPI_CONNECT,OnConnect)
ON_MESSAGE(WM_TAPI_DISCONNECT,OnDisConnect)
ON_MESSAGE(WM_TAPI_LINE_REPLY,OnReplay)
ON_MESSAGE(WM_TAPI_STATUS,OnStatus)初始化时使用如下代码:
m_tapi.Create( m_hWnd );
if( m_tapi.DialCall( "163" ) < 0 )
{
MessageBox("拨号失败。");
return;
}于是你就可以在下面的几个函数中获得信息(xxx根据你的软件而定,可以是对话框类等):int xxx::OnConnect(WPARAM wParam,LPARAM lParam)
{
HANDLE hComm = (HANDLE)lParam;
DWORD dwSize;
COMSTAT comStat;
DWORD dwError; // 清除接收缓冲区
ClearCommError( hComm, &dwError, &comStat );
ReadFile( hComm, m_szTemp, comStat.cbInQue, &dwSize, NULL ); //清除接收缓冲区 strcpy( m_szTemp, "UPDATEFILE" );
if( WriteFile( hComm, m_szTemp, 10, &dwSize, NULL ) == 0 )
{
_ERROR_:
Message( "线路发生错误,请重新发送..." );
goto _END_;
}
if( ReadFile( hComm, m_szTemp, 10, &dwSize, NULL ) == 0 ) { goto _ERROR_; }............. Message("发送完成..."); m_tapi.HangupCall();
return 0;
}int xxx::OnDisConnect(WPARAM wParam,LPARAM lParam)
{
return 0;
}int xxx::OnReplay(WPARAM wParam,LPARAM lParam)
{
return 0;
}int xxx::OnStatus(WPARAM wParam,LPARAM lParam)
{
Message(m_tapi.GetTapiStatus());
return 0;
}其中Message函数是用来显示提示信息的,可以如下:void xxx::Message( char * szMessage)
{
if(m_MESSAGE.GetCount()>1000)
{
m_MESSAGE.DeleteString(0);
} int c = m_MESSAGE.GetCount();
m_MESSAGE.InsertString(c,szMessage);
m_MESSAGE.SetCurSel( c );
}
m_MESSAGE是一个LISTBOX控件。
LINECALLPRIVILEGE_MONITOR + LINECALLPRIVILEGE_OWNER
你试试看
我有个例子。
我现在做一个2台计算机之间用modem进行数据传输,希望给于指点
不过我7月就做好了,mail呢?
[email protected]
谢谢Ashura(阿修罗)
留下你的联系方式我们可以联系一下
我的QQ2831626
[email protected]