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

📄 dyrasview.cpp

📁 远程串口通信程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	dc.Rectangle(135,70,175,75);
	dc.SelectObject(pOldpen);
	dc.SelectObject(pOldbr);
}

void CDyRasView::DrawJdRect(int num)
{
	CClientDC dc(this);
	CPen penGray,penGree;
	penGray.CreatePen(PS_SOLID,1,RGB(200,200,200));
	penGree.CreatePen(PS_SOLID,1,RGB(0,255,0));
	CPen* pOldpen;
	CRect rc;
	GetClientRect(&rc);
	CBrush br;
	CBrush* pOldbr;
	if(num==1) {// turn on the mark
		br.CreateSolidBrush(RGB(0,255,0));
		pOldbr=dc.SelectObject(&br);
  		GetDlgItem(IDC_STATICJDNAME)->EnableWindow(TRUE);
		pOldpen=dc.SelectObject(&penGree);
	}
	else if(num==0) {// turn off the mark
		br.CreateSolidBrush(RGB(185,185,185));
		pOldbr=dc.SelectObject(&br);
		GetDlgItem(IDC_STATICJDNAME)->EnableWindow(FALSE);
		pOldpen=dc.SelectObject(&penGray);
	}
	dc.Rectangle(230,50,260,70);
	dc.Rectangle(225,70,265,75);
	dc.SelectObject(pOldpen);
	dc.SelectObject(pOldbr);	
}

void CDyRasView::DrawJbRect(int num)
{
	CClientDC dc(this);
	CPen penGray,penGree;
	penGray.CreatePen(PS_SOLID,1,RGB(200,200,200));
	penGree.CreatePen(PS_SOLID,1,RGB(0,255,0));
	CPen* pOldpen;
	CRect rc;
	GetClientRect(&rc);
	CBrush br;
	CBrush* pOldbr;
	if(num==1) {// turn on the mark
		br.CreateSolidBrush(RGB(0,255,0));
		pOldbr=dc.SelectObject(&br);
  		GetDlgItem(IDC_STATICJBNAME)->EnableWindow(TRUE);
		pOldpen=dc.SelectObject(&penGree);
	}
	else if(num==0) {// turn off the mark
		br.CreateSolidBrush(RGB(185,185,185));
		pOldbr=dc.SelectObject(&br);
		GetDlgItem(IDC_STATICJBNAME)->EnableWindow(FALSE);
		pOldpen=dc.SelectObject(&penGray);
	}
	dc.Rectangle(320,50,350,70);
	dc.Rectangle(315,70,355,75);
	dc.SelectObject(pOldpen);
	dc.SelectObject(pOldbr);	
}

void CDyRasView::InitComm1()
{
	BOOL ComBuf,CommState;
	hCommDev1=CreateFile("COM3",GENERIC_READ|GENERIC_WRITE,
		0,NULL,OPEN_EXISTING,0,NULL);//打开串口
	if(hCommDev1==(HANDLE)-1) {
		m_ctlRasRun.InsertString(0,"串口3初始化错误!");
			return ;
	}
	ComBuf=SetupComm(hCommDev1,1024,1024);
	dcb1.EvtChar='z';
	CommState=GetCommState(hCommDev1,&dcb1);

	BuildCommDCB("COM3:4800,e,8,1",&dcb1);
    CommState=SetCommState(hCommDev1,&dcb1);

	COMMTIMEOUTS CommTimeOuts;
	CommTimeOuts.ReadIntervalTimeout=MAXDWORD;
	CommTimeOuts.ReadTotalTimeoutMultiplier=0;
    CommTimeOuts.ReadTotalTimeoutConstant=0;
	CommTimeOuts.WriteTotalTimeoutMultiplier=0;
	CommTimeOuts.WriteTotalTimeoutConstant=1000;
	SetCommTimeouts(hCommDev1,&CommTimeOuts);

	PurgeComm(hCommDev1,PURGE_TXCLEAR);//清发送缓冲区
	PurgeComm(hCommDev1,PURGE_RXCLEAR);//清发收缓冲区
}

void CDyRasView::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	CloseHandle(hCommDev1);
	CloseHandle(hCommDev2);
	CloseHandle(hCommDev3);
	SendTestMsg(m_pCommSocket,WCLOSE);	
	CFormView::OnClose();
}

void CDyRasView::InitComm2()
{
	BOOL ComBuf,CommState;
	hCommDev2=CreateFile("COM4",GENERIC_READ|GENERIC_WRITE,
							0,NULL,OPEN_EXISTING,0,NULL);//打开串口
	if(hCommDev1==(HANDLE)-1) {
		m_ctlRasRun.InsertString(0,"串口4=Modem2初始化错误!");
			return ;
	}
	ComBuf=SetupComm(hCommDev2,1024,1024);
	CommState=GetCommState(hCommDev2,&dcb2);

	BuildCommDCB("COM4:4800,e,8,1",&dcb2);
    CommState=SetCommState(hCommDev2,&dcb2);

	COMMTIMEOUTS CommTimeOuts;
	CommTimeOuts.ReadIntervalTimeout=MAXDWORD;
	CommTimeOuts.ReadTotalTimeoutMultiplier=0;
    CommTimeOuts.ReadTotalTimeoutConstant=0;
	CommTimeOuts.WriteTotalTimeoutMultiplier=0;
	CommTimeOuts.WriteTotalTimeoutConstant=0;
	SetCommTimeouts(hCommDev2,&CommTimeOuts);

	PurgeComm(hCommDev2,PURGE_TXCLEAR);//清发送缓冲区
	PurgeComm(hCommDev2,PURGE_RXCLEAR);//清发收缓冲区
}

void CDyRasView::InitComm3()
{
	BOOL ComBuf,CommState;

	hCommDev3=CreateFile("COM5",GENERIC_READ|GENERIC_WRITE,
		0,NULL,OPEN_EXISTING,0,NULL);//打开串口
	if(hCommDev3==(HANDLE)-1) {
		m_ctlRasRun.InsertString(0,"串口5初始化错误!");
			return ;
	}
	ComBuf=SetupComm(hCommDev3,1024,1024);
	CommState=GetCommState(hCommDev3,&dcb3);

	BuildCommDCB("COM5:4800,e,8,1",&dcb3);
    CommState=SetCommState(hCommDev3,&dcb3);

	COMMTIMEOUTS CommTimeOuts;
	CommTimeOuts.ReadIntervalTimeout=MAXDWORD;
	CommTimeOuts.ReadTotalTimeoutMultiplier=0;
    CommTimeOuts.ReadTotalTimeoutConstant=0;
	CommTimeOuts.WriteTotalTimeoutMultiplier=0;
	CommTimeOuts.WriteTotalTimeoutConstant=1000;
	SetCommTimeouts(hCommDev3,&CommTimeOuts);

	PurgeComm(hCommDev3,PURGE_TXCLEAR);//清发送缓冲区
	PurgeComm(hCommDev3,PURGE_RXCLEAR);//清发收缓冲区
}
void CDyRasView::ReadComm1()
{
	int iRecvStrLen,i,j=0;
	char x='s',y='r',z='a';
	DWORD dwRead;
	BOOL bReturn=FALSE,mbdStat1=FALSE;
	CString str="轧钢";
	BYTE ZgBuff[1024];
	ZGBUFF[0]=ZG;

	SendTestMsg(m_pCommSocket,ZGTEST);
	ClearCommError(hCommDev1,&dwErrorFlag,&comStat);
	m_bMark[1]=TRUE;
	iRecvStrLen=comStat.cbInQue;

	if(iRecvStrLen==ZGRECELEN) {
		bReturn=ReadFile(hCommDev1,ZgBuff,1024,&dwRead,NULL);
		if(!bReturn) return;
		ShowFolloTime(str,y);
		for(i=0;i<ZGRECELEN;i++) 
			if(ZGBUFF[i+1]==ZgBuff[i]) j++;
		if(j<ZGRECELEN-1) {
			for(i=0;i<ZGRECELEN;i++) ZGBUFF[i+1]=ZgBuff[i];
			SendMsg(m_pCommSocket,ZGBUFF);
			ShowFolloTime(str,x);
		}
	}	
	PurgeComm(hCommDev1,PURGE_TXCLEAR);//清发送缓冲区
	PurgeComm(hCommDev1,PURGE_RXCLEAR);//清收缓冲区
	if(m_ctlSend.GetCount()>LISTLEN) m_ctlSend.ResetContent();
	if(m_ctlReceive.GetCount()>LISTLEN) m_ctlReceive.ResetContent();	
}	
void CDyRasView::ReadComm2()
{
	int iRecvStrLen,i,j=0;
	char x='s',y='r';
	DWORD dwRead;
	BOOL bReturn=FALSE;
	CString str="嘉东",strr1;
	BYTE JdBuff[1024];
	JDBUFF[0]=JD;

	SendTestMsg(m_pCommSocket,JDTEST);
	ClearCommError(hCommDev2,&dwErrorFlag,&comStat);
	m_bMark[2]=TRUE;
	iRecvStrLen=comStat.cbInQue;
//	strr1.Format("%d",iRecvStrLen);
//	ShowFolloTime(strr1,y);

	if(iRecvStrLen==JDRECELEN) {
		bReturn=ReadFile(hCommDev2,JdBuff,1024,&dwRead,NULL);
		if(!bReturn) return;
		ShowFolloTime(str,y);
		for(i=0;i<JDRECELEN;i++) 
			if(JDBUFF[i+1]==JdBuff[i]) j++;
		if(j<JDRECELEN-1) {
			for(i=0;i<JDRECELEN;i++) JDBUFF[i+1]=JdBuff[i];
			SendMsg(m_pCommSocket,JDBUFF);
			ShowFolloTime(str,x);
		}
	}
	PurgeComm(hCommDev2,PURGE_TXCLEAR);//清发送缓冲区
	PurgeComm(hCommDev2,PURGE_RXCLEAR);//清收缓冲区
	if(m_ctlSend.GetCount()>LISTLEN) m_ctlSend.ResetContent();
	if(m_ctlReceive.GetCount()>LISTLEN) m_ctlReceive.ResetContent();	
}

void CDyRasView::ReadComm3()
{
	int iRecvStrLen,i,j=0;
	char x='s',y='r',z='a';
	DWORD dwRead;
	BOOL bReturn=FALSE,mbdStat2=FALSE;
	CString str="嘉北",strr1;
	BYTE JbBuff[1024];
	JBBUFF[0]=JB;

	SendTestMsg(m_pCommSocket,JBTEST);
	ClearCommError(hCommDev3,&dwErrorFlag,&comStat);
	m_bMark[3]=TRUE;
	iRecvStrLen=comStat.cbInQue;
//	strr1.Format("%d",iRecvStrLen);
//	ShowFolloTime(strr1,y);

	if(iRecvStrLen==JBRECELEN) {
		bReturn=ReadFile(hCommDev3,JbBuff,1024,&dwRead,NULL);
		if(!bReturn) return;
		ShowFolloTime(str,y);
		for(i=0;i<JBRECELEN;i++) 
			if(JBBUFF[i+1]==JbBuff[i]) j++;
		if(j<JBRECELEN-1) {	
			for(i=0;i<JBRECELEN;i++) JBBUFF[i+1]=JbBuff[i];
			SendMsg(m_pCommSocket,JBBUFF);
			ShowFolloTime(str,x);
		}
	}	
	PurgeComm(hCommDev3,PURGE_TXCLEAR);//清发送缓冲区
	PurgeComm(hCommDev3,PURGE_RXCLEAR);//清收缓冲区
	if(m_ctlSend.GetCount()>LISTLEN) m_ctlSend.ResetContent();
	if(m_ctlReceive.GetCount()>LISTLEN) m_ctlReceive.ResetContent();	
}

void CDyRasView::ShowFolloTime(LPCTSTR lpszstrMsg,char x)
{
	CString strMsg=lpszstrMsg,strName;
	char strTmsg[20];
	CString strTt;
	CString strTemp;
	strTemp=strMsg.Left(10);
	CTime time=CTime::GetCurrentTime();
	wsprintf(strTmsg,"%2d:%2d:%2d",time.GetHour(),time.GetMinute(),time.GetSecond());
	strTt=_T(" ");
	strTemp=strMsg+strTt+strTmsg;
	if(m_ctlSend.GetCount()>LISTLEN) m_ctlSend.ResetContent();
	if(m_ctlReceive.GetCount()>LISTLEN) m_ctlReceive.ResetContent();	
	switch(x) {
	case 'r':	{
		m_ctlReceive.InsertString(0,strTemp);
		break;
		}
	case 's':{
		m_ctlSend.InsertString(0,strTemp);
		break;
		}
	case 'u':{
		m_ctlRasRun.InsertString(0,strTemp);
		break;
		}
	case 'a':{
		m_ctlReceive.InsertString(0,strTemp);
		m_ctlSend.InsertString(0,strTemp);
		break;
		}
	}
}



⌨️ 快捷键说明

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