📄 interfacedlg.cpp
字号:
// 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 + -