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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gprs_impl.cpp

?? PXA270開發板+GPRS
?? CPP
字號:
#include "gprs_impl.h"
#include "gprs.h"

/************************************************************************/
gprs_impl::gprs_impl( QWidget* parent,  const char* name, bool modal, WFlags fl ,int _fd)
    : gprs( parent, name, modal, fl ),fd(_fd)
{
	//system init!
	if(fd!=0)
	{
		Txt_State->insertLine("Serial port already open.",-1);
	}
	isinit=0;
	BRead=0;
        BSend=0;
        BNew=0;
	BInit=0;
	BRing=0;
	initAT();
	InitPic();	
    // signals and slots connections
	
//	QObject::connect( TimerRead, SIGNAL(timeout()), this, SLOT(read_timeout_slot()) );
	QObject::connect(Btn_Close,SIGNAL(clicked () ),this,SLOT(close_slot()));
	QObject::connect(Btn_Open,SIGNAL(clicked () ),this,SLOT(open_slot()));
	QObject::connect(Btn_Send,SIGNAL(clicked () ),this,SLOT(send_slot()));
	QObject::connect(Btn_Call,SIGNAL(clicked () ),this,SLOT(call_slot()));
}

/************************************************************************/
gprs_impl::~gprs_impl()
{

}


/************************************************************************/
void gprs_impl::InitPic()
{
	QString strPicDir="/pic/";
	Btn_Close->setPixmap(QPixmap (strPicDir+"1_exit.png"));
	Btn_Open->setPixmap(QPixmap (strPicDir+"1_open.png"));
	Btn_Call->setPixmap(QPixmap (strPicDir+"1_call.png"));
	Btn_Send->setPixmap(QPixmap (strPicDir+"1_send.png"));
	BackImg->setPixmap(QPixmap (strPicDir+"msm.png"));
}

/************************************************************************/
void gprs_impl::initAT()
{	
	if(isinit==1)//check if init
		return;
	if(fd==0)
	{
		if((fd=MySerial::open_port(fd,2))<0){
               		 Txt_State->insertLine("Open port error",-1);
               		 return;
        	}
		else
			Txt_State->insertLine("Open port success",-1);

	        if((MySerial::set_opt(fd,9600,8,'N',1))<0){
        	        Txt_State->insertLine("Set port error",-1);
                	return;
		}
		else
                	Txt_State->insertLine("Set port success",-1);
	}
		memset(buff,0,sizeof(buff));

		TimerRead = new QTimer;
	        TimerRead->start( 200, FALSE );
		QObject::connect( TimerRead, SIGNAL(timeout()), this, SLOT(read_timeout_slot()) );


		MySerial::nwrite(fd,"AT+CSCA?\r\n",sizeof("AT+CSCA?\r\n"));
		BInit=1;
		read_timeout_slot();
		isinit=1;
}

/************************************************************************/
void gprs_impl::open_slot()
{
	QString s_tmp=Txt_TargetNum->text();
	if(s_tmp=="ALL"||s_tmp=="all")
	{
		MySerial::nwrite(fd,"AT+CMGL=4\r\n",sizeof("AT+CMGL=4\r\n"));
	}
	else if(s_tmp=="NEW"||s_tmp=="new")
	{	
		MySerial::nwrite(fd,"AT+CMGL=0\r\n",sizeof("AT+CMGL=0\r\n"));
	}
	else
		ReadMessage(Txt_TargetNum->text());
}

/************************************************************************/
void gprs_impl::call_slot()
{
	call_impl *w=new call_impl(0,0,0,0,fd);
	w->show();
}

/************************************************************************/
void gprs_impl::close_slot()
{
	close();
	qApp->quit();
//	QMessageBox::information( this, "New call","Do you want to answer?\n","ok","no",0,0,1 );
//	BRead=1;
//	ReadMsg("0011000D91683176116125F0000801064F60597DFF01");
//	ReadMsg("0891683158706100F011000B815129563107F30008AA0c00680065006c006c006f0021");
//	Txt_State->insertLine(PreSendMessage("hello!" , "15926513703","13850716000") ,-1);
}

/************************************************************************/
void gprs_impl::send_slot()
{
	
//	init strServerNumber

	QString strSendMsg=Txt_HostMsg->text();
	QString strMobilephonenumber=Txt_TargetNum->text();
    
	if(strMobilephonenumber.length()!=11)
	{
		QMessageBox::information(this,"information","Moble Phone Number is error!"+strMobilephonenumber);
		return;
    	}
	if(strServerNumber.length()!=11)
   	{
		QMessageBox::information(this,"information","SMS Server Number is error!"+strServerNumber);
		return;
    	}
    
    	if(strSendMsg.isEmpty())
    	{
		QMessageBox::information(this,"information","Message content is empty!"+strSendMsg);
		return;
    	}
	if(fd)
    	{
		strEncodeMsg=PreSendMessage(strSendMsg , strMobilephonenumber,strServerNumber) ;
		BSend=TRUE;
    	}
}

/************************************************************************/
QString gprs_impl::PreSendMessage(QString strSendMsg, QString strPhoneNumber, QString strServerNumber)
{
	char *chMsgHead0="089168";
    	char *charMsgHead1="11000B81";
       
    	char *chMsgTail="0008AA";
    	char *enter="\r\n";
    	char esc=0x1A;    
	
    	strEncodeMsg="";  
    	QString strSendTemp="";
    	if ( fd>0 )
    	{		
	// add the message head first
	strSendTemp=chMsgHead0;	
	// encode the SMS server number 
	strSendTemp+=NumberConversion(strServerNumber);

	strSendTemp+=charMsgHead1;
	
	// encode the mobilephone number 
	strSendTemp+=NumberConversion(strPhoneNumber);
	
	// add the message tail
	strSendTemp+=chMsgTail; 
		
	// encode the message content
	strEncodeMsg=ToUnicode(strSendMsg); 	
		
// get the whole encoded ready sent message data length except for the SMS Center number
	bool ok;
	int Msglen;
	Msglen=strEncodeMsg.mid(0,2).toInt(&ok ,16);    
	Msglen+=14;					
		
	strSendTemp+=strEncodeMsg;	
	strSendTemp+=esc;  			
	strSendTemp+=enter;				
		
	QString sendata=QString("AT+CMGS=%1").arg(Msglen);     
	sendata+=enter;    
	const char *send=sendata.latin1();    
	int len=strlen( send );    		
	MySerial::nwrite( fd, send, len);
    }
    return strSendTemp;
}

/************************************************************************/
QString gprs_impl::NumberConversion(QString strNumber)
{
    QString strTempNumber;
    int length=strNumber.length(); 
    int i;	
    for(i=0;i<length-1;i=i+2)
    {	
	strTempNumber+=strNumber.mid(i+1,1);
	strTempNumber+=strNumber.mid(i,1);
    }
    strTempNumber+="F";
    strTempNumber+=strNumber.mid(i,1);
    return strTempNumber;
}

/************************************************************************/
QString gprs_impl::ToUnicode( QString strSrc )
{	
	const QChar *qchar;
	QChar test;
	QString str0;
	QString strout;
	ushort num;
	qchar=strSrc.unicode();
	int strlength=strSrc.length()*2;
	const char *buffer;
	QString qstrlen;
	qstrlen=qstrlen.setNum(strlength,16);   
	buffer=qstrlen.latin1();	
	if (::strlen(buffer)==2)
	{
		strout=*buffer++;
		strout+=*buffer;
	} 
	else
	{
		strout='0';
		strout+=*buffer;
	}    
	for(int i=0;i<strlength/2;i++)
	{
		test=(QChar)*qchar++;
		num=test.unicode();
		if(num<255)
			strout+="00";	   
		str0=str0.setNum(num,16);
		strout+=str0;
	}  
	return strout;
}


/************************************************************************/
void gprs_impl::read_timeout_slot()
{
	if(fd)
    	{
		if(read(fd,buff,sizeof(buff))!=0)
		{
		       // printf("%s",buff);//for debug
		        Txt_State->insertLine(buff,-1);
		        Txt_State->setCursorPosition(Txt_State->numLines(),0,FALSE);
	       		ReadMsg(QString(buff));
			memset(buff,0,sizeof(buff));
		}
	}	
}

/************************************************************************/
void gprs_impl::ReadMsg(QString strRecv)
{	
	if(BRead)
	{
		BRead=0;
		QString strNum;
		strMsgContent=ProcessMessage(strRecv,strNum);
		Txt_HostMsg->insertLine(strNum);
		Txt_TargetMsg->insertLine(strMsgContent);
		Txt_State->insertLine("read success");   //for debug
	}
	if(BInit)
	{
		int ITmp=strRecv.find("+CSCA: \"+86", false);
		if(ITmp>0 )
		{
	    		BInit=FALSE;
			strServerNumber=strRecv.mid(ITmp+sizeof("+CSCA: \"+86")-1,11);
			Txt_State->insertLine("Init success"+strServerNumber);
			Txt_HostNum->setText(strServerNumber);
		}
		else
			Txt_State->insertLine("Init fail");
	}
	if(BSend)
	{
		BSend=0;
		const char *sendata=strEncodeMsg.latin1();
	 	int len=strlen(sendata);
		if(fd>0)
			MySerial::nwrite( fd,sendata,len );
                Txt_State->insertLine("send success");
		strEncodeMsg="";
	}
	if(strRecv.find("+CMTI",false)>=0)
	{
		int index=strRecv.find(",");		
		QString msgIndex=strRecv.mid(index+1,2);	
		BRead=TRUE;
		Txt_State->insert("New Message arrive\n");
//		BNew=TRUE;		
		ReadMessage(msgIndex);
	}
	if(strRecv.find("RING",false)>=0)
	{
		if(BRing==1)
			return;
		BRing=1;
		if(0==QMessageBox::information( this, "New call","Do you want to answer?\n","ok","no",0,0,1 ))
		{
			MySerial::nwrite( fd,"ATA\r\n",sizeof("ATA\r\n") );
		}
		else
			MySerial::nwrite( fd,"ATH\r\n",sizeof("ATH\r\n") );
		
		BRing=0;
	}
}

/************************************************************************/
void gprs_impl::ReadMessage(QString strMsgIndex)
{
	if(fd>0)
    	{
		BRead=1;
		const char *chCmd;		
		QString strCmdRead="AT+CMGR="+strMsgIndex;
		strCmdRead+="\r\n";		
		chCmd=strCmdRead.latin1();
		int len=::strlen(chCmd);
		MySerial::nwrite( fd, chCmd, len);
    	} 
}

/************************************************************************/
QString gprs_impl::ProcessMessage(QString strMsg,QString &strNum)
{
    char *strdd="Time: "; 
    char *strcontent="Content: ";			
    QString ctrlouttmp;
    QString strupper;
    int n, nPDULength, i, len ;
    QString strData,strSrc,strDes,nType,strPDULength;
    QString strnumber , strdate, strnumtmp, strdatetmp;
    const char *charPDULength;
    QString messagecontent;				

    n = strMsg.findRev(',');			
	
    strPDULength = strMsg.mid(n+1,2);
    charPDULength=strPDULength.latin1();  
    
    nPDULength=(*charPDULength-48)*10;
    nPDULength+=*(charPDULength+1)-48;
    
    // get the TPDU content
    strData = strMsg.mid(n+23,nPDULength*2);			
    // get the mobile phone number
    strnumber=strData.mid(6,14);	//modify 6,12
    // decode the mobile phone number
    len=strnumber.length();
    for(i=0;i<len-2;i=i+2)		
    {
	strnumtmp+=strnumber.mid(i+1,1);
	strnumtmp+=strnumber.mid(i,1);
    }
    strnumtmp+=strnumber.mid(i+1,1);	
	strNum=strnumtmp;		
    // get the date and time
    strdate=strData.mid(24,12);	//22,12
    len=strdate.length();
    // decode the date and time
    for(i=0;i<len;i=i+2)		
    {
	strdatetmp+=strdate.mid(i+1,1);
	strdatetmp+=strdate.mid(i,1);
	if(i<4)
	    strdatetmp+="-";
	if(i==4)
	    strdatetmp+="  ";
	if((i>4)&&(i<10))
	    strdatetmp+=":";
    }	
    // 2. add the decoded date & time into the message content
    messagecontent+=QString( strdd+strdatetmp+"\n" );				
    nType=strData.mid(22,2);//20,2
    // get the content string
    strSrc = strData.mid(40,(nPDULength-19)*2);  	//			
    if(nType.find("00",false)>=0)
	// 7 bits decoding
	strDes=Bit7Decode(strSrc);
    else
	// PDU decoding ( it's what we use in this contest )
	strDes=DecToUnicode(strSrc); 	
    strDes=strDes.lower();
    // 3. add the decoded date & time into the message content
    messagecontent+=QString(strcontent+strDes+"\n");			
   //return strDes;
    return messagecontent;
}

/************************************************************************/
QString gprs_impl::DecToUnicode(QString strSrc)
{
	int strlength;
	QString strMsgtmp,str0;
	bool ok;
	QString strMsgout;
	ushort num;
	strlength=strSrc.length();
	const ushort *data;
	for(int i=0;i<strlength;i=i+4)
	{
	    str0=strSrc.mid(i,4);
	    num=str0.toUShort(&ok,16);
	    data=&num;
	    strMsgtmp=strMsgtmp.setUnicodeCodes(data,1);
	    strMsgout+=strMsgtmp;	
	}
	return strMsgout;
}

/************************************************************************/
QString gprs_impl::Bit7Decode(QString &strSrc)
{
	unsigned char pDst[4096]; 
	char pSrc[4096]; 
	int i, length;	
	int strlength=strSrc.length(); 
	for(i=0;i<strlength;i++) 
	{ 
		pSrc[i]=strSrc.at(i).latin1(); 	
	}	 
	for(i=0;  i<strlength;i=i+2) 
	{ 
		char c[2]; 
		char *p; 
		unsigned long t; 
		c[0]=pSrc[i]; 
		c[1]=pSrc[i+1]; 
		t=strtoul (c,&p,16); 
		pDst[i/2]=t;   
	}	 
	length=GSMDecode7bit(pDst,pSrc,strlength/2);
	QString textout=pSrc; 
	return textout;
}

/************************************************************************/
int gprs_impl::GSMDecode7bit( const unsigned char *pSrc, char *pDst, int nSrcLength )
{
	int nSrc=0;  
	int nDst=0;  
	int nByte=0;  
	unsigned char nLeft=0; 
	while(nSrc<nSrcLength)
	{
	    *pDst = ((*pSrc << nByte) | nLeft) & 0x7f;
	    nLeft = *pSrc >> (7-nByte);	
	    pDst++;
	    nDst++;
	    nByte++;
	    if(nByte == 7)
	    {
		*pDst = nLeft ;
		pDst++;
		nDst++;
		nByte = 0;
		nLeft = 0;
	    }
	    pSrc++;
	    nSrc++;
	}	
	*pDst = 0;
	return nDst; 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青青伊人色综合久久| 国产精品美女久久久久久久久 | 欧美妇女性影城| 亚洲成av人综合在线观看| 91久久香蕉国产日韩欧美9色| 国产精品国产三级国产有无不卡 | 国产一区二区伦理片| 国产视频一区在线观看| 春色校园综合激情亚洲| 中文字幕日本不卡| 91传媒视频在线播放| 亚洲国产成人porn| 26uuu亚洲综合色| 成年人午夜久久久| 亚洲精品亚洲人成人网| 7799精品视频| 国产精品99久久久久久似苏梦涵| 国产精品美女久久久久av爽李琼| 9久草视频在线视频精品| 亚洲丶国产丶欧美一区二区三区| 日韩视频一区二区三区| 国产很黄免费观看久久| 亚洲一二三专区| 日韩美女在线视频| 成人一级视频在线观看| 亚洲电影在线播放| 国产欧美精品国产国产专区 | 国产成人精品网址| 一区二区三区电影在线播| 欧美精品在线一区二区三区| 大美女一区二区三区| 亚洲不卡在线观看| 欧美经典一区二区| 欧美精品免费视频| 99精品桃花视频在线观看| 三级不卡在线观看| 国产精品久久毛片av大全日韩| 欧美视频中文一区二区三区在线观看| 国产一区二区三区国产| 一区二区视频免费在线观看| 久久久蜜桃精品| 精品视频在线免费看| 国产suv精品一区二区6| 丝袜美腿亚洲色图| 中文字幕在线观看不卡| 精品久久久久99| 欧美日韩一区二区电影| 不卡的av网站| 国产乱国产乱300精品| 青青草原综合久久大伊人精品优势| 亚洲国产电影在线观看| 欧美videos大乳护士334| 欧美三级在线播放| 91亚洲永久精品| 国产99久久久国产精品潘金| 人人狠狠综合久久亚洲| 亚洲国产cao| 亚洲黄色片在线观看| 亚洲国产高清aⅴ视频| 久久久久久久网| 日韩欧美国产麻豆| 日韩一区二区免费在线观看| 欧美色图一区二区三区| 色狠狠一区二区三区香蕉| 成人av资源在线观看| 国产成人精品亚洲日本在线桃色| 精品一区二区久久久| 日本欧美一区二区| 日本女优在线视频一区二区| 香蕉加勒比综合久久| 亚洲图片自拍偷拍| 亚洲成a人片在线观看中文| 亚洲午夜国产一区99re久久| 一二三四区精品视频| 亚洲综合色成人| 亚洲国产日产av| 图片区小说区国产精品视频| 日韩有码一区二区三区| 麻豆中文一区二区| 精品一区二区三区香蕉蜜桃| 毛片av中文字幕一区二区| 久久草av在线| 国产成人综合在线观看| 国产aⅴ精品一区二区三区色成熟| 国产精品资源在线| 粉嫩av一区二区三区在线播放 | 欧美一a一片一级一片| 91成人在线观看喷潮| 欧美日韩亚洲综合一区| 欧美高清视频一二三区| 精品国产精品网麻豆系列| 久久久国产精品不卡| 欧美国产国产综合| 亚洲精品美国一| 日本成人在线视频网站| 国产专区欧美精品| 99精品国产热久久91蜜凸| 在线观看视频91| 日韩三区在线观看| 国产日韩欧美综合在线| 国产精品福利一区二区三区| 一区二区三区欧美| 免费成人在线播放| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩大陆在线| 久久综合色天天久久综合图片| 中文成人综合网| 亚洲精品国产成人久久av盗摄 | 亚洲视频免费在线观看| 午夜精彩视频在线观看不卡| 黑人巨大精品欧美一区| av资源站一区| 91精品久久久久久久99蜜桃 | 久久国产精品无码网站| 成人激情免费电影网址| 欧美日产国产精品| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲欧美成人一区二区三区| 免费视频最近日韩| 99免费精品在线| 日韩女优毛片在线| 中文字幕一区二区三区不卡| 青青草国产成人av片免费| 9i在线看片成人免费| 日韩天堂在线观看| 亚洲一区二区高清| 成人黄色网址在线观看| 国产精品久久久久久久久免费相片 | 亚洲日本一区二区三区| 久久福利资源站| 色婷婷av一区二区三区大白胸| 欧美一区二区三区在线电影| 亚洲情趣在线观看| 国产乱色国产精品免费视频| 欧美日韩不卡在线| 亚洲三级在线免费观看| 国产一区二区三区四区五区美女| 欧美乱妇一区二区三区不卡视频| 国产欧美日韩在线视频| 另类综合日韩欧美亚洲| 在线精品视频免费观看| 国产精品视频线看| 久久99精品一区二区三区| 在线看国产日韩| 中文字幕日韩精品一区| 国产福利91精品| 精品国产91洋老外米糕| 亚洲超碰精品一区二区| 91国产丝袜在线播放| 国产精品久久久久影院亚瑟| 国产美女av一区二区三区| 精品国产网站在线观看| 日韩电影在线观看电影| 在线观看视频一区二区| 亚洲精品日产精品乱码不卡| 91在线云播放| 亚洲欧美一区二区视频| www.66久久| 国产精品萝li| 成人激情视频网站| 国产精品国产三级国产aⅴ入口| 欧美性大战久久久久久久| 亚洲精品你懂的| 欧美在线free| 亚洲国产日韩a在线播放性色| 在线看日本不卡| 亚洲va在线va天堂| 欧美人狂配大交3d怪物一区| 亚洲国产精品一区二区www在线| 一本到不卡精品视频在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 成人视屏免费看| 亚洲欧美自拍偷拍| 色哟哟精品一区| 亚洲一区二区五区| 欧美嫩在线观看| 蜜臀a∨国产成人精品| 亚洲精品一区二区三区在线观看| 国内外精品视频| 欧美激情自拍偷拍| 色婷婷av一区二区三区大白胸| 亚洲v中文字幕| 亚洲精品在线观看视频| 国产v综合v亚洲欧| 亚洲综合一区二区精品导航| 欧美美女直播网站| 九九在线精品视频| 国产精品久久看| 欧美乱妇一区二区三区不卡视频| 麻豆高清免费国产一区| 欧美国产一区二区在线观看| 99精品视频在线观看| 日韩中文字幕不卡| 久久精品综合网| 91视视频在线直接观看在线看网页在线看 | 在线观看日韩电影| 免费成人av在线| 国产精品毛片久久久久久久| 欧美日韩免费高清一区色橹橹| 精品午夜一区二区三区在线观看 |