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

📄 interfacedlg.cpp

📁 一个基于PXA255的水情遥测、遥控系统现场服务器软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// InterfaceDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Interface.h"
#include "InterfaceDlg.h"
#include "ChannelSetting.h"
#include "stdlib.h"
#include "SetDlg.h"
//#include "ChannelInfo.h"
//#include "CSerial.h"
#include "Communite.h"
#include "DIB.h"


#include "stdlib.h"
#include "math.h"
#include <atlconv.h>
#include <stdio.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CSerial  Serial;
/////////////////////////////////////////////////////////////////////////////
// CInterfaceDlg dialog
UINT AThreadWriteFile(LPVOID lParam);

CInterfaceDlg::CInterfaceDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CInterfaceDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CInterfaceDlg)
	m_pointsnum = _T("");
	m_interval = 0;
	m_terminal_com = 2;
	m_control0 = FALSE;
	m_control1 = FALSE;
	m_control2 = FALSE;
	m_control3 = FALSE;
	m_control4 = FALSE;
	m_control5 = FALSE;
	m_control6 = FALSE;
	m_control7 = FALSE;
	//}}AFX_DATA_INIT
	for(int i=0;i<8;i++)
	{
		m_channellabel[i].Format(_T("%d#:"),i);
		m_set2info[i].Format(_T("%d#:"),i);
		m_lastval[i].Format(_T("%d#"),i);
	}
	//设置各曲线的初使化颜色
	StartColour[0]=RGB(255,0,255);
	StartColour[1]=RGB(0,255,255);
	StartColour[2]=RGB(255,255,0);
	StartColour[3]=RGB(0,0,255);
	StartColour[4]=RGB(0,255,0);
	StartColour[5]=RGB(255,0,0);
	StartColour[6]=RGB(255,255,255);
	StartColour[7]=RGB(102,0,255);
	
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CInterfaceDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInterfaceDlg)
	
	DDX_CBString(pDX, IDC_PointsNum_COM, m_pointsnum);
	DDX_Text(pDX, IDC_InterVal_EDIT, m_interval);
	DDX_CBIndex(pDX, IDC_Terminal_COM, m_terminal_com);
	DDX_Check(pDX, IDC_CONTROL_0, m_control0);
	DDX_Check(pDX, IDC_CONTROL_1, m_control1);
	DDX_Check(pDX, IDC_CONTROL_2, m_control2);
	DDX_Check(pDX, IDC_CONTROL_3, m_control3);
	DDX_Check(pDX, IDC_CONTROL_4, m_control4);
	DDX_Check(pDX, IDC_CONTROL_5, m_control5);
	DDX_Check(pDX, IDC_CONTROL_6, m_control6);
	DDX_Check(pDX, IDC_CONTROL_7, m_control7);
	//}}AFX_DATA_MAP
	//DDX_CBString(pDX, IDC_Terminal_COM, m_terminal_com);
	//DDX_CBIndex(pDX, IDC_Terminal_COM, m_terminal_com);

	DDX_Control(pDX, IDC_STATIC0, m_bmp[0]);
	DDX_Control(pDX, IDC_STATIC1, m_bmp[1]);
	DDX_Control(pDX, IDC_STATIC2, m_bmp[2]);
	DDX_Control(pDX, IDC_STATIC3, m_bmp[3]);
	DDX_Control(pDX, IDC_STATIC4, m_bmp[4]);
	DDX_Control(pDX, IDC_STATIC5, m_bmp[5]);
	DDX_Control(pDX, IDC_STATIC6, m_bmp[6]);
	DDX_Control(pDX, IDC_STATIC7, m_bmp[7]);

	DDX_Check(pDX, IDC_CHANNELCHECK_0, ChannelChecked[0]);
	DDX_Check(pDX, IDC_CHANNELCHECK_1, ChannelChecked[1]);
	DDX_Check(pDX, IDC_CHANNELCHECK_2, ChannelChecked[2]);
	DDX_Check(pDX, IDC_CHANNELCHECK_3, ChannelChecked[3]);
	DDX_Check(pDX, IDC_CHANNELCHECK_4, ChannelChecked[4]);
	DDX_Check(pDX, IDC_CHANNELCHECK_5, ChannelChecked[5]);
	DDX_Check(pDX, IDC_CHANNELCHECK_6, ChannelChecked[6]);
	DDX_Check(pDX, IDC_CHANNELCHECK_7, ChannelChecked[7]);

	DDX_Control(pDX, IDC_SetColour_BT7, m_setcolour[7]);
	DDX_Control(pDX, IDC_SetColour_BT6, m_setcolour[6]);
	DDX_Control(pDX, IDC_SetColour_BT5, m_setcolour[5]);
	DDX_Control(pDX, IDC_SetColour_BT4, m_setcolour[4]);
	DDX_Control(pDX, IDC_SetColour_BT3, m_setcolour[3]);
	DDX_Control(pDX, IDC_SetColour_BT2, m_setcolour[2]);
	DDX_Control(pDX, IDC_SetColour_BT1, m_setcolour[1]);
	DDX_Control(pDX, IDC_SetColour_BT0, m_setcolour[0]);

	DDX_Text(pDX, IDC_CHANNELLABEL_0, m_channellabel[0]);
	DDX_Text(pDX, IDC_CHANNELLABEL_1, m_channellabel[1]);
	DDX_Text(pDX, IDC_CHANNELLABEL_2, m_channellabel[2]);
	DDX_Text(pDX, IDC_CHANNELLABEL_3, m_channellabel[3]);
	DDX_Text(pDX, IDC_CHANNELLABEL_4, m_channellabel[4]);
	DDX_Text(pDX, IDC_CHANNELLABEL_5, m_channellabel[5]);
	DDX_Text(pDX, IDC_CHANNELLABEL_6, m_channellabel[6]);
	DDX_Text(pDX, IDC_CHANNELLABEL_7, m_channellabel[7]);

	DDX_Text(pDX, IDC_SET2INFO_0, m_set2info[0]);
	DDX_Text(pDX, IDC_SET2INFO_1, m_set2info[1]);
	DDX_Text(pDX, IDC_SET2INFO_2, m_set2info[2]);
	DDX_Text(pDX, IDC_SET2INFO_3, m_set2info[3]);
	DDX_Text(pDX, IDC_SET2INFO_4, m_set2info[4]);
	DDX_Text(pDX, IDC_SET2INFO_5, m_set2info[5]);
	DDX_Text(pDX, IDC_SET2INFO_6, m_set2info[6]);
	DDX_Text(pDX, IDC_SET2INFO_7, m_set2info[7]);

	DDX_Text(pDX, IDC_LASTVAL_0, m_lastval[0]);	
	DDX_Text(pDX, IDC_LASTVAL_1, m_lastval[1]);	
	DDX_Text(pDX, IDC_LASTVAL_2, m_lastval[2]);	
	DDX_Text(pDX, IDC_LASTVAL_3, m_lastval[3]);	
	DDX_Text(pDX, IDC_LASTVAL_4, m_lastval[4]);	
	DDX_Text(pDX, IDC_LASTVAL_5, m_lastval[5]);	
	DDX_Text(pDX, IDC_LASTVAL_6, m_lastval[6]);	
	DDX_Text(pDX, IDC_LASTVAL_7, m_lastval[7]);	

}

BEGIN_MESSAGE_MAP(CInterfaceDlg, CDialog)
	//{{AFX_MSG_MAP(CInterfaceDlg)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_BUTTON13, OnGotoChannelSet)
	ON_BN_CLICKED(IDC_BUTTON4, OnSavePic)
	ON_BN_CLICKED(IDC_BUTTON17, OnSetBench)
	ON_BN_CLICKED(IDC_BUTTON15, OnSetPoints)
	ON_BN_CLICKED(IDC_BUTTON16, OnSetInterval)
	ON_BN_CLICKED(IDC_BUTTON14, OnReFreash)
	ON_BN_CLICKED(IDC_START_CK, OnStart)
	ON_BN_CLICKED(IDC_CHANNELCHECK_0, OnChannelcheck0)
	ON_BN_CLICKED(IDC_CHANNELCHECK_1, OnChannelcheck1)
	ON_BN_CLICKED(IDC_CHANNELCHECK_2, OnChannelcheck2)
	ON_BN_CLICKED(IDC_CHANNELCHECK_3, OnChannelcheck3)
	ON_BN_CLICKED(IDC_CHANNELCHECK_4, OnChannelcheck4)
	ON_BN_CLICKED(IDC_CHANNELCHECK_5, OnChannelcheck5)
	ON_BN_CLICKED(IDC_CHANNELCHECK_6, OnChannelcheck6)
	ON_BN_CLICKED(IDC_CHANNELCHECK_7, OnChannelcheck7)
	ON_BN_CLICKED(IDC_BUTTON1, OnSetCommPort)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnOpenpic)
	ON_BN_CLICKED(IDC_BUTTON18, OnFileSet)
	ON_BN_CLICKED(IDC_BUTTON19, OnExit)
	ON_BN_CLICKED(IDC_BUTTON21, OnRecord)
	ON_BN_CLICKED(IDC_CONTROL_0, OnControl0)
	ON_BN_CLICKED(IDC_CONTROL_1, OnControl1)
	ON_BN_CLICKED(IDC_CONTROL_2, OnControl2)
	ON_BN_CLICKED(IDC_CONTROL_3, OnControl3)
	ON_BN_CLICKED(IDC_CONTROL_4, OnControl4)
	ON_BN_CLICKED(IDC_CONTROL_5, OnControl5)
	ON_BN_CLICKED(IDC_CONTROL_6, OnControl6)
	ON_BN_CLICKED(IDC_CONTROL_7, OnControl7)
	ON_BN_CLICKED(IDC_CHECK_CK, OnCheckCk)
	//}}AFX_MSG_MAP
	ON_MESSAGE(CPN_SELENDOK,     OnSelEndOK)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInterfaceDlg message handlers

BOOL CInterfaceDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
//	CCeCommandBar	*pCommandBar=(CCeCommandBar *) m_pWndEmptyCB;
//	pCommandBar->InsertMenuBar(IDR_MENU1);

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	// TODO: Add extra initialization here
	CDC *pDC;
	pDC=GetDC();
    Isrecord=FALSE;
	New_BK.H_Grid_Count=10;		//设置水平的格数
	New_BK.V_Grid_Count=5;		//设置垂直的格数
	New_BK.H_Size=300;			
	New_BK.V_Size=150;
	New_BK.StartX=5;
	New_BK.StartY=90;
	New_BK.BK_Color=RGB(0,0,0);

	New_BK.Init_BK();
	New_BK.Draw_BK(pDC);

	New_BK.channel=m_channelinfo;

	ReleaseDC(pDC);
	
	for(int i=0;i<8;i++)
	{
		m_channelinfo[i].DrawColour=StartColour[i];
		m_channelinfo[i].SignalLine=new float [300];		//开缓冲队列
		m_setcolour[i].SetBkColour(StartColour[i]);
	}

	Trans_Ser=new Serial_51;
	Trans_Ser->add=2;	//设置默认的终端地址

	m_interval=2;
	m_terminal_com;
	m_pointsnum=_T("300");
	

	TimerNow=0;
	beGetting=0;
	beTimering=0;
	beStarting=0;
	
	pDC_h=GetDC();

	ReadConfigs();		//读配置文件
	ShowLabel();		//显示配置标签
	Onshowset2info();	//显示右上的对通道的二次设置的值

    Isrecord=FALSE;
	return TRUE;  // return TRUE  unless you set the focus to a control
}



void CInterfaceDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CDialog::OnPaint();
	// TODO: Add your message handler code here
	
	CDC *pDC;
	pDC=GetDC();
	if(beStarting==0)
		New_BK.Draw_BK(pDC);
	else
		New_BK.DrawSingle(pDC);
	

	ReleaseDC(pDC);

	// Do not call CDialog::OnPaint() for painting messages
}

void CInterfaceDlg::OnGotoChannelSet() 
{
	// TODO: Add your control notification handler code here
	//去设置配置文件
	CChannelSetting	setch;
	setch.DoModal();
}



//读取配置文件并赋值给8路通道类的对象
//读取配置文件并赋值给8路通道类的对象
void CInterfaceDlg::ReadConfigs()
{
  	HANDLE hFile;
 	hFile = CreateFile (_T("\\Recv.txt"),      // Open One.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); 
	DWORD  dwBytesRead;
	BOOL bRc;
    CString temp;
	if (hFile == INVALID_HANDLE_VALUE)
	{
    // Your error-handling code goes here.
	//	AfxMessageBox(_T("Could not Great Recv.TXT"));
		return;
	}
	
	TCHAR buff1[20];
	float temp2;
	for(int i=0;i<8;i++)
	{
	//读名字
	bRc = ReadFile(hFile,buff1,40, &dwBytesRead, NULL);
	m_channelinfo[i].Name=buff1;
	//读高值
	bRc = ReadFile(hFile,buff1,40, &dwBytesRead, NULL);
	USES_CONVERSION;
	m_channelinfo[i].Height=(double)atof(W2A(buff1));
	//读低值
	bRc = ReadFile(hFile,buff1,40, &dwBytesRead, NULL);
	m_channelinfo[i].Low=(double)atof(W2A(buff1));
	//读临界值
	bRc = ReadFile(hFile,buff1,40, &dwBytesRead, NULL);
	m_channelinfo[i].Critical=(double)atof(W2A(buff1));
	//读操作
	bRc = ReadFile(hFile,buff1,40, &dwBytesRead, NULL);
    temp.Format(_T("%s"),buff1);
	if(temp.Compare(_T("1"))==0)
    m_channelinfo[i].Operat=1;
	else
    m_channelinfo[i].Operat=0;
	//读绑定
	bRc = ReadFile(hFile,buff1,40, &dwBytesRead, NULL);
    temp.Format(_T("%s"),buff1);
	if(temp.Compare(_T("1"))==0)
		m_channelinfo[i].Bound=1;
	else
		m_channelinfo[i].Bound=0;

	//读手工
	bRc = ReadFile(hFile,buff1,40, &dwBytesRead, NULL);
    temp.Format(_T("%s"),buff1);
	if(temp.Compare(_T("1"))==0)
    m_channelinfo[i].Handle=1;
	else
    m_channelinfo[i].Handle=0;
	}
	UpdateData(FALSE);
    CloseHandle(hFile);
}


//显示标签显示标签  左侧
void CInterfaceDlg::ShowLabel()
{
	for(int i=0;i<8;i++)
	{
		m_channellabel[i].Format(_T("%d#:%s;%3.2f-%3.2f"),i,m_channelinfo[i].Name,m_channelinfo[i].Low,m_channelinfo[i].Height);
	}
	UpdateData(FALSE);

}



void CInterfaceDlg::OnSavePic() 
{
	// TODO: Add your control notification handler code here
	//保存图片
	DIB dib;
	CFile   file;  //文件

	CRect	rect(New_BK.StartX,New_BK.StartY,New_BK.H_Size+New_BK.StartX,New_BK.V_Size+New_BK.StartY);       //截图的矩形区域
	//CRect	rect;       //截图的矩形区域
	//GetClientRect(&rect);
	//CRect rect=GetRect();
	CString lpszFileName;            //文件名
	HBITMAP hSourceBmp=NULL;         //抓出的位图句柄
    dib.szFileName="\\P1.bmp";
	//	AfxGetMainWnd()->GetClientRect(&rect); 
	//CopyScreenToDIB,直接转换为DIB数据,然后再传递给SaveDIBToFile()
    hSourceBmp = dib.CopyScreenToBitmap(AfxGetMainWnd()->m_hWnd,&rect);
	//将句柄转换为DIB数据
	LPSTR lpDIB=dib.GettingBits(hSourceBmp);

	BOOL bResult=dib.SaveDIBToFile(lpDIB);
	ASSERT(bResult!=FALSE);
	DeleteObject(hSourceBmp);
	if(lpDIB!=NULL)
	{
		LocalFree(lpDIB); //用LocalAlloc和LocalFree才是正确的方法。
		lpDIB=NULL;
	}	
}

void CInterfaceDlg::OnSetBench() 
{
	// TODO: Add your control notification handler code here
	//设置基准
	int chn;
	chn=((CComboBox *)GetDlgItem(IDC_Bench_COM))->GetCurSel();
	for(int i=0;i<8;i++)
		m_channelinfo[i].Bench=chn;

}




/*
  	//检测通道的选择
	UpdateData(TRUE);
	for(int i=0;i<8;i++)
	{
		m_lastval[i].Format(_T("%d:%d"),i,ChannelChecked[i]);
	}
	
	UpdateData(FALSE);
*/

void CInterfaceDlg::OnSetPoints() 
{
	// TODO: Add your control notification handler code here
	//设置通道的每屏的点数
	//OK!
	int chn,pots,chn2;
	UpdateData(TRUE);
	chn=((CComboBox *)GetDlgItem(IDC_PointsCH_COM))->GetCurSel();
	chn2=((CComboBox *)GetDlgItem(IDC_PointsNum_COM))->GetCurSel();
	pots=_ttoi(m_pointsnum);
	m_channelinfo[chn].PointCount=pots;
	Onshowset2info();
	
}

void CInterfaceDlg::OnSetInterval() 
{
	// TODO: Add your control notification handler code here
	//设置自动采集的时间间隔
	//OK
	int chn,inter_unit;
	UpdateData(TRUE);
	chn=((CComboBox *)GetDlgItem(IDC_InterCH_COM))->GetCurSel();
	inter_unit=((CComboBox *)GetDlgItem(IDC_InterTime_COM))->GetCurSel();
	switch(inter_unit)
	{
	case 0:
		m_channelinfo[chn].Interval=m_interval;
		break;
	case 1:
		m_channelinfo[chn].Interval=m_interval*60;
		break;
	case 2:
		m_channelinfo[chn].Interval=m_interval*3600;
		break;
	default:
		break;
	}
	/******************/
	/******************/
	/******************/
	inters[chn]=m_channelinfo[chn].Interval;
	m_channelinfo[chn].IntervalUnit=inter_unit;

	Onshowset2info();
}

void CInterfaceDlg::OnShowLastVal()
{
	//显示最近一次的取值
}

void CInterfaceDlg::OnShowSET2INFO()
{
	//显示设置的对通道的第二次设置,间隔,点数等
}


//显示右上的对通道的二次设置的值
void CInterfaceDlg::Onshowset2info()
{
	for(int i=0;i<8;i++)
	{
		m_set2info[i].Format(_T("%d#:%d;%d;xx"),i,m_channelinfo[i].PointCount,m_channelinfo[i].Interval);
	}
	UpdateData(FALSE);
}
LONG CInterfaceDlg::OnSelEndOK(UINT lParam, LONG wParam)
{
	for(int i=0;i<8;i++)
		m_channelinfo[i].DrawColour=m_setcolour[i].GetColour();
/*	
	switch(wParam)
	{
		

	case IDC_SetColour_BT0:
		m_channelinfo[0].DrawColour=m_setcolor[0].GetColour();
		break;
	case IDC_SetColour_BT1:
		New_BK.BK_Color=m_bg_color_bt.GetColour();
		break;
	case IDC_SetColour_BT2:
		New_BK.Squared_Color=m_grid_color_bt.GetColour();
		break;
	case IDC_SetColour_BT3:
		New_BK.Center_Color=m_center_color_bt.GetColour();
		break;
	case IDC_SetColour_BT4:
		New_BK.Center_Color=m_center_color_bt.GetColour();
		break;
	case IDC_SetColour_BT5:
		New_BK.Center_Color=m_center_color_bt.GetColour();
		break;
	case IDC_SetColour_BT6:
		New_BK.Center_Color=m_center_color_bt.GetColour();
		break;
	case IDC_SetColour_BT7:
		New_BK.Center_Color=m_center_color_bt.GetColour();
		break;

	}

	*/	

⌨️ 快捷键说明

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