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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? pc2plcview.cpp

?? VisualC實(shí)踐與提高——串口通信與工程應(yīng)用篇代碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
		{
			blnError=true;
			break;
		}

	}
	if (blnError)//若blnError被置1,說(shuō)明通信存在故障,則退出本次操作
	{
		myEdit.SetSel(1000000,1000000);
		strDis="";
		strDis+="   通信錯(cuò)誤\15\12\15\12";
		strDis.MakeUpper();
		myEdit.ReplaceSel(strDis);
		Beep(1000,50);
		blnError=false;
		return;
	}
	//數(shù)據(jù)已經(jīng)讀回,并且已經(jīng)校驗(yàn)正確
	myWByte[0]=6;                          //回應(yīng)ACK
	dataWLen=1;
	myEdit.SetSel(1000000,1000000);
	strDis="";
	strDis+="<-- [ACK]\15\12";
	strDis.MakeUpper();
	myEdit.ReplaceSel(strDis);
	intWrite=0;
	if (!myfuncWrite())
	{
		myEdit.SetSel(1000000,1000000);
		strDis="";
		strDis+="   通信錯(cuò)誤\15\12\15\12";
		myEdit.ReplaceSel(strDis);
		Beep(1000,50);
		return;
	}
	myEdit.SetSel(1000000,1000000);
	strDis="";
	strDis+="   接收完畢!\15\12\15\12";
	myEdit.ReplaceSel(strDis);           //顯示成功信息
	Beep(1000,50);
	
}

int CPC2PLCView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CEditView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	CEdit& myEdit=this->GetEditCtrl( );
	myEdit.SetReadOnly (true);          //將顯示區(qū)域設(shè)為只讀
	hWnd=GetSafeHwnd();                 //獲取當(dāng)前窗口的句柄
	blnOpened=false;
	return 0;
}

//*****************************
//****讀線程函數(shù)****************
//*****************************
DWORD  ThreadProcRead(LPVOID pParam)
{
	
	CString myStr;
	DWORD dwRes;
	DWORD dwRead;                      //實(shí)際讀出的字節(jié)數(shù)
	intRead=0;
	Rol.hEvent=CreateEvent(NULL,       //創(chuàng)建Rol的hEvent成員為無(wú)信號(hào)狀態(tài)
			TRUE, 
			FALSE, 
			NULL);
	if (Rol.hEvent == NULL)
	{
		AfxMessageBox("hEvent空");
		intRead=1;
         return -1;
	}
	if (ReadFile(hCom,               //串口句柄
			&myRByte,                //存放讀取數(shù)據(jù)
			dataRLen,                //欲讀取的字節(jié)數(shù)
			NULL,
			&Rol))                   //指向創(chuàng)建hCom時(shí)的Rol的指針
	{
		intRead=2;

         //在這里加入處理已讀取數(shù)據(jù)的代碼,已讀取數(shù)據(jù)存放在myRByte數(shù)組中。
	}
	else
	{
		dwRes = WaitForSingleObject(Rol.hEvent, 
				2000);              //設(shè)置2秒的超時(shí)
		switch(dwRes)
		{
		case WAIT_OBJECT_0:
			 if (!GetOverlappedResult(hCom, 
					&Rol, 
					&dwRead,        //實(shí)際讀出的字節(jié)數(shù)
					TRUE))          //TRUE表示直到操作完成該函數(shù)才返回
			 {   
				 //操作失敗,可以使用GetLastError()函數(shù)獲取錯(cuò)誤信息。
				intRead=1;

			}
			else
			{
			    //操作成功完成,數(shù)據(jù)讀出,并存放到myRByte數(shù)組中。
                //在這里加入處理數(shù)據(jù)的代碼
				intRead=2;
			 }
			 break;
		case WAIT_TIMEOUT:
			//讀操作失敗,原因是讀超時(shí)。
			intRead=1;
			break;
		default:
			 //這里可以加入默認(rèn)情況下的處理代碼。
			 intRead=1;
			 break;
		}
	}
	CloseHandle(Rol.hEvent);
	return 0;
}

//*****************************
//****寫(xiě)線程函數(shù)****************
//*****************************
DWORD  ThreadProcWrite(LPVOID pParam)
{
	CString myStr;
	DWORD dwRes;
	DWORD dwWrite;
	intWrite=0;
	Wol.Internal=0;                //設(shè)置OVERLAPPED結(jié)構(gòu)Wol
	Wol.InternalHigh=0;
	Wol.Offset=0;
	Wol.OffsetHigh=0;
	Wol.hEvent=CreateEvent(NULL,   //創(chuàng)建Wol的hEvent成員為無(wú)信號(hào)狀態(tài)
         TRUE,
         FALSE,
         NULL);
	if (Wol.hEvent == NULL)
	{
		AfxMessageBox("hEvent空");
		intWrite=1;
         return -1;
	}
	if (WriteFile(hCom,           //串口句柄
			&myWByte,             //存放待發(fā)送數(shù)據(jù)
			dataWLen,             //欲發(fā)送的字節(jié)數(shù)
			NULL,
			&Wol))                //指向創(chuàng)建hCom時(shí)的Wol的指針
	{
         //在這里加入成功發(fā)送的處理代碼。
		intWrite=2;

	}
	else
	{
		dwRes = WaitForSingleObject(Wol.hEvent,
				 500);           //設(shè)置寫(xiě)超時(shí)500ms
		switch(dwRes)
		{
		case WAIT_OBJECT_0:
			 if (!GetOverlappedResult(hCom, 
					&Wol, 
					&dwWrite, 
					TRUE))
			 {   
				intWrite=1;
				//操作失敗,可以使用GetLastError()函數(shù)獲取錯(cuò)誤信息。
			 }
			 else
			 {
				//發(fā)送數(shù)據(jù)成功
				intWrite=2;
				//在這里加入發(fā)送成功的處理代碼
			 }
			 break;
		case WAIT_TIMEOUT:
			//發(fā)送失敗,原因是發(fā)送超時(shí)
			intWrite=1;
			break;
		default:
			//這里可以加入默認(rèn)情況下的處理代碼。
			intWrite=1;
			break;
		}
	}
	CloseHandle(Wol.hEvent);
	return 0;
}

void CPC2PLCView::OnDestroy() 
{
	CEditView::OnDestroy();
	if(!(hCom==NULL))
	{
		CloseHandle(hCom);           //關(guān)閉串口句柄
	}
	// TODO: Add your message handler code here
	
}

bool  CPC2PLCView::myfuncWrite()
{
	//寫(xiě)串口操作
	DWORD dwThreadID;//
	DWORD dwParam;
	int	 i;
	for(i=0;i<3;i++)
	{
		hThreadWrite=CreateThread(NULL,
			0,
			(LPTHREAD_START_ROUTINE )ThreadProcWrite, //寫(xiě)線程函數(shù)名稱(chēng)
			&dwParam,
			0,                                        //創(chuàng)建線程后,立即執(zhí)行該線程
			&dwThreadID);
		if (hThreadWrite==NULL)
		{
			AfxMessageBox("寫(xiě)線程創(chuàng)建失敗!");
			intWrite=1;
			return false;
		}
		while (intWrite==0)
		{
			Sleep(100);                              //等待寫(xiě)操作結(jié)果
		}
		if (intWrite==2)
		{
			return true;
		}
	}
	
	return false;
}

bool	CPC2PLCView::myfuncRead(BYTE ackChar)
{
	//讀串口操作代碼
	DWORD dwThreadID;
	DWORD dwParam;
	CString strDis;
	int i;
	for(i=0;i<3;i++)
	{
		hThreadRead=CreateThread(NULL,
				0,
				(LPTHREAD_START_ROUTINE )ThreadProcRead,//讀線程函數(shù)名稱(chēng)
				&dwParam,
				0,                                      //創(chuàng)建線程后,立即執(zhí)行該線程
				&dwThreadID);
		if (hThreadRead==NULL)
		{
			AfxMessageBox("讀線程創(chuàng)建失敗!");
			intRead=1;
			return false;
		}
		while (intRead==0)
		{
			Sleep(100);                                //等待讀操作結(jié)果
		}
		if (intRead==2)
		{
			return true;
		}
		else
		{
			myWByte[0]=ackChar;                       //發(fā)送ENQ或NAK(ascii碼為5或21)
			dataWLen=1;
			CEdit& myEdit=this->GetEditCtrl( );
			myEdit.SetSel(1000000,1000000);
			strDis="";
			switch(ackChar)
			{
			case 5:
				{
				strDis+="<-- [ENQ]\15\12";
				break;
				}
			case 21:
				{
				strDis+="<-- [NAK]\15\12";
				break;
				}
			}
			myEdit.ReplaceSel(strDis);
			if(!myfuncWrite())
			{
				return false;
			}
		}
	}
	return false;

}



void CPC2PLCView::OnUpdateReceive(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//根據(jù)串口是否打開(kāi),決定是否允許“接收”命令
	if (blnOpened)
	{
		pCmdUI->Enable(true);
	}
	else
	{
		pCmdUI->Enable(false);
	}
}

void CPC2PLCView::OnOpencom() 
{
	// TODO: Add your command handler code here
	CString strDis;
	CEdit& myEdit=this->GetEditCtrl( );
	hCom=CreateFile(myCom,                            //創(chuàng)建串口COM2
		GENERIC_READ | GENERIC_WRITE, 
		0,
		NULL,
		OPEN_EXISTING, 
		FILE_ATTRIBUTE_NORMAL| FILE_FLAG_OVERLAPPED, //使用重疊方式
		 NULL );
	if( hCom !=INVALID_HANDLE_VALUE) 
	{
		SetupComm(hCom,1024,512);
		DCB myDCB;
		GetCommState( hCom, &myDCB );
		myDCB.BaudRate=myBaudRate;
		myDCB.fBinary=TRUE;
		myDCB.fParity=myfParity;
		myDCB.ByteSize=8;
		myDCB.Parity=myParity;
		myDCB.StopBits=ONESTOPBIT;
		SetCommState(hCom,&myDCB);

		//顯示串口成功打開(kāi)
		myEdit.SetReadOnly (true);
		myEdit.SetSel(1000000,1000000);
		strDis=myCom;
		strDis+="打開(kāi)成功!\15\12\15\12";
		myEdit.ReplaceSel(strDis);
		blnOpened=true;
	}
	else
	{
		//顯示串口打開(kāi)失敗
		myEdit.SetReadOnly (true);
		myEdit.SetSel(1000000,1000000);
		strDis=myCom;
		strDis+="打開(kāi)失敗!\15\12\15\12";
		myEdit.ReplaceSel(strDis);
		blnOpened=false;
	}
}

void CPC2PLCView::OnUpdateSetup(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//根據(jù)串口是否打開(kāi),決定是否允許“設(shè)置”命令
	if (!blnOpened)
	{
		pCmdUI->Enable(true);
	}
	else
	{
		pCmdUI->Enable(false);
	}
}

void CPC2PLCView::OnUpdateOpencom(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//根據(jù)串口是否打開(kāi),決定是否允許“打開(kāi)”命令
	if (!blnOpened)
	{
		pCmdUI->Enable(true);
	}
	else
	{
		pCmdUI->Enable(false);
	}
}

void CPC2PLCView::OnUpdateClosecom(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//根據(jù)串口是否打開(kāi),決定是否允許“關(guān)閉”命令
	if (blnOpened)
	{
		pCmdUI->Enable(true);
	}
	else
	{
		pCmdUI->Enable(false);
	}
	
}

void CPC2PLCView::OnClosecom() 
{
	// TODO: Add your command handler code here
	if ((blnOpened) && (hCom!=NULL))
	{
		CloseHandle(hCom);

		CString strDis;                         //顯示串口成功關(guān)閉
		CEdit& myEdit=this->GetEditCtrl( );
		myEdit.SetReadOnly (true);
		myEdit.SetSel(1000000,1000000);
		strDis=myCom;
		strDis+="  已關(guān)閉!\15\12\15\12";
		myEdit.ReplaceSel(strDis);
		blnOpened=false;
	}
	
}

void CPC2PLCView::OnUpdateAppExit(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//根據(jù)串口是否打開(kāi),決定是否允許“退出”命令
	if (blnOpened)
	{
		pCmdUI->Enable(false);
	}
	else
	{
		pCmdUI->Enable(true);
	}
}

void CPC2PLCView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CEditView::OnChar(nChar, nRepCnt, nFlags);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大尺度电影在线| 老汉av免费一区二区三区| 国产欧美中文在线| 国产亚洲福利社区一区| 久久免费看少妇高潮| 久久久青草青青国产亚洲免观| 精品捆绑美女sm三区| 日韩精品中文字幕在线不卡尤物| 欧美一区二区三区在线观看视频| 7777精品久久久大香线蕉| 欧美一区二区三区小说| 欧美α欧美αv大片| 久久久久久久久99精品| 国产女人18水真多18精品一级做| 欧美国产日韩a欧美在线观看| 国产精品视频一二三区 | 国产欧美精品一区二区色综合朱莉| 欧美大片在线观看一区| 26uuu久久综合| 中文字幕成人在线观看| 亚洲精品欧美激情| 亚洲国产成人91porn| 日日欢夜夜爽一区| 韩国v欧美v日本v亚洲v| 国产成人免费视频| 色综合天天狠狠| 欧美精品一二三| 久久综合成人精品亚洲另类欧美| 久久久久久一级片| 综合亚洲深深色噜噜狠狠网站| 中文字幕一区二| 亚洲成人自拍偷拍| 久久爱另类一区二区小说| 国产精品2024| 日本韩国精品在线| 3d动漫精品啪啪一区二区竹菊| 2020国产精品| 亚洲婷婷综合久久一本伊一区| 亚洲v日本v欧美v久久精品| 精品在线观看视频| 91网站最新网址| 7777精品伊人久久久大香线蕉的| 久久精品一区二区三区四区| 中文字幕中文字幕一区二区| 偷窥国产亚洲免费视频 | 久久这里只有精品6| 国产精品久久看| 日韩精品一二三| 成人中文字幕电影| 欧美美女一区二区三区| 国产偷国产偷精品高清尤物| 一区二区三区美女| 国产一区二区视频在线播放| 在线观看日韩国产| 久久久99精品久久| 亚洲超碰97人人做人人爱| 国产精品综合网| 在线播放中文字幕一区| 国产精品国产a级| 久久精品理论片| 在线亚洲免费视频| 日本一区二区三区四区| 奇米色777欧美一区二区| 91麻豆精品在线观看| 欧美电视剧免费观看| 亚洲二区在线观看| 99久久精品国产网站| 久久蜜桃av一区精品变态类天堂| 亚洲宅男天堂在线观看无病毒| 粉嫩av一区二区三区在线播放| 欧美电影在哪看比较好| 一区二区三区在线视频观看 | 在线观看免费视频综合| 中文字幕精品一区二区三区精品 | 99精品视频中文字幕| 日韩欧美亚洲国产另类| 亚洲成人免费av| 一本色道久久综合亚洲精品按摩| 久久久久久久久久久久久久久99 | 欧美性大战xxxxx久久久| 中文一区一区三区高中清不卡| 裸体健美xxxx欧美裸体表演| 欧美日韩国产影片| 夜夜精品视频一区二区| 94-欧美-setu| 国产精品久久久久久久久免费桃花| 久久草av在线| 欧美哺乳videos| 日韩成人伦理电影在线观看| 欧美日韩第一区日日骚| 亚洲曰韩产成在线| 欧美亚洲一区二区在线观看| 国产精品福利影院| 成人动漫一区二区三区| 国产日韩视频一区二区三区| 国产精品综合av一区二区国产馆| 精品国产一区二区三区久久影院| 蜜臀a∨国产成人精品| 91精品国产麻豆国产自产在线| 亚洲国产成人av好男人在线观看| 91久久人澡人人添人人爽欧美| 亚洲精品乱码久久久久久日本蜜臀| 成人美女视频在线观看| 中文字幕第一页久久| eeuss影院一区二区三区| 国产精品乱子久久久久| 91丨porny丨中文| 亚洲精品日韩一| 欧美最猛性xxxxx直播| 亚洲国产va精品久久久不卡综合| 欧美日韩黄色影视| 日本sm残虐另类| 精品人在线二区三区| 国产99一区视频免费| ㊣最新国产の精品bt伙计久久| www.成人在线| 亚洲一区二区三区四区中文字幕| 欧美日韩精品一区二区| 日韩av一级片| 久久色.com| 不卡的av在线| 亚洲韩国精品一区| 日韩欧美激情一区| 国产99久久久久久免费看农村| 亚洲视频在线观看一区| 欧美在线免费观看视频| 日韩av一区二区三区四区| 久久久美女毛片| 91蝌蚪porny成人天涯| 亚洲国产精品久久久久秋霞影院| 欧美一级高清大全免费观看| 九九**精品视频免费播放| 日本一区二区三区dvd视频在线| 91视频一区二区三区| 天堂一区二区在线| 久久久综合精品| 色美美综合视频| 美美哒免费高清在线观看视频一区二区| 久久噜噜亚洲综合| 欧美又粗又大又爽| 久久精品国产99| 亚洲免费成人av| 日韩欧美黄色影院| 99国产精品久| 日韩精品乱码免费| 亚洲国产精品二十页| 欧美日韩一区成人| 国产大片一区二区| 亚洲国产综合91精品麻豆| 久久亚洲一级片| 欧洲色大大久久| 国产电影一区二区三区| 午夜精品一区在线观看| 国产精品伦理在线| 欧美一区二区三区四区在线观看 | 欧美在线视频不卡| 精品一区二区三区的国产在线播放| 国产精品国产馆在线真实露脸| 91麻豆精品国产91久久久久久久久| 国产成人综合精品三级| 日韩高清一区二区| 中文字幕欧美一区| 久久综合久久综合久久| 欧美性色综合网| 成人激情校园春色| 九九精品视频在线看| 五月天久久比比资源色| 亚洲欧美日韩国产综合| 久久久综合网站| 欧美一区二区精品久久911| 色综合视频在线观看| 国产精品18久久久久久久网站| 午夜电影一区二区| 亚洲老司机在线| 欧美激情中文字幕一区二区| 欧美一区二区人人喊爽| 欧美日韩综合不卡| 色综合av在线| 成人激情小说乱人伦| 国产一区二区不卡| 免费人成在线不卡| 亚洲成人激情社区| 一区二区高清在线| 成人免费一区二区三区视频| 久久久亚洲欧洲日产国码αv| 日韩一级高清毛片| 欧美日韩精品一区二区三区四区| 色综合久久久久综合99| 成人av在线观| youjizz国产精品| 国产99精品国产| 国产aⅴ综合色| 亚洲精品免费在线播放| 亚洲男人都懂的| 亚洲素人一区二区| 亚洲欧洲成人精品av97| 国产精品区一区二区三区| 欧美激情一区二区三区不卡| 久久夜色精品国产噜噜av| 精品对白一区国产伦|