⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp2kdlg.cpp

📁 这是我用VC写的一个串口通信的程序,希望大学喜欢啊!
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					UpdateData(false);
					break;
				case LOOPSCOM2:
					m_SCom2LoopFail ++;
					UpdateData(false);
					break;
				case LOOPSCOM3:
					m_SCom3LoopFail ++;
					UpdateData(false);
					break;
				case LOOPSCOM4:
					m_SCom4LoopFail ++;
					UpdateData(false);
					break;
				case GETVERSION:
					UpdateVersion();
					break;
				}
				//OperationMode = NOOPERATE;
				pCurCheckedMode = pCurCheckedMode->next;
				pCurCheckedNode = pCurCheckedNode->next;
				return;
			}//3
			else
			{//4
				for(i = 0;i < Data.DataToRead;i ++)
				{//5
					if(Data.ReceivedData[i] != pCurCheckedNode->SentData[i])
					{//6
						switch(pCurCheckedMode->Operation_Mode)
						{
						case MCOM:
							m_MComFail ++;
							UpdateData(false);
							break;
						case SCOM1:
							m_SCom1Fail ++;
							UpdateData(false);
							break;
						case SCOM2:
							m_SCom2Fail ++;
							UpdateData(false);
							break;
						case SCOM3:
							m_SCom3Fail ++;
							UpdateData(false);
							break;
						case SCOM4:
							m_SCom4Fail ++;
							UpdateData(false);
							break;
						case LOOPMCOM:
							m_MComLoopFail ++;
							UpdateData(false);
							break;
						case LOOPSCOM1:
							m_SCom1LoopFail ++;
							UpdateData(false);
							break;
						case LOOPSCOM2:
							m_SCom2LoopFail ++;
							UpdateData(false);
							break;
						case LOOPSCOM3:
							m_SCom3LoopFail ++;
							UpdateData(false);
							break;
						case LOOPSCOM4:
							m_SCom4LoopFail ++;
							UpdateData(false);
							break;
						}
						/**********************test*********************/
						/**********************************************/
						KillTimer(ID_LoopTimer);
						for(ii = 0;ii < Data.DataToRead;ii ++)
						{
							temp.Format("%x",Data.ReceivedData[ii]);
							temp1 += (temp + " ");
						}
						AfxMessageBox(temp1);
						temp1 = "";
						for(ii = 0;ii < Data.DataToRead;ii ++)
						{
							temp.Format("%x",pCurCheckedNode->SentData[ii]);
							temp1 += (temp + " ");
						}
						AfxMessageBox(temp1);
						/**********************************************/
						/********************test end******************/
						pCurCheckedNode = pCurCheckedNode->next;
						pCurCheckedMode = pCurCheckedMode->next;
						//OperationMode = NOOPERATE;
						return;
					}//6
				}//5
				switch(pCurCheckedMode->Operation_Mode)
				{
				case MCOM:
					m_MComSuccess ++;
					UpdateData(false);
					break;
				case SCOM1:
					m_SCom1Success ++;
					UpdateData(false);
					break;
				case SCOM2:
					m_SCom2Success ++;
					UpdateData(false);
					break;
				case SCOM3:
					m_SCom3Success ++;
					UpdateData(false);
					break;
				case SCOM4:
					m_SCom4Success ++;
					UpdateData(false);
					break;
				case LOOPMCOM:
					m_MComLoopSuccess ++;
					UpdateData(false);
					break;
				case LOOPSCOM1:
					m_SCom1LoopSuccess ++;
					UpdateData(false);
					break;
				case LOOPSCOM2:
					m_SCom2LoopSuccess ++;
					UpdateData(false);
					break;
				case LOOPSCOM3:
					m_SCom3LoopSuccess ++;
					UpdateData(false);
					break;
				case LOOPSCOM4:
					m_SCom4LoopSuccess ++;
					UpdateData(false);
					break;
				}
				pCurCheckedNode = pCurCheckedNode->next;
				pCurCheckedMode = pCurCheckedMode->next;
				//OperationMode = NOOPERATE;
				return;
			}//4
		}//2
		SerialCom.SetInBufferCount(0);
		break;
	default:
		break;
	}//1
}//0

void CMp2KDlg::OnSet() 
{
	SetDelay.m_PreviousDelay = SetDelay.m_DelaySelect;
	SetDelay.CenterWindow();
	this->BeginModalState();
	SetDelay.ShowWindow(SW_SHOW);
}

void CMp2KDlg::OnTimer(UINT nIDEvent) 
{//0
	switch(nIDEvent)
	{//1
	case ID_LEDTimer:
		switch(LEDCounter)
		{//2
		case 0:
			On9600bps();
			LEDCounter = (LEDCounter + 1) % 3;
			break;
		case 1:
			On19200bps();
			LEDCounter = (LEDCounter + 1) % 3;
			break;
		case 2:
			On38400bps();
			LEDCounter = (LEDCounter + 1) % 3;
			break;
		}//2
		break;
	case ID_LoopTimer:
		switch(LoopCounter)
		{
		case 0:
			MCom();
			pCurSedMode->Operation_Mode = LOOPMCOM;
			pCurSedMode = pCurSedMode->next;
			LoopCounter = (LoopCounter + 1) % 5;
			break;
		case 1:
			SCom1();
			pCurSedMode->Operation_Mode = LOOPSCOM1;
			pCurSedMode = pCurSedMode->next;
			LoopCounter = (LoopCounter + 1) % 5;
			break;
		case 2:
			SCom2();
			pCurSedMode->Operation_Mode = LOOPSCOM2;
			pCurSedMode = pCurSedMode->next;
			LoopCounter = (LoopCounter + 1) % 5;
			break;
		case 3:
			SCom3();
			pCurSedMode->Operation_Mode = LOOPSCOM3;
			pCurSedMode = pCurSedMode->next;
			LoopCounter = (LoopCounter + 1) % 5;
			break;
		case 4:
			SCom4();
			pCurSedMode->Operation_Mode = LOOPSCOM4;
			pCurSedMode = pCurSedMode->next;
			LoopCounter = (LoopCounter + 1) % 5;
			break;
		}
		break;
	case ID_MComTimer:
		MCom();
		pCurSedMode->Operation_Mode = MCOM;
		pCurSedMode = pCurSedMode->next;
		break;
	case ID_SCom1Timer:
		SCom1();
		pCurSedMode->Operation_Mode = SCOM1;
		pCurSedMode = pCurSedMode->next;
		break;
	case ID_SCom2Timer:
		SCom2();
		pCurSedMode->Operation_Mode = SCOM2;
		pCurSedMode = pCurSedMode->next;
		break;
	case ID_SCom3Timer:
		SCom3();
		pCurSedMode->Operation_Mode = SCOM3;
		pCurSedMode = pCurSedMode->next;
		break;
	case ID_SCom4Timer:
		SCom4();
		pCurSedMode->Operation_Mode = SCOM4;
		pCurSedMode = pCurSedMode->next;
		break;
	}//1
	CDialog::OnTimer(nIDEvent);
}//0

void CMp2KDlg::OnStartloop() 
{
	m_StartLoop.EnableWindow(false);
	m_Set.EnableWindow(false);
	m_StopLoop.EnableWindow(true);
	LoopCounter = 0;
	SetTimer(ID_LoopTimer,SetDelay.m_Delay,NULL);
}

void CMp2KDlg::OnStoploop() 
{
	KillTimer(ID_LoopTimer);
	m_StartLoop.EnableWindow(true);
	m_Set.EnableWindow(true);
	m_StopLoop.EnableWindow(false);

}

void CMp2KDlg::OnClearmcom() 
{
	SerialCom.SetInBufferCount(0);
	SerialCom.SetOutBufferCount(0);

	m_MComSuccess = m_MComFail = 0;
	UpdateData(false);
}

void CMp2KDlg::OnClearscom1() 
{
	SerialCom.SetInBufferCount(0);
	SerialCom.SetOutBufferCount(0);

	m_SCom1Success = m_SCom1Fail = 0;
	UpdateData(false);
}

void CMp2KDlg::OnClearscom2() 
{
	SerialCom.SetInBufferCount(0);
	SerialCom.SetOutBufferCount(0);

	m_SCom2Success = m_SCom2Fail = 0;
	UpdateData(false);
}

void CMp2KDlg::OnClearscom3() 
{
	SerialCom.SetInBufferCount(0);
	SerialCom.SetOutBufferCount(0);

	m_SCom3Success = m_SCom3Fail = 0;
	UpdateData(false);
}

void CMp2KDlg::OnClearscom4() 
{
	SerialCom.SetInBufferCount(0);
	SerialCom.SetOutBufferCount(0);

	m_SCom4Success = m_SCom4Fail = 0;
	UpdateData(false);	
}

void CMp2KDlg::OnCloseupSelectpccom() 
{
	m_CurSel = m_PCCom.GetCurSel();
	if(SerialCom.GetCommPort() == m_CurSel + 1)
		return;
	SerialCom.SetPortOpen(false);
	SerialCom.SetCommPort(m_CurSel + 1);
	ComSettings = "19200,N,8,1";
	SerialCom.SetSettings(ComSettings);
	SerialCom.SetInBufferSize(300);
	SerialCom.SetInBufferCount(0);
	SerialCom.SetInputMode(1);
	SerialCom.SetInputLen(0);
	SerialCom.SetSThreshold(0);
	SerialCom.SetRThreshold(1);
	SerialCom.SetPortOpen(true);
}

void CMp2KDlg::OnFinish() 
{
	//OperationMode = NOOPERATE;
	OnStoploop();
	if(LEDLoop)
		KillTimer(ID_LEDTimer);

	Data.SentData[0] = 0x01;
	Data.SentData[1] = 0x00;
	Data.SentData[2] = 0x06;
	Data.SentData[3] = 0x01;
	Data.SentData[4] = 0x00;
	Data.SentData[5] = 0x00;
	Data.SentData[6] = 0x04;
	Data.DataToWrite = 7;

	// Set PC serial com
	SerialCom.SetPortOpen(false);
	ComSettings = "9600,N,8,1";
	SerialCom.SetSettings(ComSettings);
	SerialCom.SetPortOpen(true);

	Packager(Data.SentData,Packaged_Data.PackagedData,Data.DataToWrite,
		&Packaged_Data.PackagedDataLen);
	TransferData(Packaged_Data.PackagedData,& Packaged_Data.PackagedDataLen);
	Sleep(2);

	// Set PC serial com
	SerialCom.SetPortOpen(false);
	ComSettings = "38400,N,8,1";
	SerialCom.SetSettings(ComSettings);
	SerialCom.SetPortOpen(true);

	Packager(Data.SentData,Packaged_Data.PackagedData,Data.DataToWrite,
		&Packaged_Data.PackagedDataLen);
	TransferData(Packaged_Data.PackagedData,& Packaged_Data.PackagedDataLen);
	Sleep(2);

	// Set PC serial com
	SerialCom.SetPortOpen(false);
	ComSettings = "19200,N,8,1";
	SerialCom.SetSettings(ComSettings);
	SerialCom.SetPortOpen(true);

	Packager(Data.SentData,Packaged_Data.PackagedData,Data.DataToWrite,
		&Packaged_Data.PackagedDataLen);
	TransferData(Packaged_Data.PackagedData,& Packaged_Data.PackagedDataLen);

	// Make up the SetDelay dialog combobox
	if(SetDelay.m_ComboBox.GetCount() == 5)
		SetDelay.m_ComboBox.DeleteString(4);
	else if(SetDelay.m_ComboBox.GetCount() == 3)
		SetDelay.m_ComboBox.AddString("1次/150毫秒");
}

void CMp2KDlg::OnGetversion() 
{
	/*Data.SentData[0] = 0x01;
	Data.SentData[1] = 0x00;
	Data.SentData[2] = 0x03;
	Data.SentData[3] = 0x00;
	Data.SentData[4] = 0x00;
	Data.SentData[5] = 0x00;
	Data.SentData[6] = 0x01;
	Data.DataToWrite = 7;*/
	pCurSedNode->SentData[0] = 0x01;
	pCurSedNode->SentData[1] = 0x00;
	pCurSedNode->SentData[2] = 0x03;
	pCurSedNode->SentData[3] = 0x00;
	pCurSedNode->SentData[4] = 0x00;
	pCurSedNode->SentData[5] = 0x00;
	pCurSedNode->SentData[6] = 0x01;
	pCurSedNode->DataToWrited = 7;

	Packager(pCurSedNode->SentData,Packaged_Data.PackagedData,pCurSedNode->DataToWrited,
		&Packaged_Data.PackagedDataLen);
	TransferData(Packaged_Data.PackagedData,& Packaged_Data.PackagedDataLen);
	pCurSedMode->Operation_Mode = GETVERSION;
	pCurSedMode = pCurSedMode->next;
	pCurSedNode = pCurSedNode->next;
}

LRESULT CMp2KDlg::DefWindowProc( UINT message, WPARAM wParam, LPARAM lParam )
{
	if(message == WM_CLOSE)
		if(AfxMessageBox("关闭该测试软件否?",MB_YESNO) == IDNO)
			return 0;
	return CDialog::DefWindowProc(message,wParam,lParam);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -