亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ysatmodem.cpp

?? 使用VC++編寫
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	lstrcpy(buffer,"ATS0=");
	sprintf(temp,"%d",iRingCount);
	lstrcat(buffer,temp);

	//send 設(shè)置自動(dòng)應(yīng)答
	SendAT(buffer);
	ReadComm((PBYTE)buffer,6,&length,WAITTIME);
	buffer[length]='\0';
	i=CheckString(buffer);
	if(i!=CODE_OK)
	{
		SetLastError(_TEXT("設(shè)置自動(dòng)應(yīng)答模式失敗"));
		//SetLastError(_TEXT("Set autoreply mode fail"));
		return FALSE;
	}
#endif

	//clear comm buffer
	if(!Purge(PURGE_ALL))
	{
		return FALSE;
	}

	TRACE("Com%d 初始化Modem成功 \n",m_nPort);
	//TRACE("Com%d InitModem Success \n",m_nPort);
	ChangeMode(MODE_COMMAND);
	
	if(!SetEvent(EV_DSR|EV_RING|EV_RLSD))//設(shè)備就續(xù)狀態(tài)改變性號(hào),現(xiàn)在已經(jīng)就續(xù),如果收到這個(gè)信號(hào)表示modem出問題了
	{
		SetLastError(_TEXT("Set comm event error"));
		return FALSE;
	}
	AfxBeginThread(DetectModemThread,this);
	ResetError();
	m_bInit=TRUE;
	return TRUE;
}

/*************************2001.10.30 ycat *********************************************
BOOL CYsATModem::SendAT(LPCSTR strCmd,BOOL AddReturn)

PURPOSE: 發(fā)送AT命令

PARAMETERS:
	strCmd:要發(fā)送的AT命令
	AddReturn:指明是否要在AT命令后面加上回車

RETURN VALUE:
    如果操作成功,返回TRUE,如果失敗返回FALSE

COMMENTS: 
	1)大多數(shù)AT命令要加上回車符,才能運(yùn)行,但+++卻不同,不要加回車
	所以不支持+++命令
**********************************************************************/
BOOL CYsATModem::SendAT(LPCSTR strCmd,BOOL AddReturn)
{
	//在傳送data模式
	if(m_nMode==MODE_DATA)
	{
		SetLastError(_TEXT("Send AT Command error"));
		return FALSE;
	}

	TCHAR buffer[50];
	lstrcpy(buffer,strCmd);

	lstrcat(buffer,"\r\n");//只有+++,可以省\n

	TRACE("send AT command %s\n",buffer);
//	DWORD dw;

//	WaitEvent(&dw,0);

	//如果strCmd中間含有值為0的字符,將會(huì)產(chǎn)生不良后果
	if(WriteComm((PBYTE)buffer,strlen(buffer))==1)
		return TRUE;

	SetLastError(_TEXT("Send AT Command error"));
	return FALSE;
}
/*
掛斷連接,進(jìn)入MODE_COMMAND狀態(tài)

后面被取消的程序掛斷連接,有時(shí)不能很好運(yùn)行
*/
BOOL CYsATModem::HangUp()
{
	if(m_bTestMode)return TRUE;

	if(m_nMode==MODE_UNINITIALIZE) return TRUE;

	//如果正在連接,發(fā)送任意字符,則會(huì)中斷
	if(m_nMode==MODE_CONNECTING)
	{
		SendAT(CMD_AT);
		Sleep(500);
	}

	if(!Purge(PURGE_ALL)) return FALSE;
	if(!Clear(PURGE_ALL)) return FALSE;

	if(m_nMode==MODE_COMMAND) return TRUE;
	if(m_nMode==MODE_UNMODEM) return TRUE;


	TCHAR buffer[50];
	DWORD length=0;
	
	if(m_Thread)
	{
		if(WAIT_OBJECT_0!=WaitForSingleObject(m_Thread->m_hThread,10000))
		{
			TerminateThread(m_Thread->m_hThread,-11);
		}
		delete m_Thread;
		m_Thread=NULL;
	}

	if(m_nMode!=MODE_DATA) return TRUE;
	ResetEvent(m_hConnected);

	ChangeMode(MODE_COMMAND);	

	if(!Purge(PURGE_ALL))
		return FALSE;//comm error

	Sleep(1000);

	//change mode to MODE_COMMAND
	//+++ 不用換行
	
	TCHAR strSend[]=_TEXT("+++");
	if(1!=WriteComm((PBYTE)strSend,3)) return FALSE;//comm error
	TRACE(_TEXT("Send +++ \n"));
	int i;
	DWORD dwReaded;

	if(-1==ReadComm((PBYTE)buffer,6,&dwReaded,WAITADDADDADDTIME))
		return FALSE;//comm error

	buffer[dwReaded]='\0';

	i=CheckString(buffer);
	if(i!=CODE_OK)
	{
		SetLastError(_TEXT("發(fā)送測(cè)試信號(hào),但是未收到返回值"));
		//SetLastError(_TEXT("send +++ but cann't recept OK"));xa
		TRACE("1  %s\n",buffer);
		return HangUp2();
	}

	//hangup command
	SendAT(CMD_ATH0);	

	if(-1==ReadComm((PBYTE)buffer,6,&dwReaded,WAITATHTIME)) return FALSE;
	buffer[dwReaded]='\0';

	i=CheckString(buffer);
	//wait for OK
	if(i!=CODE_OK)
	{
		SetLastError(_TEXT("發(fā)送測(cè)試信號(hào),但是未收到返回值"));
		//SetLastError(_TEXT("send ATH0 but cann't recept OK"));
		TRACE("2  %s\n",buffer);
		return HangUp2();
	}

	TRACE("成功掛斷!!!\n");
	//TRACE("hang up OK!!!\n");
	ChangeMode(MODE_COMMAND);
	return TRUE;
}

/*************************2001.10.30 ycat *********************************************
FUNCTION: BOOL CYsATModem::Clear(DWORD dwType)

PURPOSE: 清除串口

PARAMETERS:
		nType的值及說明,可組合起來用
		nType=PURGE_TXABORT Terminates all outstanding
				overlapped write operations and returns 
				immediately, even if the write operations 
				have not been completed. 
		nType=PURGE_RXABORT Terminates all outstanding 
				overlapped read operations and returns 
				immediately, even if the read operations
				have not been completed. 
		nType=PURGE_TXCLEAR Clears the output buffer 
				(if the device driver has one). 
		nType=PURGE_RXCLEAR Clears the input buffer 
				(if the device driver has one). 

RETURN VALUE:
    如果操作成功,返回TRUE,如果失敗返回FALSE

COMMENTS: 
	1)讀緩沖區(qū)實(shí)際上是m_pQueue里的緩沖區(qū)
	2)PURGE_RXABORT不起作用
**********************************************************************/
BOOL CYsATModem::Clear(DWORD dwType)
{
	if(m_bTestMode)return Purge(dwType);

	if(dwType&PURGE_RXCLEAR)
	{
		if(!m_pQueue->Clear()) 
		{
			SetLastError(_T("In clear() clear queue error"));
			return FALSE;
		}
	}

	if(dwType&PURGE_TXCLEAR)
		if(!Purge(PURGE_TXCLEAR))
		{
			SetLastError(_T("In clear() clear tx buffer error"));
			return FALSE;
		}
	if(dwType&PURGE_TXABORT)
		if(!Purge(PURGE_TXABORT))
		{
			SetLastError(_T("In clear() clear tx abort error"));
			return FALSE;
		}
	return TRUE;
}
/*************************2001.10.30 ycat *********************************************
FUNCTION: int CYsATModem::Write(LPCSTR lpstrWrite,DWORD dwCount)

PURPOSE: 寫數(shù)據(jù)

PARAMETERS:
		lpstrWrite:要寫的字符串
		dwCount: 字符串的長(zhǎng)度
RETURN VALUE:
    返回1為正常
    返回-1為失敗
    返回-4為斷線
COMMENTS: 
**********************************************************************/
int CYsATModem::Write(LPCSTR lpstrWrite,DWORD dwCount)
{
	if(!m_bTestMode)
	{
		if(m_nMode==MODE_COMMAND) return -4;
		if(m_nMode!=MODE_DATA) return -1;
	}
	int nRet=CYsComm::WriteComm((PBYTE)lpstrWrite,dwCount);
	if(nRet==1) return 1;
	return -1;
}
/*************************2001.10.30 ycat *********************************************
FUNCTION: int CYsATModem::Read(LPTSTR lpstrRead,DWORD dwCount,
			DWORD* dwHaveReaded,DWORD nTimeOut)

PURPOSE: 讀數(shù)據(jù)

PARAMETERS:
		lpstrRead:		放讀出字符串的緩沖區(qū)
		dwCount:		緩沖區(qū)的長(zhǎng)度
		dwHaveReaded:	實(shí)際讀到的字符數(shù)
		nTimeOut:		超時(shí)
RETURN VALUE:
    返回1為正常
    返回-1為失敗
	返回-2為超時(shí)
    返回-4為斷線
COMMENTS: 
**********************************************************************/
int CYsATModem::Read(LPTSTR lpstrRead,DWORD dwCount,
			DWORD* dwHaveReaded,DWORD nTimeOut)
{
	if(m_bTestMode)
	{
		return CYsComm::ReadComm((PBYTE)lpstrRead,dwCount,dwHaveReaded,nTimeOut);
	}
	
	if(m_nMode==MODE_COMMAND) return -4;
	if(m_nMode!=MODE_DATA) return -1;

	int nRet;
	DWORD dwTimeAfter;
	DWORD dwTimeUsed;
	DWORD dwTimeBefore;

	for(DWORD i=0;i<dwCount;i++)
	{
		dwTimeBefore=GetTickCount();
		if(!m_pQueue->Get((PBYTE)(lpstrRead+i),nTimeOut))
		{
			//TRACE("Read2 Timeout %ld \n",nTimeOut);
			nRet=-2;//超時(shí)
			goto Exit;
		}
		dwTimeAfter=GetTickCount();
		dwTimeUsed=dwTimeAfter-dwTimeBefore;

		//斷線
		if(m_nMode==MODE_COMMAND)
		{
			nRet=-3;
			goto Exit;
		}

		if(dwTimeUsed>nTimeOut)
		{
			if(i<dwCount)
			{
				nRet=-2;//TimeOut
				goto Exit;
			}
			else 
			{
				nRet=1;
				goto Exit;
			}
		}
		//計(jì)算剩下的時(shí)間
		nTimeOut-=dwTimeUsed;
	}
	nRet=1;
Exit:
	*dwHaveReaded=i;
	return nRet;
}

/*************************2001.10.30 ycat *********************************************
FUNCTION: int CYsATModem::CheckString(LPCTSTR strIn,BOOL bSendMessage)

PURPOSE: 查找strIn中是否含有AT命令返回的字符串

PARAMETERS:
		 strIn:要查找的字符串
		 bSendMessage:指明是否要發(fā)送消息給窗口

RETURN VALUE:
		返回AT命令返回字符串的序號(hào),(CODE_CANNTFIND)-1表示沒找到

COMMENTS: 不支持中間含有'\0'的字符串,要改進(jìn)
**********************************************************************/
int CYsATModem::CheckString(LPCTSTR strIn,BOOL bSendMessage)
{
	CString strTemp;
	strTemp.Format("%s",strIn);
	for(int i=0;i<ECHO_COUNT;i++)
	{
		if(-1!=strTemp.Find(pstrCmdString[i]))
		{
			if(!bSendMessage&&i==1) return i;
			return i;
		}
	}
	return -1;
}
/*
#define MODE_UNINITIALIZE	    1//未初始化狀態(tài)
#define MODE_UNMODEM			5
#define MODE_COMMAND			10
#define MODE_DIALING			15
#define MODE_WAITRING			20
#define MODE_CONNECTING			25
#define MODE_DATA				30*/
//返回當(dāng)前狀態(tài)
int CYsATModem::GetState()
{
	if(m_bTestMode)return MODE_DATA;
	return m_nMode;
}

//返回寫緩沖區(qū)內(nèi)有多少個(gè)字符
DWORD CYsATModem::GetReadBufferCount()
{
	if(m_bTestMode)
	{
		DWORD dwLength;
		CYsComm::GetBufferCount(TYPE_WRITE,&dwLength);
		return dwLength;
	}
	return m_pQueue->GetCount();
}


//return state describe string 
CString CYsATModem::GetStateDesc()
{
	if(m_bTestMode) return "測(cè)試狀態(tài)";
	switch(m_nMode)
	{
	case MODE_UNINITIALIZE:
		return _TEXT("串口有問題");
	case MODE_UNMODEM:
		return _TEXT("Modem有問題");
	case MODE_COMMAND:
		return _TEXT("可以撥號(hào)");
	case MODE_CONNECTING:
		return _TEXT("正在建立連接");
	case MODE_DATA:
		return _TEXT("遠(yuǎn)程Modem連接");//(如不成功,返回2狀態(tài))
	default:
		return _TEXT("未知狀態(tài)!");
	}
}
//如果HangUp()不成功,只好調(diào)用HangUp2()了
BOOL CYsATModem::HangUp2()
{
	if(m_bTestMode)return TRUE;
	TRACE("\n\n In Hangup 2\n\n");
	ChangeMode(MODE_UNINITIALIZE);
	Sleep(1000);
	return InitModem(m_nPort,m_iBaud,m_nRingCount,m_hWnd);
}

void CYsATModem::ChangeMode(int newMode)
{
	if(m_nMode!=newMode)
	{
		if(m_hWnd)
			PostMessage(m_hWnd,WM_MODEM_CHANGE,newMode,m_nPort);
		m_nMode=newMode;
		TRACE("Mode Change =%d \n",m_nMode);

	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本系列欧美系列| 国产一区欧美二区| 国产网红主播福利一区二区| 欧美精品xxxxbbbb| 777午夜精品免费视频| 欧美日韩aaaaaa| 欧美伊人久久大香线蕉综合69| 国产在线不卡一区| 麻豆国产91在线播放| 国产综合色在线视频区| 国精产品一区一区三区mba桃花| 亚洲柠檬福利资源导航| 日韩一区二区三区电影在线观看| 91精品一区二区三区久久久久久| 欧美一二三区在线| 久久久久久久综合狠狠综合| 中文字幕av在线一区二区三区| 精品国精品国产尤物美女| 精品久久一二三区| 国产精品超碰97尤物18| 亚洲欧洲制服丝袜| 青草av.久久免费一区| 激情综合色丁香一区二区| 国产成人免费在线观看不卡| 欧美日韩美少妇| 欧美军同video69gay| 欧美v日韩v国产v| 欧美电影免费观看高清完整版| 日韩午夜在线观看| 国产精品国产三级国产| 一区二区三区精品视频| 九九久久精品视频| 色婷婷激情久久| 欧美一区二区免费视频| 国产精品久久久久久妇女6080| 亚洲高清在线精品| 国产一区二区在线免费观看| 91日韩精品一区| 精品日韩av一区二区| 亚洲精品国产一区二区精华液 | 国产一区二区伦理| 在线观看亚洲专区| 人人超碰91尤物精品国产| 成人禁用看黄a在线| 91精品国产综合久久香蕉的特点| 国产精品美女久久久久高潮| 日韩电影免费在线观看网站| av午夜一区麻豆| 精品成人私密视频| 日本欧美一区二区三区| 99精品视频在线观看免费| 精品国产露脸精彩对白| 亚洲3atv精品一区二区三区| av成人免费在线观看| 日韩一级在线观看| 亚洲国产日韩av| 一本一道综合狠狠老| 国产午夜精品久久| 久久国产日韩欧美精品| 欧美日韩mp4| 亚洲综合在线五月| av中文字幕不卡| 国产精品毛片a∨一区二区三区| 精品一区二区三区在线观看| 亚洲成人综合在线| 欧美色图片你懂的| 麻豆精品国产传媒mv男同| 欧美亚洲综合一区| 亚洲午夜av在线| 91麻豆6部合集magnet| 亚洲欧美中日韩| 91美女蜜桃在线| 久久天堂av综合合色蜜桃网| 亚洲综合一区在线| 欧美日本精品一区二区三区| 亚洲线精品一区二区三区八戒| 91视视频在线观看入口直接观看www| 中文字幕精品三区| 成人黄色片在线观看| 蜜芽一区二区三区| 在线观看中文字幕不卡| 亚洲国产成人精品视频| 欧美日韩亚洲综合| 午夜a成v人精品| 日韩亚洲欧美中文三级| 理论电影国产精品| 国产午夜亚洲精品理论片色戒| 九九视频精品免费| 国产精品免费av| 一本到高清视频免费精品| 亚洲午夜三级在线| 欧美精品一级二级三级| 蜜桃视频免费观看一区| 免播放器亚洲一区| 久久久不卡影院| 色综合天天在线| 日韩电影免费在线| 国产日韩欧美一区二区三区乱码| 国产精品一线二线三线| 中文字幕色av一区二区三区| 懂色av一区二区三区蜜臀| 亚洲六月丁香色婷婷综合久久 | 成人黄色软件下载| 亚洲一区二区五区| 欧美一级精品在线| 成人夜色视频网站在线观看| 一区二区三区视频在线看| 亚洲福利视频一区二区| 精品久久久久一区二区国产| 成人午夜伦理影院| 视频在线观看一区| 欧美国产一区二区| 欧美人牲a欧美精品| 久久综合精品国产一区二区三区 | 国产欧美一区二区精品性| 色综合欧美在线| 久久精品国产久精国产爱| 亚洲国产精品高清| 日韩免费视频一区二区| 99r国产精品| 国产在线国偷精品产拍免费yy| 一区二区三区成人| 国产偷国产偷亚洲高清人白洁 | 日韩欧美黄色影院| 色综合一个色综合亚洲| 国产馆精品极品| 亚欧色一区w666天堂| 亚洲视频在线观看三级| 日韩视频一区二区在线观看| 在线亚洲一区二区| www.亚洲色图| 国产精品综合一区二区三区| 日本韩国精品一区二区在线观看| 韩国欧美国产1区| 免费观看在线色综合| 一区二区三区日韩欧美| 中文字幕欧美三区| 久久午夜羞羞影院免费观看| 欧美一级艳片视频免费观看| 欧美性色欧美a在线播放| 成人app在线| 国产成人免费av在线| 日韩福利视频网| 日韩国产精品久久久久久亚洲| 国产精品天美传媒| 91精品婷婷国产综合久久性色| 在线观看三级视频欧美| 色欧美乱欧美15图片| 国产乱子伦一区二区三区国色天香 | 亚洲免费成人av| 中文字幕一区二区三中文字幕| 精品美女一区二区| 精品国产乱码久久久久久久久| 欧美日韩综合一区| 51精品久久久久久久蜜臀| 色综合天天做天天爱| 91国在线观看| 欧美日韩电影在线播放| 69久久夜色精品国产69蝌蚪网| 欧美亚洲禁片免费| 欧美日韩国产片| 91麻豆精品91久久久久同性| 日韩精品一区二区三区四区| 555www色欧美视频| 亚洲电影一区二区| 午夜精品福利久久久| 日本va欧美va精品| 五月婷婷另类国产| 久久97超碰色| 成人av动漫网站| 欧美日韩亚洲综合一区| 日韩一区二区在线观看视频| 日韩欧美二区三区| 日韩欧美国产综合| 中文字幕av一区二区三区| 最新高清无码专区| 亚洲一区二区欧美| 免费久久精品视频| 成人永久免费视频| 欧洲一区二区三区在线| 97超碰欧美中文字幕| 日本久久电影网| 精品日韩99亚洲| 亚洲精品国产无天堂网2021| 亚洲成人av一区| 国产成a人亚洲精| 欧美日韩一区不卡| 欧美韩国日本综合| 天天爽夜夜爽夜夜爽精品视频| 国产在线精品一区二区不卡了| 成人精品小蝌蚪| 欧美一区二区精品久久911| 国产欧美一区二区三区在线看蜜臀 | 日韩一区二区免费电影| 欧美一区二区三区免费| 国产欧美日韩激情| 亚洲精品欧美在线| 国产成a人亚洲精| 欧美一区二区三区视频在线 | 91蜜桃婷婷狠狠久久综合9色|