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

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

?? gprs_modem.c

?? C語言源代碼及相關資料
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************Copyright (c)**************************************************
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/



#include  "config.h"




/*********************************************************
** Function name: UART2_read
** Descriptions:  UART2的讀串口函數
** Input:         無
** Output:        讀到串口數據的長度 
*************************************************************/
OS_EVENT *poeUart0ReviceSem;  
OS_EVENT *poeUart1ReviceSem;  
OS_EVENT *poeUart2ReviceSem;  
OS_EVENT *poeUart3ReviceSem;  
uint8 UART_read(uint32 uiId,uint8 *uiReviceBuf,uint16	*	puiNum)
{
    
   //INT8U iUartErr;
   uint16 shGetNData = 0;
  
   OS_EVENT *pevent;
   
   switch (uiId)
   {
	     case UART0: //讀串口0的數據    										
		 pevent= poeUart0ReviceSem;
		 break;
		 case UART1://讀串口1的數據
		 pevent= poeUart1ReviceSem;
		 break;
		 case UART2://讀串口2的數據
		 pevent= poeUart2ReviceSem;
		 break;
		 case UART3://讀串口3的數據
		 pevent= poeUart3ReviceSem;
		 break;
	  
	} 
	
	//OSSemPend(pevent, 0, &iUartErr);            //  請求信號量      
   	
  	//*puiNum = uartFifoStatus(uiId, RX_FIFO);                //  查看收到多少數據   
   	
  	//uartRead(uiId, uiReviceBuf, *puiNum, NULL);	 
  	
  	shGetNData = uartFifoStatus(uiId, RX_FIFO);
  	shGetNData = uartRead(uiId, uiReviceBuf, shGetNData, NULL);	 
  	//shGetNData = uartRead(uiId, uiReviceBuf, 128, NULL);	 
  	*puiNum = shGetNData;
  	
   	return TRUE;  
}

/*********************************************************
** Function name: Send_data
** Descriptions:  發送數據格式,將需要發送的數據加上AT+AIPW=1,"XXXXXXXXXX"指令
** Input:            data,        需要發送的數據
 					uint32 uiId
** Output:       
*************************************************************/
uint8 Send_data(uint8	* data,uint16	datalen,uint16 * puiNum)
{
	 
	  char * szs="AT+AIPW=1,\"";
	  char * sgs="\"\r\0";
	  if(data[0]==0xff&&data[1]==0xff)
	  {
	  	return	FALSE;
	  }
	  if(data[0]==0x00&&data[1]==0x00)
	  {
	  	return	FALSE;
	  }
	  memmove(data+strlen(szs),data,*puiNum);
	  memmove(data,szs,strlen(szs));
	  memmove(data+strlen(szs)+*puiNum,sgs,strlen(sgs));	
	  *puiNum=*puiNum+strlen(szs)+strlen(sgs);
	  if((*puiNum)>datalen)	
	  	return	FALSE;
	  else
	  	memset(data+*puiNum,0,datalen-*puiNum);
	  
	  return TRUE;
  
  
}



/*********************************************************
** Function name: (uint32 uiId,char * GPRS_data)
** Descriptions:  讀取上位機回復GPRS數據信息,對其進行解包
** Input:           char data,        需要發送的數據
 					uint32 uiId
** Output:        GPRS_data
*************************************************************/
#if 1
#include "atcmdParser.h"


// New verison: 2009.05.11 \, Chad
uint8	RING_COU=0;	//ring筧羘Ω計
//uint8	 LoadUart2(uint32 uiId,uint8	* GPRS_data,uint16 *	puiNum)
uint8	 GPRSLoadData(uint32 uiId,uint8	* GPRS_data,uint16 *	puiNum, unsigned char cGetType)
{
char gw_szUartBuffer[700];
char gw_szOutBuffer[700];
   char * str=",\"";
// Chad
   //char * str1="\"\r\n";
   char * str1="\"\r";
   char *	p=NULL;
   char *	p1=NULL;
  
#if 0
		// 0: Not get match response, 1: has get match response
		unsigned char nRtnStatus = 0 ;
#endif
		
		unsigned char fHasGetResp = 0; 
		unsigned short nRtnParserByte = 0;
//		unsigned short nGetFixedBufSize = 128;		
		unsigned short nDisplayIndex = 0;
		
		// Save original total free buffer size
		int nInputTotalBufSize = *puiNum;
		int nHasParserBytes = 0;
		int nHasRevBytes = 0;
		
		unsigned short shDlyTime = 0;
		unsigned short shTimeout = 10*10; // 0.05 seconds * 10 = 0.5 seconds
		unsigned short iLoopidx=0;
		unsigned short iMaxidx=0;
		
		// parameters for Uart2 transfer data
		struct agsm_rcv_transparas struSendRCVUartParas;
		
		unsigned char nDispBgEdMsg = 0;
		unsigned char nNeedProcessRsp = 0;
		
//		sprintf(gw_szUartBuffer,"\r\n++ LoadUart: begin get message ++\r\n");
//		uartWrite(UART3,(uint8	*)gw_szUartBuffer,strlen(gw_szUartBuffer),NULL);
		
		funProc_ParserRspInit(); // Init Parser state
		do
		{
			// We need to reduce the UAT read critical section time
//			if ( (*puiNum)>nGetFixedBufSize ) 
//				*puiNum = nGetFixedBufSize;
			if ( cGetType==0 || cGetType==2) {
				// cGetType==0: default mdoe, read all data until no incoming data
				// cGetType==2: Flush data and not parser GPRS data
				UART_read( UART2, (GPRS_data+nHasRevBytes), puiNum);
			} else {
				// cGetType==1 
				*puiNum = uartRead(UART2, (GPRS_data+nHasRevBytes), 1, NULL);	 
			}
			if ( (*puiNum > 0) || (nHasParserBytes < nHasRevBytes) ) {
// Chad add: display debug information
#if 1
				if ( nDispBgEdMsg==0 ) {
					nDispBgEdMsg = 1;
					sprintf(gw_szUartBuffer,"\r\n++ GPRS: begin get message ++\r\n");
//					uartWrite(UART3,(uint8	*)gw_szUartBuffer,strlen(gw_szUartBuffer),NULL);
					nDisplayIndex = strlen( gw_szUartBuffer );
				}
				
				if ( *puiNum > 0 ) {
					iLoopidx = 0;
#if 0
					gw_szUartBuffer[nDisplayIndex+0]='\r';
					gw_szUartBuffer[nDisplayIndex+1]='\n';
					for ( iLoopidx=2; iLoopidx<12; iLoopidx++) {
						gw_szUartBuffer[nDisplayIndex+iLoopidx]='=';
					} // end of for ( iLoopidx=0; iLoopidx<10; iLoopidx++
					gw_szUartBuffer[nDisplayIndex+iLoopidx]='\r'; iLoopidx++;
					gw_szUartBuffer[nDisplayIndex+iLoopidx]='\n'; iLoopidx++;
#endif
					memcpy(gw_szUartBuffer+nDisplayIndex+iLoopidx, GPRS_data+nHasRevBytes, *puiNum);
#if 0
					gw_szUartBuffer[nDisplayIndex+(*puiNum)+iLoopidx]='\r'; iLoopidx++;
					gw_szUartBuffer[nDisplayIndex+(*puiNum)+iLoopidx]='\n'; iLoopidx++;
					iMaxidx = iLoopidx+10;
					for ( ; iLoopidx<iMaxidx; iLoopidx++) {
						gw_szUartBuffer[nDisplayIndex+(*puiNum)+iLoopidx]='=';
					} // end of for ( iLoopidx=0; iLoopidx<10; iLoopidx++
					gw_szUartBuffer[nDisplayIndex+(*puiNum)+iLoopidx]='\r'; iLoopidx++;
					gw_szUartBuffer[nDisplayIndex+(*puiNum)+iLoopidx]='\n'; iLoopidx++;
#endif					
					gw_szUartBuffer[nDisplayIndex+(*puiNum)+iLoopidx]='\0';
					nDisplayIndex = strlen(gw_szUartBuffer);
					//uartWrite(UART3,GPRS_data+nHasRevBytes,(*puiNum)+iLoopidx,NULL); 	// output debug messasge to UART3
//					uartWrite(UART3,(unsigned char *)gw_szUartBuffer,nDisplayIndex+(*puiNum)+iLoopidx,NULL); 	// output debug messasge to UART3
				}
#endif // #if 1 or 0

				// Update buffer size variable
				if ( *puiNum > 0 ) {
					// Update new parameters
					nHasRevBytes += *puiNum;	// Add new receive bytes count
					*puiNum = nInputTotalBufSize - nHasRevBytes;	// Update new free Buffer Size
				} else {
					// else if ( *puiNum <= 0 )
					*puiNum = nInputTotalBufSize - nHasRevBytes;	// Update new free Buffer Size
				} // end of if ( *puiNum > 0 )

				if ( cGetType==0 || cGetType==1 ) {
					// cGetType==0: default mdoe, read all data until no incoming data
					// set some input parameters
					struSendRCVUartParas.pRcvUartBufData = ( GPRS_data + nHasParserBytes );
					struSendRCVUartParas.shRcvUartBufLen = nHasRevBytes - nHasParserBytes;
					struSendRCVUartParas.cRepMode = 0;		// o: default mode
			
					// get some output result
					struSendRCVUartParas.shHasParsedUartBufIndex = 0;
					struSendRCVUartParas.cParsRspTypeStatus = 0;
					struSendRCVUartParas.shBackNChar = 0;
	
					nRtnParserByte = funPro_ParserRspMain( &struSendRCVUartParas );
					
					// Check if we have back N character to parser again..
					if ( struSendRCVUartParas.shHasParsedUartBufIndex==0 ) {
						if ( struSendRCVUartParas.shBackNChar > 0 ) {
							if ( nHasParserBytes >= struSendRCVUartParas.shBackNChar ) {
								nHasParserBytes -= struSendRCVUartParas.shBackNChar;
							} else {
								// Can not go back to original start postion
								// We have find out some other way to solve this issue
								nHasParserBytes = 0;
							} // end of if ( nHasParserBytes >= struSendRCVUartParas.shBackNChar )
						} // end of if ( struSendRCVUartParas.shBackNChar > 0 )
					// end of if ( struSendRCVUartParas.shHasParsedUartBufIndex==0 )
					} else if ( struSendRCVUartParas.shHasParsedUartBufIndex > 0 ) {
						nHasParserBytes += struSendRCVUartParas.shHasParsedUartBufIndex;
					} // end of if ( struSendRCVUartParas.shHasParsedUartBufIndex > 0 )
	
					if ( struSendRCVUartParas.cParsRspTypeStatus == 1 ) {
#if 0						
						unsigned char *pGSMDataBuf;
						unsigned short shGSMDataLen=0;
#endif
						// We have get valid incoming data, no matter that 
						// we should already know or not. Just only pre-porcessing it.
						//if ( gw_nRCVState_RF_MS >= 0 ) {
							// PLUS Respn\onse: CMTI, CPIN, CSQ, CMGR, CMGL, AIPA, etc
							fHasGetResp = 1;
							nNeedProcessRsp++;
						//} // end of if ( gw_nRCVState_RF_MS > 0 )
#if 0
						pGSMDataBuf = struSendRCVUartParas.pRcvUartBufData;
						shGSMDataLen = struSendRCVUartParas.shHasParsedUartBufIndex;
						
						sprintf(gw_szOutBuffer,"\r\n++ Get Rsp sentencs: (%d:%d) ++\r\n", pGSMDataBuf, shGSMDataLen);
						//uartWrite(UART3,(uint8	*)gw_szOutBuffer,strlen(gw_szOutBuffer),NULL);
						__DBG2_printf1(gw_szOutBuffer);
						
						// Parser completely and get some valid incoming message
						switch (gw_nRCVState_RF_MS) {
							case 0: // RCV_STARP_PLUS_UNKNOW
								break;
							case 1: //RCV_STARP_PLUS_READY:
								break;
							case 2: //RCV_STARP_PLUS_OK:
								break;
							case 3: //RCV_STARP_PLUS_ERROR:
								break;									
							case 4: //RCV_STARP_PLUS_CLIP:
								if((p=strstr((char *)pGSMDataBuf,"+CLIP"))!=NULL)
									MotormanLoadingOrExit(pGSMDataBuf, &shGSMDataLen);	//駕駛員登陸或退出
								break;
							case 5: //RCV_STARP_PLUS_CPIN:
								break;
							case 6: //RCV_STARP_PLUS_CSQ:
								if((p=strstr((char *)pGSMDataBuf,"+CSQ: "))!=NULL)
								{
									char temp[2];
									memset(temp,0,sizeof(temp));
									p+=strlen("+CSQ: ");
									if((*(p+1)>=0x30)&&(*(p+1)<=0x39))
									{
										temp[0]=*p;
										temp[1]=*(p+1);
									}
									else
										temp[0]=*p;
									CSQVal=(uint8)atoi(temp);
								}
								break;
							case 7: //RCV_STARP_PLUS_CMGF:
								break;
							case 8: //RCV_STARP_PLUS_CMTI:
								{
									char 	strAT[30];
									char 	*	str="\r\nAT+CMGR=";
									memset(strAT,0,sizeof(strAT));
									if((p=strstr((char *)pGSMDataBuf,"\","))!=NULL)
									{
										//取短信標號
										char *	p2=NULL;
										p+=strlen("\",");
										if((p2=strstr(p,"\r\n"))!=NULL)
										{
											memset(MsgNum,0,sizeof(MsgNum));
											memcpy(MsgNum,p,p2-p);
											
											strcat(strAT,str);
											memcpy(strAT+strlen(str),p,p2-p);
											strcat(strAT,"\r\n");
											uartWrite(UART2,(uint8	*)("\r\nAT+CMGF=1\r\n\0"),strlen("\r\nAT+CMGF=1\r\n\0"),NULL);
											OSTimeDlyHMSM(0,0,0,300);
											uartWrite(UART2,(uint8	*)strAT,strlen(strAT),NULL); 
										}
									}
								}							
								break;
							case 9: //RCV_STARP_PLUS_CMGR:
								if((p=strstr((char *)pGSMDataBuf,"+CMGR"))!=NULL)
									MsgWatchOrSet(pGSMDataBuf, &shGSMDataLen);	//手機調度及自定義手機查詢設置
								break;
							case 10: //RCV_STARP_PLUS_CMGL:
								break;
							case 11: //RCV_STARP_PLUS_CMGS:
								break;
							case 12: //RCV_STARP_PLUS_CMGS_SENDMODE:
								break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合99re88久久爱| 久久你懂得1024| 色94色欧美sute亚洲线路一ni | 伦理电影国产精品| 蜜臀av性久久久久蜜臀aⅴ| 日韩中文字幕一区二区三区| 亚洲mv在线观看| 视频一区免费在线观看| 日韩影院精彩在线| 久久精品国产精品亚洲综合| 精品一区二区久久| 国产一区二区按摩在线观看| 国产精品一区二区男女羞羞无遮挡| 国产精品亚洲视频| 成人av一区二区三区| 91在线视频观看| 欧美优质美女网站| 欧美日本在线一区| www成人在线观看| 中文成人av在线| 洋洋成人永久网站入口| 天天射综合影视| 国产主播一区二区三区| a在线播放不卡| 欧美日本在线看| 99re热这里只有精品视频| 在线观看日韩av先锋影音电影院| 欧美高清激情brazzers| 2020日本不卡一区二区视频| 中文字幕不卡在线播放| 一区二区三区四区av| 免费在线观看不卡| 成人美女视频在线看| 欧美色网一区二区| 精品国产91亚洲一区二区三区婷婷| 国产欧美一区二区在线| 亚洲国产一区二区三区| 久久99蜜桃精品| aaa亚洲精品| 正在播放一区二区| 欧美国产日本视频| 亚洲香肠在线观看| 国产精品一级在线| 色欲综合视频天天天| 欧美不卡一区二区三区四区| 中文字幕日韩精品一区| 秋霞av亚洲一区二区三| av动漫一区二区| 欧美videos中文字幕| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 777久久久精品| 中文字幕精品综合| 天天av天天翘天天综合网| 高清在线观看日韩| 欧美剧情电影在线观看完整版免费励志电影| 成人在线一区二区三区| 欧美日韩在线观看一区二区| 久久伊99综合婷婷久久伊| 亚洲一区在线视频观看| 大桥未久av一区二区三区中文| 欧美日韩极品在线观看一区| 国产精品久久免费看| 免费一级片91| 欧美人狂配大交3d怪物一区| 国产精品三级av| 精品亚洲成av人在线观看| 欧美色成人综合| 国产精品欧美一级免费| 日韩不卡免费视频| 色噜噜偷拍精品综合在线| 国产色91在线| 久久www免费人成看片高清| 欧美日韩在线免费视频| 亚洲天堂2014| 春色校园综合激情亚洲| 精品国产精品网麻豆系列| 亚洲成人av在线电影| 91性感美女视频| 国产午夜一区二区三区| 美女视频网站久久| 亚洲h在线观看| 懂色一区二区三区免费观看| 久草在线在线精品观看| 欧美视频中文字幕| 1024成人网色www| 国产高清在线观看免费不卡| 欧美一级日韩一级| 丝袜美腿一区二区三区| 欧美亚男人的天堂| 亚洲少妇屁股交4| 99精品偷自拍| 国产精品女同互慰在线看| 国产一区二区三区最好精华液 | 国产精品免费网站在线观看| 狠狠色综合色综合网络| 日韩一卡二卡三卡| 丝袜美腿亚洲一区| 91精品国产综合久久香蕉的特点 | 欧美三级在线播放| 夜夜爽夜夜爽精品视频| 色哟哟在线观看一区二区三区| 成人免费在线观看入口| av在线不卡电影| 国产精品传媒视频| 91视频你懂的| 亚洲乱码中文字幕| 91成人在线观看喷潮| 一区二区三区不卡视频| 久久日一线二线三线suv| 日本在线不卡视频| 欧美va亚洲va在线观看蝴蝶网| 久久婷婷色综合| 一区二区三区在线不卡| 91黄色激情网站| 一区二区不卡在线视频 午夜欧美不卡在| 91亚洲精品一区二区乱码| 亚洲美女淫视频| 欧美图区在线视频| 全国精品久久少妇| 亚洲精品在线电影| 高清不卡在线观看| 国产精品久久精品日日| 在线看国产一区| 日韩av中文字幕一区二区 | 亚洲国产高清aⅴ视频| 懂色av一区二区在线播放| 自拍视频在线观看一区二区| 欧美色视频在线| 黑人巨大精品欧美一区| 国产亚洲视频系列| 欧美性极品少妇| 精品一区二区影视| 国产精品乱人伦一区二区| 欧洲一区二区av| 另类欧美日韩国产在线| 欧美激情在线看| 欧美色欧美亚洲另类二区| 久久婷婷成人综合色| 久久久久9999亚洲精品| 91在线云播放| 天天操天天干天天综合网| 久久久电影一区二区三区| 色老头久久综合| 精品夜夜嗨av一区二区三区| 日本一区二区三区国色天香| 欧美亚洲动漫另类| 国产福利精品一区二区| 亚洲国产精品影院| 国产视频一区在线播放| 欧美伊人久久久久久午夜久久久久| 日本 国产 欧美色综合| 亚洲同性gay激情无套| 欧美一卡二卡在线| 成人aa视频在线观看| 日本aⅴ免费视频一区二区三区 | 亚洲1区2区3区视频| 久久久精品2019中文字幕之3| 日本精品一区二区三区高清| 韩国在线一区二区| 亚洲国产一区二区a毛片| 中文字幕va一区二区三区| 欧美美女bb生活片| 97国产一区二区| 国产一区二区精品久久99| 亚洲成人动漫av| 亚洲男人的天堂av| 久久网站最新地址| 欧美一级爆毛片| 欧美体内she精高潮| 波多野结衣中文字幕一区二区三区 | 国产精品女主播在线观看| 日韩欧美高清一区| 欧美性猛交xxxx黑人交| av一区二区三区黑人| 激情久久五月天| 日韩成人一级片| 一区二区三区欧美激情| 欧美极品少妇xxxxⅹ高跟鞋| 欧美一卡二卡在线| 欧美日韩国产高清一区| 91丝袜美腿高跟国产极品老师| 韩日欧美一区二区三区| 蜜乳av一区二区| 午夜电影网一区| 亚洲一区在线观看网站| 国产精品对白交换视频| 国产欧美日韩久久| 国产亚洲一区二区三区四区 | 亚洲欧美二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 日韩视频一区二区| 91 com成人网| 91精品国产综合久久久久久久 | 在线欧美小视频| 91蝌蚪porny九色| 99麻豆久久久国产精品免费| 国产 欧美在线| gogogo免费视频观看亚洲一| 成人avav影音| 99久久精品情趣|