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

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

?? ccd_commcenter.c

?? 串口傳輸文件device端實(shí)例
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
				if(FILE_PATHLEN == commVar.fStep) { 
					if(readcount < sizeof(UInt32)) {
							//包體尚未接收到最小數(shù)據(jù)長(zhǎng)度
							continue;
					}

					//計(jì)算包體的CRC16
					commVar.pcb->cCRC = Add_CRC16(commVar.pcb->cCRC, commVar.szStoreBuffer+commVar.nPotS, sizeof(UInt32));

					//讀取路徑長(zhǎng)度
					commVar.fcb.PathLen = CommCenter_ntohl( CommCenter_strtol(commVar.szStoreBuffer + commVar.nPotS) );
					if(commVar.fcb.PathLen <= 0 || commVar.fcb.PathLen >= MAXPATH_LEN) {//文件路徑長(zhǎng)度字段錯(cuò)誤
							//文件錯(cuò)誤報(bào)告, 處理
							CommCenter_ErrorDealEvent(&commVar, 0x00000006, 0x00000006);
							continue;
					}
#ifdef debug_modul
					sprintf((char *)szOutPutBuff, (char *)"==== COM4: %d %d %d\n", commVar.fcb.PathLen, commVar.nPotS, commVar.nPotE);
					EOS_Write(commVar.deBugfp, szOutPutBuff, StrLen(szOutPutBuff));
#endif
						
					//更新其它數(shù)據(jù)
					commVar.fStep = FILE_PATH;
					commVar.nPotS+= sizeof(UInt32);
					readcount -= sizeof(UInt32);

					//繼續(xù)處理緩沖區(qū)
				} //end 取文件路徑長(zhǎng)度

				//3. 取文件路徑
				if(FILE_PATH == commVar.fStep) { 
					if(readcount < commVar.fcb.PathLen) {
							//包體尚未接收到完整文件路徑信息
							continue;
					}

					//計(jì)算包體的CRC16
					commVar.pcb->cCRC = Add_CRC16(commVar.pcb->cCRC, commVar.szStoreBuffer+commVar.nPotS, commVar.fcb.PathLen);
							
					//更新文件路徑
					StrNCopy(commVar.fcb.Path, commVar.szStoreBuffer + commVar.nPotS, commVar.fcb.PathLen);
#ifdef debug_modul
					sprintf((char *)szOutPutBuff, (char *)"==== PATH: %s %d %d\n", commVar.fcb.Path, commVar.nPotS, commVar.nPotE);
					EOS_Write(commVar.deBugfp, szOutPutBuff, StrLen(szOutPutBuff));
#endif

					//創(chuàng)建可能的目標(biāo)目錄(假定前3個(gè)是盤符, 如C:\)
					MdWithFile(commVar.fcb.Path, commVar.fcb.Path + StrLen((Char *)"C:\\"));

					//打開或創(chuàng)建目標(biāo)文件
					if(0 <=commVar.hFile) EOS_Close(commVar.hFile);
					commVar.hFile = EOS_Open(commVar.fcb.Path, PO_CREAT|PO_TRUNC|PO_BINARY|PO_WRONLY, PS_IWRITE);
					if(0 > commVar.hFile) {
							//打開或創(chuàng)建目標(biāo)文件失敗
							CommCenter_ErrorDealEvent(&commVar, 0x00000005, 0x00000007);
							continue;
					}

					//更新其它數(shù)據(jù)
					commVar.fStep = FILE_LENTH;
					commVar.nPotS+= commVar.fcb.PathLen;
					readcount -= commVar.fcb.PathLen;

					//繼續(xù)處理緩沖區(qū)
				} //end 取文件路徑

				//4. 取文件長(zhǎng)度
				if(FILE_LENTH == commVar.fStep) { 
					if(readcount < sizeof(UInt32)) {
							//包體尚未接收到完整文件路徑信息
							continue;
					}

					//計(jì)算至文件內(nèi)容的CRC16
					commVar.pcb->cCRC = Add_CRC16(commVar.pcb->cCRC, commVar.szStoreBuffer+commVar.nPotS, sizeof(UInt32));

					//更新文件長(zhǎng)度
					commVar.fcb.len = CommCenter_ntohl( CommCenter_strtol(commVar.szStoreBuffer + commVar.nPotS) );
					if(0 >= commVar.fcb.len) {//文件長(zhǎng)度字段錯(cuò)誤
							//文件錯(cuò)誤報(bào)告,處理
							CommCenter_ErrorDealEvent(&commVar, 0x00000006, 0x00000008);
							continue;
					}							
#ifdef debug_modul
					sprintf((char *)szOutPutBuff, (char *)"==== COM6: %d %d %d\n", commVar.fcb.len, commVar.nPotS, commVar.nPotE);
					EOS_Write(commVar.deBugfp, szOutPutBuff, StrLen(szOutPutBuff));
#endif

					//更新相關(guān)數(shù)據(jù)
					commVar.fStep = FILE_DATA;
					commVar.nPotS+= sizeof(UInt32);
					commVar.fcb.WriteLen = 0;
					readcount -= sizeof(UInt32);

					//繼續(xù)處理緩沖區(qū)
				} //end 取文件長(zhǎng)度

				//5. 取文件數(shù)據(jù)
				if(CommCenter_FILEDATA == commVar.nStep) { 
					if(readcount <= 0) {
							//包體尚未接收到最小數(shù)據(jù)長(zhǎng)度
							continue;
					}
						
					if(commVar.fcb.WriteLen < commVar.fcb.len) {
							tmpWcount = min(readcount, commVar.fcb.len - commVar.fcb.WriteLen);

							//計(jì)算當(dāng)前所讀數(shù)據(jù)的CRC16
							commVar.pcb->cCRC = Add_CRC16(commVar.pcb->cCRC, commVar.szStoreBuffer+commVar.nPotS, tmpWcount);
								
							if(tmpWcount != EOS_Write(commVar.hFile, commVar.szStoreBuffer+commVar.nPotS, tmpWcount)) {
								//文件寫入失敗
								CommCenter_ErrorDealEvent(&commVar, 0x00000006, 0x00000009);
								continue;
							}

							readcount -= tmpWcount;
							commVar.fcb.WriteLen += tmpWcount;	//保存當(dāng)前所讀數(shù)據(jù)到文件

							//向父進(jìn)程發(fā)送消息,要求顯示“文件下載進(jìn)度”
							CommCenterThread_Inform(AppRequest_GetFatherPid(), WinGetWindowHwndId(g__winP), CommCenter_FILEDATA, commVar.fcb.nId, commVar.fcb.WriteLen, commVar.fcb.len);

							//匯報(bào)已經(jīng)正確接收并處理完報(bào)文
							CommCenter_ErrorDealEvent(&commVar, 0x00000000, sizeof(CommCenter_PACKETHEADType)+sizeof(UInt32)+sizeof(UInt32)+commVar.fcb.PathLen+sizeof(UInt32)+commVar.fcb.WriteLen);
					}

					//在此, 可以認(rèn)為已經(jīng)處理完所讀的數(shù)據(jù), 更新相關(guān)數(shù)據(jù)
					commVar.nPotS = sizeof(CommCenter_PACKETHEADType);
					commVar.nPotE = sizeof(CommCenter_PACKETHEADType);
							
					if(commVar.fcb.WriteLen >= commVar.fcb.len) { //寫完一個(gè)文件
							if(0 <= commVar.hFile) {
								EOS_Close(commVar.hFile); 
								commVar.hFile = -1;
							}
								
							//校驗(yàn)報(bào)文的CRC16
							if(FALSE == IsValid_CRC16(commVar.pcb->cCRC, commVar.CRC) ) {
								//文件傳輸出錯(cuò)
								CommCenter_ErrorDealEvent(&commVar, 0x00000003, 0x0000000A);
								continue;
							}
								
							//匯報(bào)已經(jīng)正確寫入文件
							CommCenter_ErrorDealEvent(&commVar, 0x00000000, sizeof(CommCenter_PACKETHEADType)+sizeof(UInt32)+sizeof(UInt32)+commVar.fcb.PathLen+sizeof(UInt32)+commVar.fcb.WriteLen);

							//更新數(shù)據(jù)
							commVar.nStat = CommCenter_PACKETHEAD;
							commVar.fStep = FILE_INDEX;
							commVar.nPotS = 0;
							commVar.nPotE = 0;

							if(commVar.fcb.nId >= commVar.FiletotleCount) {
								MemSet(&commVar.fcb, 0, sizeof(CommCenter_FILEINDEXType));
								commVar.nStep = CommCenter_FILEWAIT;
								commVar.FiletotleCount = 0;

								//向父進(jìn)程發(fā)送消息,要求顯示“文件傳輸完畢,進(jìn)入文件傳輸?shù)却隣顟B(tài)”
								CommCenterThread_Inform(AppRequest_GetFatherPid(), WinGetWindowHwndId(g__winP), CommCenter_FILEWAIT, 0, 0, 0);
							}
					} //end if(commVar.fcb.WriteLen >= commVar.fcb.len)
						
				} //end 取文件數(shù)據(jù)
					
			} //end 發(fā)送文件

		} //end 接收?qǐng)?bào)體
	} // end while(FALSE == bExitThread)
	
	if(0 <= commVar.comId) {
		Close(commVar.comId);
		commVar.comId = -1;			
	}
	
	if(0 <= commVar.hFile) {
		EOS_Close(commVar.hFile);
		commVar.hFile = -1;
	}
	
#ifdef debug_modul
	if(0 <= commVar.deBugfp) {
		EOS_Write(commVar.deBugfp, (Char *)"thread end!\n", StrLen((Char *)"thread end!\n"));
		EOS_Close(commVar.deBugfp);
	}
#endif
	return TRUE;
}


////////////////////////////////////////
//  串口下載窗體處理函數(shù)

Boolean CommCenterAppFrmProgressHandleEvent(void *globalVarPtr, WinHandle formP, EventPtr eventP)
{
    //CommCenter_DEMOGVRType		*pVar = (CommCenter_DEMOGVRType *)globalVarPtr;
    Boolean					 handled = FALSE;
	Char					 szTxt[512];	
	LabelType				*pLab_BarHint  = WinGetControlPtr(formP, Com_ID_FrmProgress_BarHint_FrmProgress);	
	RectangleType			 rtCtl;
	Int32 r;

	switch(eventP->eType) {
	case winInitEvent:

		//啟動(dòng)IO線程
		g__winP = formP;

		r = AppRequest_MethodExec((Char *)"Comm_IOType", (Char *)APP_NAME_CDD_COMMCENTER, (Char *)"Comm_IO", NULL, 0);
		
		handled = TRUE;
		break;
		
	case winPaintEvent:
		WinDrawWindow(formP);
		handled = TRUE;
		break;

	case RSPCOM_MSG:
		
		switch(eventP->sParam1){	
		case CommCenter_FILEWAIT://等待文件傳輸
			sprintf((char *)szTxt, (char *)"正在等待文件傳輸...");
			break;

		case CommCenter_FILEREQ://傳輸文件請(qǐng)求
			sprintf((char *)szTxt, (char *)"開始傳輸文件,共%d個(gè)", eventP->lParam3);
			break;

		case CommCenter_FILEDATA://傳輸文件內(nèi)容
			sprintf((char *)szTxt, (char *)"目前傳輸: %d字節(jié)", eventP->lParam3);
			break;
		
		default: break;	
		}
		
		//更新文件下載進(jìn)度說明
		if(0 != StrLen(szTxt)) WinSetControlCaption(formP, Com_ID_FrmProgress_TxtHint_FrmProgress, szTxt, FALSE);
		
		if(CommCenter_FILEDATA == eventP->sParam1) {
			//更新文件下載進(jìn)度條
			CtlGetBounds(pLab_BarHint, &rtCtl);
			rtCtl.extent.X = (Int16)(162*eventP->lParam3/eventP->lParam4);
			CtlSetBounds(pLab_BarHint, &rtCtl);
			WinDrawControl(formP, Com_ID_FrmProgress_BarHint_FrmProgress);
			
			if(eventP->lParam3 == eventP->lParam4) {
				CtlGetBounds(pLab_BarHint, &rtCtl);
				rtCtl.extent.X = 0;
				CtlSetBounds(pLab_BarHint, &rtCtl);
				WinDrawControl(formP, Com_ID_FrmProgress_Field1114);
			}
		}
				
		handled = TRUE;
		break;
		
	case ctlSelectEvent:
		if(Com_ID_FrmProgress_Close_FrmProgress == eventP->sParam1) {
			g__winP = NULL;
			WinCloseWindow(formP);
			AppSendStopEvent();
			handled = TRUE;
		}
		break;
	}
	
	return handled;
}

//////////////////////////////////////////////////////////////////////////
// 串口下載窗體處理函數(shù)
//
Boolean App_CCD_CommCenterAppHandleEvent(void *globalVarPtr, EventPtr eventP)
{
    //CommCenter_DEMOGVRType * pVar = (CommCenter_DEMOGVRType *)globalVarPtr;
    WinHandle formP;
    Boolean handled = FALSE;
    
    if (eventP->eType == frmOpenEvent)
	{
        formP = WinGetWindowPtrByResId(eventP->sParam1);
        WinSetActiveWindow(formP);
        switch (eventP->sParam1)
		{
		case Com_ID_FrmProgress:
			WinSetEventHandlerEx (formP, CommCenterAppFrmProgressHandleEvent);
			break;
		
		default:   break;
        }
        handled = TRUE;
    }
    return handled;
}

//////////////////////////////////////////////////////////////////////////
// 串口下載應(yīng)用入口
//
void CCD_CommCenterAppMain(UInt32 cmd, void *cmdPBP)
{
    CommCenter_DEMOGVRType *pVar;
	Int32 r;

    switch(cmd)
    {
    case SYSTEM_START_REGISTER: // 終端操作系統(tǒng)啟動(dòng)時(shí)進(jìn)入
    case SYSTEM_RESTART_REGISTER:  //終端操作系統(tǒng)重新啟動(dòng)時(shí)進(jìn)入		
		r = AppRegister_DataTypeAdd((Char *)"Comm_IOType", NULL);
		r = AppRegister_MethodAdd((Char *)"Comm_IOType", (Char *)"Comm_IO", 2, METHOD_THREAD);		
		break;

	case 2:			
		CommCenter_IOThread(); //線程處理過程
		break;

	case 0: // 在終端操作界面點(diǎn)擊圖標(biāo)時(shí)進(jìn)入
        //應(yīng)用進(jìn)行本功能的初始化工作
		pVar = mcMalloc(sizeof(CommCenter_DEMOGVRType));
		MemSet(pVar, 0, sizeof(CommCenter_DEMOGVRType));

		//初始化并注冊(cè)GUI應(yīng)用,設(shè)置應(yīng)用消息處理函數(shù)和主窗口ID
        WM_GuiAppInit(pVar, App_CCD_CommCenterAppHandleEvent, Com_ID_FrmProgress);

        //缺省的事件處理循環(huán),一般來說,不要更改
        AppDefaultEventLoop();

		//注銷GUI應(yīng)用,釋放占用的資源
		WM_GuiAppStop();

        //應(yīng)用進(jìn)行本功能的資源釋放工作
		mcFree(pVar);

        break;
	
	default:
		break;
    };
    
    return;	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品vⅰdeose4hd| 欧美精品色综合| 亚洲一区二区视频在线观看| 日韩精品在线看片z| 色欧美日韩亚洲| 精品无人区卡一卡二卡三乱码免费卡| 国产精品国产三级国产普通话蜜臀| 91精品国产91综合久久蜜臀| 99精品一区二区三区| 麻豆中文一区二区| 午夜不卡av在线| 国产精品久久久久影院亚瑟| 精品国产伦一区二区三区观看方式| 在线看日本不卡| 不卡av电影在线播放| 久久99国产精品久久99| 艳妇臀荡乳欲伦亚洲一区| 国产精品久久久久精k8| 久久久99精品久久| 日韩免费视频一区| 欧美美女网站色| 在线精品亚洲一区二区不卡| 99久久久久久| 国产成人午夜电影网| 久久99国产精品尤物| 日本中文字幕不卡| 视频在线在亚洲| 午夜久久福利影院| 一区二区三区欧美日| **欧美大码日韩| 国产精品久久久久毛片软件| 国产色综合久久| 久久久www成人免费毛片麻豆| 欧美成人女星排名| 日韩视频免费观看高清完整版在线观看| 欧美综合在线视频| 91视频91自| 91蜜桃免费观看视频| 99免费精品在线观看| 成人一级片网址| 丁香一区二区三区| 成人免费福利片| 成人av动漫网站| 懂色av一区二区夜夜嗨| 成人国产在线观看| 一本在线高清不卡dvd| 91视频国产观看| 欧美在线观看一二区| 欧美日韩国产大片| 欧美一卡二卡在线观看| 欧美电影免费观看完整版| 久久婷婷成人综合色| 国产日产欧美一区| 亚洲天堂成人网| 亚洲一级电影视频| 日韩成人一区二区| 久久疯狂做爰流白浆xx| 国产一区欧美一区| 成人久久久精品乱码一区二区三区| 国产91丝袜在线播放| 99久久精品情趣| 在线观看一区不卡| 91精品久久久久久久99蜜桃| 精品久久一区二区三区| 中文字幕不卡的av| 一区二区三区四区不卡在线| 亚洲成年人影院| 久久99国产精品久久| 成人精品高清在线| 精品视频1区2区| 日韩视频一区在线观看| 久久精品亚洲麻豆av一区二区| 国产精品美女一区二区| 亚洲国产va精品久久久不卡综合| 蜜臀av性久久久久蜜臀av麻豆| 国产成人亚洲综合a∨婷婷| 色婷婷亚洲精品| 欧美本精品男人aⅴ天堂| 国产精品福利电影一区二区三区四区 | 蜜臀av在线播放一区二区三区| 国内欧美视频一区二区| 国产成人精品一区二| 欧美午夜一区二区三区免费大片| 欧美va在线播放| 一区二区三区中文免费| 精油按摩中文字幕久久| 日本乱人伦一区| 精品成人佐山爱一区二区| 亚洲视频一区二区在线观看| 麻豆91在线观看| 99久久久无码国产精品| 精品国产a毛片| 亚洲综合色在线| 国产剧情一区二区三区| 精品视频一区三区九区| 精品国产免费视频| 亚洲精品欧美专区| 国产乱人伦偷精品视频不卡| 欧美日本一区二区| 国产精品九色蝌蚪自拍| 黑人巨大精品欧美黑白配亚洲| 91麻豆免费视频| 久久影院午夜片一区| 午夜影院久久久| 91视频观看免费| 国产精品情趣视频| 国产一区亚洲一区| 日韩欧美在线网站| 亚洲不卡av一区二区三区| 91色视频在线| 国产视频一区二区在线| 男人的j进女人的j一区| 欧美影片第一页| 亚洲美女电影在线| 成人av第一页| 国产亚洲精品久| 精品一区二区久久| 91精品国产手机| 亚洲图片一区二区| 欧洲精品视频在线观看| 亚洲欧美激情小说另类| 成人高清免费在线播放| 亚洲国产精品成人久久综合一区| 国产在线精品不卡| 精品国产一区二区三区av性色 | 日本一区二区成人| 国产乱子伦视频一区二区三区 | 午夜影视日本亚洲欧洲精品| 91免费在线视频观看| 欧美国产精品v| 国产成人在线看| 国产偷国产偷亚洲高清人白洁| 国内精品第一页| 精品三级av在线| 精品一区二区综合| 精品欧美一区二区三区精品久久| 免费在线看成人av| 日韩一区国产二区欧美三区| 日本美女一区二区三区视频| 日韩一级大片在线| 美女www一区二区| 精品日韩欧美在线| 黑人巨大精品欧美黑白配亚洲 | 一区二区三区中文在线观看| 色综合久久66| 亚洲国产中文字幕| 欧美日韩视频在线一区二区| 亚洲最色的网站| 欧美欧美欧美欧美首页| 天堂在线一区二区| 欧美大黄免费观看| 国产盗摄女厕一区二区三区 | 亚洲视频在线观看三级| 色婷婷激情综合| 亚洲电影一区二区三区| 欧美精品九九99久久| 老汉av免费一区二区三区| 精品精品国产高清一毛片一天堂| 国产一区二区伦理片| 国产精品区一区二区三| 日本韩国欧美三级| 天堂一区二区在线免费观看| 欧美一卡2卡3卡4卡| 国产剧情在线观看一区二区| 一区精品在线播放| 欧美高清视频不卡网| 精品综合免费视频观看| 国产精品免费免费| 欧美日韩精品欧美日韩精品| 精品在线播放免费| 国产精品久久久久久福利一牛影视 | 不卡视频在线看| 性欧美大战久久久久久久久| 精品国产一区二区在线观看| 成人动漫一区二区| 亚洲成人av电影在线| 久久久91精品国产一区二区精品| 色婷婷狠狠综合| 麻豆精品视频在线观看视频| 中文字幕第一区综合| 欧美欧美午夜aⅴ在线观看| 国产精品资源在线观看| 亚洲精品久久久久久国产精华液| 欧美一激情一区二区三区| 成人性视频网站| 麻豆一区二区在线| 亚洲视频 欧洲视频| 日韩欧美一区二区视频| 成人黄色免费短视频| 蜜桃久久久久久久| 亚洲综合久久久久| 久久一区二区三区国产精品| 欧洲视频一区二区| 国产精品一级在线| 日韩av在线发布| 亚洲黄色性网站| 国产欧美一区二区精品性色超碰| 91精品国产综合久久婷婷香蕉| 国产白丝网站精品污在线入口| 午夜精彩视频在线观看不卡|