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

📄 interfacedlg.cpp

📁 一个基于PXA255的水情遥测、遥控系统现场服务器软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    return TRUE;
}



void CInterfaceDlg::OnReFreash() 
{
	// TODO: Add your control notification handler code here
	//刷新设置
	ShowLabel();
}





void CInterfaceDlg::OnChannelcheck0() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}

void CInterfaceDlg::OnChannelcheck1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}

void CInterfaceDlg::OnChannelcheck2() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}

void CInterfaceDlg::OnChannelcheck3() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}

void CInterfaceDlg::OnChannelcheck4() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}

void CInterfaceDlg::OnChannelcheck5() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}

void CInterfaceDlg::OnChannelcheck6() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}

void CInterfaceDlg::OnChannelcheck7() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
		m_channelinfo[i].Checked=ChannelChecked[i];	
}



void CInterfaceDlg::OnStart() 
{
		
	// TODO: Add your control notification handler code here
	//开始采集
		
	if(beStarting==1)
	{
		Serial.PortClose(); 
		KillTimer(m_nTimer);
		beStarting=0;
		beGetting=0;
		TimerNow=0;
		for(int i=0;i<8;i++)
			m_channelinfo[i].SignalIndex=0;
		return;
	}
	//打开计时器
	else
	{
		//if(beTimering==0)
		//{	beTimering=1;
			beStarting=1;
			if(Serial.m_bOpened==FALSE)
				Serial.Open(5,2400);
			m_nTimer=SetTimer(1,1000,NULL);	
           	//Serial.PortClose(); 
		//}
		//else
		//{
			
		//}
	}


}

UINT AThreadGetdate(LPVOID lParam)
{
	//开始采集
	CInterfaceDlg	* ad=(CInterfaceDlg *)lParam;
//    CSerial Serial;
	CString str;
	char buff_1[3];
	
	if(ad->Trans_Ser->add>9)
		sprintf(buff_1,"%d",ad->Trans_Ser->add);
	else
		sprintf(buff_1,"0%d",ad->Trans_Ser->add);
	float val;
	int chn,index;
	chn=ad->Trans_Ser->channel;
	index=ad->m_channelinfo[chn].SignalIndex;
	//采集
	val=Serial.GetData(buff_1,ad->Trans_Ser->channel)/30;
	//分析过滤
	if(val>255||val<0)
		if(index>0)
			val=ad->m_channelinfo[chn].SignalLine[index-1];
		else
			if(val>255)
				val=255;
			else
				val=0;
	//采集到的值入队
	if (index<ad->m_channelinfo[chn].PointCount)
	{
		ad->m_channelinfo[chn].SignalLine[index]=val;
		ad->m_channelinfo[chn].SignalIndex=index+1;
	}
	else
	{
        //记录
	//	if (ad->Isrecord==TRUE)
	//	{ WaitForSingleObject(AfxBeginThread(AThreadGetdate,ad,THREAD_PRIORITY_BELOW_NORMAL,0,0),INFINITE);
	//	 ad->Isrecord=FALSE;
	//}
		ad->m_channelinfo[chn].SignalIndex=1;
		ad->m_channelinfo[chn].SignalLine[0]=val;
	}
	//显示输出	
	ad->m_lastval[chn].Format(_T("%d;%3.2f"),index,val);
	ad->OnControlRemote(ad->Trans_Ser->add,chn);
	//ad->beGetting=0;
	//ad->beTimering=0;
	//ad->New_BK.DrawSingle(ad->GetDC());
	//ad->OnShowLastVal();
	
	return 0;
}



void CInterfaceDlg::OnSetCommPort() 
{

	// TODO: Add your control notification handler code here
	int intes[8]={2,5,7,11,29,37,43,57};
	for(int i=0;i<8;i++)
	{
		m_channelinfo[i].PointCount=10;
		m_channelinfo[i].Interval=intes[i];
		inters[i]=intes[i];
	}
	Onshowset2info();
}

void CInterfaceDlg::Get51Data()
{

}

void CInterfaceDlg::OnTimer(UINT nIDEvent) 
{
	//采集的定时中断
	// TODO: Add your message handler code here and/or call default
	TimerNow++;//保证时间的计数
	//增加一个等队列,不空时去检测
	//{}
	for(int i=0;i<8;i++)
	{
		if((ChannelChecked[i]==1)&&(TimerNow%inters[i]==0)&&(beGetting==0))
		{
			while(beGetting)
			{;}
			beGetting=1;
			Trans_Ser->channel=i;
			//UpdateData(TRUE);
			CWinThread* pThread=NULL;
			beTimering=1;
			pThread=AfxBeginThread(AThreadGetdate,this,THREAD_PRIORITY_BELOW_NORMAL,0,0);
			pThread->m_bAutoDelete=FALSE;
			pThread->ResumeThread();
			WaitForSingleObject(pThread->m_hThread,INFINITE);
			//等待线程结束,此函数后面会介绍。
			//while(beGetting)
			//{Sleep(50);}
			beGetting=0;
			delete pThread;
			UpdateData(FALSE);
			//OnShowLastVal();
			New_BK.DrawSingle(pDC_h);
			((CStatic*)GetDlgItem(IDC_PIC))->EnableWindow(FALSE);
		}
	}
//	CDC *pDC;
//	pDC=GetDC();
//	New_BK.DrawSingle(pDC);
//	ReleaseDC(pDC);
	CDialog::OnTimer(nIDEvent);
}


void CInterfaceDlg::OnButton2() 
{
	// TODO: Add your control notification handler code here
//	Serial.PortClose(); 
	CCommunite cdlg;
//	CDialog::OnOK();
	cdlg.DoModal(); 
}

void CInterfaceDlg::OnOpenpic() 
{
	((CStatic*)GetDlgItem(IDC_PIC))->EnableWindow(TRUE);
	DIB dib;
	HBITMAP g_hShowBmp;
	DeleteObject(g_hShowBmp);
//	dib.szFileName="\\P1.bmp";
	g_hShowBmp=dib.DIBLoaditmap();
    ((CStatic*)GetDlgItem(IDC_PIC))->SetBitmap(g_hShowBmp);
    ((CStatic*)GetDlgItem(IDC_PIC))->MoveWindow(New_BK.StartX,New_BK.StartY,New_BK.H_Size+New_BK.StartX,New_BK.V_Size+New_BK.StartY,TRUE);	
	
}

void CInterfaceDlg::OnControlRemote(int add, int chnl)
{
	//CSerial ser;
	//CSerial SerialC;	
	//用于控制的串口
	//SerialC.Open(5,2400); 
	float val;
	float linjie;
	int Bool_Hei;
	char buff_1[3];
	
	//对地址进行字符转换
	if(add>9)
		sprintf(buff_1,"%d",add);
	else
		sprintf(buff_1,"0%d",add);

	if(m_channelinfo[chnl].Bound==1)//是否选择了绑定
	{
		val=m_channelinfo[chnl].SignalLine[m_channelinfo[chnl].SignalIndex-1];
		linjie=255*(m_channelinfo[chnl].Critical-m_channelinfo[chnl].Low)/(m_channelinfo[chnl].Height-m_channelinfo[chnl].Low);
		if(val>linjie)
		{
			Bool_Hei=1;
			for(int i=0;i<3;i++)
				MessageBeep(MB_ICONASTERISK);
			Sleep(50);
			for( i=0;i<3;i++)
				MessageBeep(MB_ICONASTERISK);
		}
		else
			Bool_Hei=0;

		if(m_channelinfo[chnl].Operat==1)//高于临界值是打开
			Serial.ContralOP(buff_1,chnl,Bool_Hei);
		else
			Serial.ContralOP(buff_1,chnl,1-Bool_Hei);

		Sleep(50);
	}
}

void CInterfaceDlg::OnFileSet() 
{
	// TODO: Add your control notification handler code here
	CSetDlg setdlg;
	setdlg.DoModal();
}

void CInterfaceDlg::OnExit() 
{
   EndDialog(0);
   
}
////////////////////////////////
UINT AThreadWriteFile(LPVOID lParam)
{
    HANDLE hFile;
	CString buf;
	BOOL bRc;
    CInterfaceDlg  *adlg=(CInterfaceDlg *)lParam ;

	DWORD dwBytesWritten,dwPos;

 	hFile = CreateFile (TEXT("Data.txt"),      // Open One.txt.TEXT("D:\\Test\\Recv.txt")
                      GENERIC_READ|GENERIC_WRITE,           // Open for reading
                      0,                      // Do not share
                      NULL,                   // No security
                      OPEN_EXISTING,//CREATE_NEW,          // Existing file only
                      FILE_ATTRIBUTE_NORMAL,  // Normal file
                      NULL); 
    dwPos=SetFilePointer(hFile,0,NULL,FILE_END);
	for(int i=0;i<8;i++)
		for(int j=0;j<adlg->m_channelinfo[i].PointCount;j++)
	{
	buf.Format(_T("%4.2f"),adlg->m_channelinfo[i].SignalLine[j]); 
	bRc =WriteFile (hFile,buf,buf.GetLength()*2,&dwBytesWritten, NULL);
	}
	CloseHandle(hFile);
	return 0;
}

void CInterfaceDlg::OnRecord() 
{
   //Isrecord=TRUE;	
}


void CInterfaceDlg::OnControl0() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control0==TRUE)
		key=1;
	else
		key=0;
	Control(0,key);
}

void CInterfaceDlg::OnControl1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control1==TRUE)
		key=1;
	else
		key=0;
	Control(1,key);
}

void CInterfaceDlg::OnControl2() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control2==TRUE)
		key=1;
	else
		key=0;
	Control(2,key);
}

void CInterfaceDlg::OnControl3() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control3==TRUE)
		key=1;
	else
		key=0;
	Control(3,key);
}

void CInterfaceDlg::OnControl4() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control4==TRUE)
		key=1;
	else
		key=0;
	Control(4,key);
}

void CInterfaceDlg::OnControl5() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control5==TRUE)
		key=1;
	else
		key=0;
	Control(5,key);
}

void CInterfaceDlg::OnControl6() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control6==TRUE)
		key=1;
	else
		key=0;
	Control(6,key);
}

void CInterfaceDlg::OnControl7() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int key;		//开或者关
	if(m_control7==TRUE)
		key=1;
	else
		key=0;
	Control(7,key);
}

void CInterfaceDlg::Control(int chnl, int key)
{
	while(beGetting==1)
		Sleep(100);
	beGetting=1;

	if(Serial.m_bOpened==FALSE)
		Serial.Open(5,2400);


	char buff_1[3];
	if(Trans_Ser->add>9)
		sprintf(buff_1,"%d",Trans_Ser->add);
	else
		sprintf(buff_1,"0%d",Trans_Ser->add);


	Serial.ContralOP(buff_1,chnl,key);
	Sleep(100);
	beGetting=0;
}

void CInterfaceDlg::OnCheckCk() 
{
	// TODO: Add your control notification handler code here
	while(beGetting==1)
		Sleep(100);
	beGetting=1;
	if(Serial.m_bOpened==FALSE)
		Serial.Open(5,2400);
	char buff_1[3];
	if(Trans_Ser->add>9)
		sprintf(buff_1,"%d",Trans_Ser->add);
	else
		sprintf(buff_1,"0%d",Trans_Ser->add);


	int GV;
	char buff[10];
	char szMessage[11];
	buff[1]='\0';
	strncpy(szMessage,"AA302000BB",10); 
	szMessage[10]='\0';
	Serial.SendData(szMessage,strlen(szMessage));
    Serial.ReadData(buff);
	{
		    char  Gdata[3];  
		    strncpy(Gdata,buff+4,1);//取得传送来的4位16进制;
		    if(((int)*Gdata)<0)
			    GV=(256+(int)*Gdata);
		    else		
                GV=(int)*Gdata;
	}

	int ss[8]={1,2,4,8,16,32,64,128};

	CString strrr;
	strrr.Format(_T("%d"),GV);
	GetDlgItem(IDC_EDIT2)->SetWindowText(strrr);
	beGetting=0;

	CBitmap bmpr,bmpb;
	bmpr.LoadBitmap(IDB_RED_BMP);
	bmpb.LoadBitmap(IDB_BLACK_BMP);

	for(int j=0;j<8;j++)
	{
		if(!(ss[j]&GV))
			m_bmp[j].SetBitmap(bmpr); 
		else
			m_bmp[j].SetBitmap(bmpb); 
	}  		
}

⌨️ 快捷键说明

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