如何在程序中检测对方摘机。

tinderman 2003-04-03 03:37:48
用Modem向电话拔号,如何检测对方摘机。
...全文
77 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjb8000 2003-04-04
  • 打赏
  • 举报
回复
载波事件可以检测,猫在启动、接收到对方摘机、对方挂机时都有载波信号产生,如果收到震令铃后再收到载波事件代表与对方连通!!
hjb8000 2003-04-04
  • 打赏
  • 举报
回复
其实也不难,不过下面的程序使用C++BUIDER写的,大致流程:
打开串口,设置串口响应事件时必须设置DCD响应事件
if ( !SetCommState(FhCom, &dcb) ||
!SetCommMask(FhCom, EV_RXCHAR |
//EV_BREAK |
//EV_CTS |
//EV_DSR |
//EV_ERR |
//EV_RING |
EV_TXEMPTY |
//EV_RXFLAG |
EV_RLSD ) ||

在检察串口事件WaitCommEvent(CommHandle, &dwEventMask, &eOverLapped);
判断dwEventMask事件中是否有DCD事件,如果有就给主线程中发消息,在该消息中处理即可
void __fastcall TCommThread::Execute()
{
DWORD dwEventMask;
while(true) {
dwEventMask = 0;
WaitCommEvent(CommHandle, &dwEventMask, &eOverLapped);
ClearCommError(CommHandle, &ErrWord, &comstat);
WaitForSingleObject(eOverLapped.hEvent, INFINITE);
FBytesInQue = comstat.cbInQue;
FBytesOutQue = comstat.cbOutQue;
if ( dwEventMask & EV_TXEMPTY ) { // Êä³ö»º³åÇø¿Õ
//PostMessageToThread( Owner->ThreadID, WM_OUTBUFFEREMPTY, 0 ,0L );
PostMessageToThread( Owner->DataHandleThread->ThreadID, WM_OUTBUFFEREMPTY, 0 ,0L );
}
if ( ( dwEventMask & EV_RXCHAR ) && CanInterrupt &&
( FBytesInQue >= FRThreshold ) ) { // ÊäÈ뻺³åÇø½ÓÊÕµ½Ò»×Ö·û
CanInterrupt = false;
//PostMessageToThread( Owner->ThreadID, WM_OVERRTHRESHOLD,0,0);
PostMessageToThread( Owner->DataHandleThread->ThreadID, WM_OVERRTHRESHOLD,0,0);
}
if ( (dwEventMask & EV_RLSD )||
(dwEventMask & EV_BREAK )||
(dwEventMask & EV_CTS )||
(dwEventMask & EV_DSR )||
(dwEventMask & EV_ERR )||
(dwEventMask & EV_RING )||
(dwEventMask & EV_RXFLAG ) )
{
PostMessageToThread( Owner->DataHandleThread->ThreadID, WM_PHONERING,dwEventMask,0); //ÕýÔÚÕðÁå
}
} // while
}
qsfsea 2003-04-04
  • 打赏
  • 举报
回复
研究一下,thanks!

qsfsea@163.net
tinderman 2003-04-04
  • 打赏
  • 举报
回复
那就更好了,是贴上来大家共享,还是发到我的邮箱:tindersman@163.com
ccinoandjht 2003-04-04
  • 打赏
  • 举报
回复
我有源代码,要吗?
最近我也在做这个,摘机是可以判断了,就是声音效果不佳,最后Boss让我放弃了,
我们公司最后决定用语音卡来实现这个功能!
tinderman 2003-04-04
  • 打赏
  • 举报
回复
To hjb8000(北极熊):多谢指教,不过我是个beginner.不知如何检测。
qsfsea 2003-04-03
  • 打赏
  • 举报
回复
猫一般都不作回铃检测,所以,这个很难
tinderman 2003-04-03
  • 打赏
  • 举报
回复
To: Wally_wu(韦利) ,如何检测呢?
Wally_wu 2003-04-03
  • 打赏
  • 举报
回复
理论上根据返回的错误码可以检测对方摘机
tinderman 2003-04-03
  • 打赏
  • 举报
回复
真的没办法了吗?各位高手帮帮我啊!
qsfsea 2003-04-03
  • 打赏
  • 举报
回复
对了,有个方法,录音,然后分析波形,有点麻烦
qsfsea 2003-04-03
  • 打赏
  • 举报
回复
检测不了,别费力了!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧