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

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

?? commport.cpp

?? 可以接收NMEA-0183格式的GPS數(shù)據(jù)自動化搜索本枸的GPS接口
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	if(fp!=NULL)
	{
		fscanf(fp,"%s",ComName);
		fclose(fp);
	}
	else
		ComName="COM1:";

	int Baud=4800;

	SettingStatus=1;
	if(SettingStatus==1)
	{
		DWORD dwError;
		DCB PortDCB;
		COMMTIMEOUTS CommTimeouts;
		
		// Open the serial port.
		hPort = CreateFile (ComName, // Pointer to the name of the port
							GENERIC_READ | GENERIC_WRITE,
										  // Access (read-write) mode
							0,            // Share mode
							NULL,         // Pointer to the security attribute
							OPEN_EXISTING,// How to open the serial port
							0,            // Port attributes
							NULL);        // Handle to port with attribute
										  // to copy

		// If it fails to open the port, return FALSE.
		if ( hPort == INVALID_HANDLE_VALUE ) 
		{
			// 不能打開串口,是否自動搜索
			CString msg=_T("不能打開GPS接口:");
			msg+=ComName;
			msg+=_T("!");
			msg+=_T("\n按是自動搜索GPS端口,按否放棄!");
			int flag=AfxMessageBox(msg,MB_YESNO);
			if(flag==IDNO)
			{
				flag=AfxMessageBox("沒有連接GPS將不能導航!\n確定嗎?",MB_YESNO);
				if(flag==IDNO)
				{
					CString portname=FindGPSPort();
					if(portname=="")
						AfxMessageBox("沒有找到GPS設備!",MB_OK);
				}
			}
			else
			{
				CString portname=FindGPSPort();
				if(portname=="")
					AfxMessageBox("沒有找到GPS設備!",MB_OK);
			}
		}
		else
		{
			int ComFlag=SetupComm(hPort,4096,4096);
			if(ComFlag==0)AfxMessageBox(_T("串口緩沖區(qū)設置錯誤!"),MB_OK);

			PortDCB.DCBlength = sizeof (DCB);     

			// Get the default port setting information.
			GetCommState (hPort, &PortDCB);

			// Change the DCB structure settings.
			PortDCB.BaudRate = Baud;              // Current baud 
			PortDCB.fBinary = TRUE;               // Binary mode; no EOF check 
			PortDCB.fParity = TRUE;               // Enable parity checking 
			PortDCB.fOutxCtsFlow = FALSE;         // No CTS output flow control 
			PortDCB.fOutxDsrFlow = FALSE;         // No DSR output flow control 
			PortDCB.fDtrControl = DTR_CONTROL_ENABLE; 
												  // DTR flow control type 
			PortDCB.fDsrSensitivity = FALSE;      // DSR sensitivity 
			PortDCB.fTXContinueOnXoff = TRUE;     // XOFF continues Tx 
			PortDCB.fOutX = FALSE;                // No XON/XOFF out flow control 
			PortDCB.fInX = FALSE;                 // No XON/XOFF in flow control 
			PortDCB.fErrorChar = FALSE;           // Disable error replacement 
			PortDCB.fNull = FALSE;                // Disable null stripping 
			PortDCB.fRtsControl = RTS_CONTROL_ENABLE; 
												  // RTS flow control 
			PortDCB.fAbortOnError = FALSE;        // Do not abort reads/writes on 
												  // error
			PortDCB.ByteSize = 8;                 // Number of bits/byte, 4-8 
			PortDCB.Parity = NOPARITY;            // 0-4=no,odd,even,mark,space 
			PortDCB.StopBits = ONESTOPBIT;        // 0,1,2 = 1, 1.5, 2 

			// Configure the port according to the specifications of the DCB 
			// structure.
			if (!SetCommState (hPort, &PortDCB))
			{
			  // Could not create the read thread.
			  AfxMessageBox (TEXT("配置串口錯誤!"));
			  dwError = GetLastError ();
			}

			// Retrieve the time-out parameters for all read and write operations
			// on the port. 
			GetCommTimeouts (hPort, &CommTimeouts);

			// Change the COMMTIMEOUTS structure settings.
			CommTimeouts.ReadIntervalTimeout = MAXDWORD;  
			CommTimeouts.ReadTotalTimeoutMultiplier = 0;  
			CommTimeouts.ReadTotalTimeoutConstant = 0;    
			CommTimeouts.WriteTotalTimeoutMultiplier = 10;  
			CommTimeouts.WriteTotalTimeoutConstant = 1000;    

			// Set the time-out parameters for all read and write operations
			// on the port. 
			if (!SetCommTimeouts (hPort, &CommTimeouts))
			{
			  // Could not create the read thread.
			  AfxMessageBox (TEXT("不能設置超時參數(shù)!")); 
			  dwError = GetLastError ();
			}

			// Direct the port to perform extended functions SETDTR and SETRTS
			// SETDTR: Sends the DTR (data-terminal-ready) signal.
			// SETRTS: Sends the RTS (request-to-send) signal. 
			EscapeCommFunction (hPort, SETDTR);
			EscapeCommFunction (hPort, SETRTS);	
			CString msg=_T("成功打開");
			msg+=ComName;
			msg+=_T("!");

			//unsigned char Info[19200];
			//DWORD dwBytesRead;

			//ReadFile(hPort,&Info,19200,&dwBytesRead,NULL);
			ClearCommBuf(2);
	

		}
	}
	return 1;
}
//////////////////////////////////////////////////////////////////////////
//功能:向串口寫數(shù)據(jù)
//////////////////////////////////////////////////////////////////////////
void CCommPort::SendByte(HANDLE hPort, BYTE Byte)
{
	DWORD dwError,dwNumBytesWritten;

	if (!WriteFile (hPort,              // Port handle
					&Byte,              // Pointer to the data to write 
					1,                  // Number of bytes to write
					&dwNumBytesWritten, // Pointer to the number of bytes 
										// written
					NULL))              // Must be NULL for Windows CE
	{
	  // WriteFile failed. Report error.
	  dwError = GetLastError ();
	  AfxMessageBox(_T("寫入一個字節(jié)錯誤!"),MB_OK);
	}

}

void CCommPort::ClosePort()
{
	DWORD dwError;
	
	if (hPort != INVALID_HANDLE_VALUE)
	{
	  // Close the communication port.
	  if (!CloseHandle (hPort))
	  {
		dwError = GetLastError ();
		AfxMessageBox(_T("關閉串口錯誤!"),MB_OK); 
	  }
	  else
	  {
		hPort = INVALID_HANDLE_VALUE;
		//AfxMessageBox(_T("成功關閉串口!"),MB_OK);
	  }
	}
}

void CCommPort::StartRead()
{
	if ( hPort == INVALID_HANDLE_VALUE ) 
	{
		AfxMessageBox(_T("沒有打開串口!"),MB_OK);
		return;
	}
	//清空串口的緩存
	//unsigned char Info[19200];
	//DWORD dwBytesRead;
	//ReadFile(hPort,&Info,19200,&dwBytesRead,NULL);
	//清除讀緩沖區(qū)
	ClearCommBuf(2);
}

void CCommPort::ShowSatPos()
{
}

///////////////////////////////////////////////////////////////////////
//功能:清空串口緩沖區(qū)
//history			name			data			remark
//					wanfangjie		2002.09.23		create
//參數(shù)說明	0,清讀緩沖區(qū),1,清寫緩沖區(qū)
///////////////////////////////////////////////////////////////////////
void CCommPort::ClearCommBuf(int iType)
{
	switch(iType)
	{
	case 0:
		PurgeComm(hPort,PURGE_RXCLEAR);
		break;
	case 1:
		PurgeComm(hPort,PURGE_TXCLEAR);
		break;
	case 2:
		PurgeComm(hPort,PURGE_TXCLEAR|PURGE_RXCLEAR);
		break;
	default:
		PurgeComm(hPort,PURGE_TXCLEAR|PURGE_RXCLEAR);
	}

}

CString CCommPort::FindGPSPort()
{
	char tempstr[2];
	CString portname;
	int Baud=4800;
	for(int i=1;i<=8;i++)
	{
		portname="COM";
		itoa(i,tempstr,10);
		portname+=tempstr;
		portname+=":";


		DWORD dwError;
		DCB PortDCB;
		COMMTIMEOUTS CommTimeouts;
		
		// Open the serial port.
		hPort = CreateFile (portname, // Pointer to the name of the port
							GENERIC_READ | GENERIC_WRITE,
										  // Access (read-write) mode
							0,            // Share mode
							NULL,         // Pointer to the security attribute
							OPEN_EXISTING,// How to open the serial port
							0,            // Port attributes
							NULL);        // Handle to port with attribute
										  // to copy

		// If it fails to open the port, return FALSE.
		if ( hPort == INVALID_HANDLE_VALUE ) 
		{
			portname="";
		}
		else
		{
			int ComFlag=SetupComm(hPort,4096,4096);
			if(ComFlag==0)AfxMessageBox(_T("串口緩沖區(qū)設置錯誤!"),MB_OK);

			PortDCB.DCBlength = sizeof (DCB);     

			// Get the default port setting information.
			GetCommState (hPort, &PortDCB);

			// Change the DCB structure settings.
			PortDCB.BaudRate = Baud;              // Current baud 
			PortDCB.fBinary = TRUE;               // Binary mode; no EOF check 
			PortDCB.fParity = TRUE;               // Enable parity checking 
			PortDCB.fOutxCtsFlow = FALSE;         // No CTS output flow control 
			PortDCB.fOutxDsrFlow = FALSE;         // No DSR output flow control 
			PortDCB.fDtrControl = DTR_CONTROL_ENABLE; 
												  // DTR flow control type 
			PortDCB.fDsrSensitivity = FALSE;      // DSR sensitivity 
			PortDCB.fTXContinueOnXoff = TRUE;     // XOFF continues Tx 
			PortDCB.fOutX = FALSE;                // No XON/XOFF out flow control 
			PortDCB.fInX = FALSE;                 // No XON/XOFF in flow control 
			PortDCB.fErrorChar = FALSE;           // Disable error replacement 
			PortDCB.fNull = FALSE;                // Disable null stripping 
			PortDCB.fRtsControl = RTS_CONTROL_ENABLE; 
												  // RTS flow control 
			PortDCB.fAbortOnError = FALSE;        // Do not abort reads/writes on 
												  // error
			PortDCB.ByteSize = 8;                 // Number of bits/byte, 4-8 
			PortDCB.Parity = NOPARITY;            // 0-4=no,odd,even,mark,space 
			PortDCB.StopBits = ONESTOPBIT;        // 0,1,2 = 1, 1.5, 2 

			if (!SetCommState (hPort, &PortDCB))
			{
			  AfxMessageBox (TEXT("配置串口錯誤!"));
			  dwError = GetLastError ();
			}

			GetCommTimeouts (hPort, &CommTimeouts);

			CommTimeouts.ReadIntervalTimeout = MAXDWORD;  
			CommTimeouts.ReadTotalTimeoutMultiplier = 0;  
			CommTimeouts.ReadTotalTimeoutConstant = 0;    
			CommTimeouts.WriteTotalTimeoutMultiplier = 10;  
			CommTimeouts.WriteTotalTimeoutConstant = 1000;    

			if (!SetCommTimeouts (hPort, &CommTimeouts))
			{
			  AfxMessageBox (TEXT("不能設置超時參數(shù)!")); 
			  dwError = GetLastError ();
			}

			EscapeCommFunction (hPort, SETDTR);
			EscapeCommFunction (hPort, SETRTS);	

			Sleep(1000);
			DWORD dwBytesRead;
			unsigned char Info[19200];
			ReadFile(hPort,&Info,19200,&dwBytesRead,NULL);
			for(int j=0;j<dwBytesRead;j++)
			{
				if(Info[j]=='$')
				{
					if(Info[j+1]=='G'&&Info[j+2]=='P'&&Info[j+3]=='G')//如果是GPS數(shù)據(jù)
					{
						FILE *fp;
						fp=fopen("gpsport.dat","w+");
						fprintf(fp,"%s",portname);
						fclose(fp);
						return portname;
					}
				}
			}
			portname="";
			ClearCommBuf(2);
			ClosePort();
		}
	}
	return portname;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av不卡| 久久99精品久久久久久动态图 | 日韩伦理免费电影| 午夜视黄欧洲亚洲| av一区二区三区四区| 91精品国产综合久久久久久 | 最新国产の精品合集bt伙计| 视频在线在亚洲| 92精品国产成人观看免费| 精品欧美乱码久久久久久| 亚洲午夜激情网站| 成人av资源在线| www成人在线观看| 日本中文在线一区| 欧美三区在线观看| 亚洲私人黄色宅男| 国产aⅴ精品一区二区三区色成熟| 4438x亚洲最大成人网| 一区二区三区蜜桃| 色综合久久天天| 欧美国产精品一区| 国产成人午夜精品影院观看视频| 日韩精品一区二区在线| 丝袜脚交一区二区| 欧美日韩国产大片| 亚洲一区精品在线| 一本色道久久综合狠狠躁的推荐 | 亚洲男人天堂av| 成人av网站在线| 亚洲国产高清aⅴ视频| 国产精品亚洲成人| 国产欧美日韩卡一| 国产精品综合二区| 久久精品视频一区| 丰满放荡岳乱妇91ww| 久久久久亚洲蜜桃| 国产精品亚洲专一区二区三区| 久久五月婷婷丁香社区| 国产麻豆精品一区二区| 国产亚洲精久久久久久| 国产精品亚洲а∨天堂免在线| 国产婷婷色一区二区三区| 国产一区二区美女| 国产精品欧美精品| 在线免费观看日本一区| 亚洲午夜在线观看视频在线| 这里只有精品视频在线观看| 老司机一区二区| 天堂av在线一区| 欧美精品色综合| 久久av中文字幕片| 国产精品免费丝袜| 91尤物视频在线观看| 亚洲一区二区三区四区中文字幕| 欧美日韩黄色一区二区| 老司机精品视频在线| 欧美国产欧美综合| 欧美日韩在线播放三区四区| 青青草国产精品97视觉盛宴| 久久精品一级爱片| 色94色欧美sute亚洲线路二| 日本中文一区二区三区| 久久精品视频在线免费观看| 色偷偷88欧美精品久久久| 亚洲高清在线视频| 久久久国产精华| 欧美最新大片在线看| 久久av老司机精品网站导航| 中文字幕在线不卡一区| 欧美日韩国产精品成人| 国产suv精品一区二区6| 首页亚洲欧美制服丝腿| 国产精品日韩精品欧美在线| 欧美亚洲国产一区在线观看网站| 精品午夜久久福利影院| 亚洲精品免费看| 欧美精品一区二区三区蜜臀| 在线看不卡av| 国产精品一区免费视频| 香蕉加勒比综合久久| 国产精品免费免费| 日韩欧美中文字幕精品| 色综合久久久久综合| 国精品**一区二区三区在线蜜桃| 亚洲精品久久久久久国产精华液| 精品国产成人系列| 欧美日韩国产大片| 99国产精品国产精品久久| 精品一区二区三区香蕉蜜桃| 亚洲一二三级电影| 国产精品久久久久久亚洲毛片| 日韩精品自拍偷拍| 精品视频一区 二区 三区| 91尤物视频在线观看| 风间由美一区二区三区在线观看| 美腿丝袜在线亚洲一区| 午夜视频一区在线观看| 亚洲欧美日本在线| 中文字幕欧美日本乱码一线二线| 日韩一卡二卡三卡四卡| 欧美日韩一区三区四区| 色婷婷综合视频在线观看| 成人三级伦理片| 国产福利精品导航| 国产一区二区三区日韩 | 亚洲另类春色国产| 国产精品人妖ts系列视频| 久久综合九色欧美综合狠狠| 欧美一区二区在线不卡| 欧美日韩国产三级| 欧美亚州韩日在线看免费版国语版| voyeur盗摄精品| 成人av先锋影音| 99精品国产一区二区三区不卡| 国产ts人妖一区二区| 国产精品亚洲综合一区在线观看| 激情国产一区二区| 国产老妇另类xxxxx| 国产呦精品一区二区三区网站| 久久99精品久久久久久| 狠狠色丁香婷综合久久| 国产一级精品在线| 成人综合在线观看| 91网站黄www| 欧美性一区二区| 在线播放欧美女士性生活| 91麻豆精品国产91久久久久久久久 | 蜜桃av一区二区| 极品美女销魂一区二区三区| 韩国女主播一区| 国产xxx精品视频大全| 99久久er热在这里只有精品66| 99国产精品久久久| 欧美亚洲禁片免费| 日韩欧美亚洲一区二区| 久久久国产综合精品女国产盗摄| 中文成人av在线| 亚洲激情一二三区| 日韩精品成人一区二区在线| 久久精品国产亚洲aⅴ| 粉嫩aⅴ一区二区三区四区五区| youjizz国产精品| 欧美三级乱人伦电影| 日韩精品一区二区三区三区免费| 久久精品日产第一区二区三区高清版 | 黑人巨大精品欧美一区| 成人av在线资源| 欧美老肥妇做.爰bbww视频| 欧美草草影院在线视频| 国产精品久久久久久久久免费樱桃| 亚洲免费电影在线| 久久66热偷产精品| 91丨porny丨蝌蚪视频| 日韩一级片在线播放| 中文字幕电影一区| 日韩高清一区二区| 成人免费av在线| 日韩欧美一区二区久久婷婷| 国产精品国产三级国产普通话99| 亚洲成人av福利| 成人免费高清在线| 欧美一卡2卡3卡4卡| 亚洲三级视频在线观看| 久久成人综合网| 欧美曰成人黄网| 国产色爱av资源综合区| 天天亚洲美女在线视频| www.亚洲免费av| 日韩欧美国产小视频| 一区二区三区高清在线| 国产91丝袜在线播放九色| 欧美精品一级二级三级| 亚洲欧洲精品一区二区精品久久久 | 欧美精品v日韩精品v韩国精品v| 亚洲国产精华液网站w | 精品成a人在线观看| 亚洲成人动漫在线免费观看| 波多野结衣欧美| 欧美videos大乳护士334| 亚洲午夜免费视频| 91在线视频免费观看| 久久综合网色—综合色88| 午夜成人免费视频| 一本大道久久a久久综合| 中文av一区二区| 国产精品一二三在| 精品美女在线观看| 奇米精品一区二区三区在线观看一| 日本高清不卡视频| 亚洲欧洲另类国产综合| 成人免费看黄yyy456| 久久久99精品免费观看| 麻豆中文一区二区| 欧美一区二区三区四区久久| 亚洲电影在线播放| 91福利国产精品| 亚洲一区中文日韩| 在线观看视频欧美| 亚洲在线视频免费观看| 在线影视一区二区三区|