SOS!!!为什么收不到载波信号???

Farstart 2001-12-30 06:21:22
我在用MSCOM写一个控制内置MODEM发送数据的东东,拨号、接收已经OK,
但在发送时确出现了一个问题困扰,不知为什么对方自动应答后,GetCommEvent()收到了对方载波,但在调用GetCDHolding()时总是为假,不能向对方发送数据。
请串行通讯方面的大侠们,伸出高手,帮小弟一把,谢谢!!!
顺便问一下通过MSCOM能控制MODEM向对方电话发语音提示吗?怎么做!!!

初使化部分
-----------------
pMainDlg->m_com[m_LineNum].SetDTREnable(Setting.m_DTREnable );
pMainDlg->m_com[m_LineNum].SetRTSEnable(Setting.m_DTREnable );
pMainDlg->m_com[m_LineNum].SetInputMode(Setting.m_inputmode );
pMainDlg->m_com[m_LineNum].SetNullDiscard(Stting.m_NullDiscard );
pMainDlg->m_com[m_LineNum].SetHandshaking( m_Setting.m_handshaking );
settings.Format( "%s,%c,%c,%c", comspeed[m_Setting.m_speed],
paritys[m_Setting.m_paritychk],
databits[m_Setting.m_databit],
stopbits[m_Setting.m_stopbit] );

pMainDlg->m_com[m_LineNum].SetSettings( settings );
pMainDlg->m_com[m_LineNum].SetRThreshold( 1 );
pMainDlg->m_com[m_LineNum].SetSThreshold( 1 );


-------------------------------
//检测对方振铃
RecProc()
{
...
case 2: //RING
  m_Lines[LineNum].SetLed( RedLED, AALED );
  m_Lines[LineNum].SetLed( RedLED, HKLED );
  m_Lines[LineNum].ShowLineMsg( "检测到振铃信号" );
  m_Lines[LineNum].SetLineIO( IO_INCOMING );
  m_Lines[LineNum].m_MonitorTimerID = SetTimer( 10 + LineNum,
20000,NULL );
break;
}
串行事件处理
--------------------------------------
switch ( m_com[LineNum].GetCommEvent() )
{
case comEvSend:
.....
case comEvReceive:
RecPorc();
.....//其中测对方振铃信号
case comEvCD: // Change in Carrier Detect line.
//载波
KillTimer( m_Lines[LineNum].m_MonitorTimerID );
if ( m_com[LineNum].GetCDHolding( ) )//??????????关键之处
{
m_Lines[LineNum].ShowLineMsg( "调制解调器握手结束" );
if ( m_Lines[LineNum].GetLineIO( ) == IO_INCOMING )
{
........
SendFileStart( LineNum );
}
} else
{
if ( m_com[LineNum].GetDSRHolding() )
{
m_Lines[LineNum].SetLed( BlueLED, CDLED );
m_Lines[LineNum].SetLed( BlueLED, AALED );
m_Lines[LineNum].SetLed( BlueLED, HKLED );
m_Lines[LineNum].SetLed( GrayLED, SDLED );
m_Lines[LineNum].SetLed( GrayLED, RDLED );
m_Lines[LineNum].ShowLineMsg( "线路复原(CD)" );
if ( m_Lines[LineNum].GetLineState( ) == LS_SENDDING )
m_Lines[LineNum].m_fo.Close( );
if ( m_Lines[LineNum].GetLineIO() == IO_OUTGOING )
m_Lines[LineNum].ResetOutgoing( );
else
{
m_Lines[LineNum].SetLineState( LS_IDLE );
}
} else
{
m_Lines[LineNum].Reset();
}
}
break;
........
}
...全文
39 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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