📄 dk20dieselizedynamotordlg.cpp
字号:
// DK20DieselizeDynamotorDlg.cpp : implementation file
//
#include "stdafx.h"
#include "DK20DieselizeDynamotor.h"
#include "DK20DieselizeDynamotorDlg.h"
#include "math.h"
#include "RecordWarning.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define SPEED 300 ;
void Send7045Command_1(int iPort , BOOL bopen) ;
void Send7045Command_2(int iPort , BOOL bopen) ;
void Send7045Command_3(int iPort , BOOL bopen) ;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
extern CDK20DieselizeDynamotorDlg * mainDlg;
extern byte bPortStatus1[16];
extern byte bPortStatus2[16];
extern byte bPortStatus3[16];
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#define WAITDELAY 130
/////////////////////////////////////////////////////////////////////////////
// CDK20DieselizeDynamotorDlg dialog
CDK20DieselizeDynamotorDlg::CDK20DieselizeDynamotorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDK20DieselizeDynamotorDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDK20DieselizeDynamotorDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CDK20DieselizeDynamotorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDK20DieselizeDynamotorDlg)
DDX_Control(pDX, IDC_TAB1, m_TCShow);
DDX_Control(pDX, IDC_BUTTON_EXIT, m_btnExit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDK20DieselizeDynamotorDlg, CDialog)
//{{AFX_MSG_MAP(CDK20DieselizeDynamotorDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_EXIT, OnButtonExit)
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void Send7045Command1(BYTE bytestatus[16])
{
ZeroMemory(byteArray1,20) ;
byteArray1[0] ='@' ;
byteArray1[1] ='0' ;
byteArray1[2] ='6' ;
byteArray1[7] =0x0D ;
char szTmp[1] ;
int iSendstatus = 0 ;
int iByteindex =0 ;
for(int i = 15 ; i >=0 ; i-= 4)
{
iByteindex++ ;
iSendstatus = 0 ;
for(int j = 0 ; j <4 ; j++)
{
iSendstatus += bytestatus[i-j]*pow(2 , 3 - j ) ;
}
ZeroMemory(szTmp,1 );
sprintf(szTmp , "%X" ,iSendstatus);
sprintf(szTmp , "%C" ,szTmp[0]);
byteArray1[2+iByteindex] = szTmp[0] ;
}
m_pSerial1->WritePort((char*)byteArray1 ,8) ;
m_pSerial1->WaitForResponse(strData1 , WAITDELAY) ;
}
void Send7045Command2(BYTE bytestatus[16])
{
ZeroMemory(byteArray2,20) ;
byteArray2[0] ='@' ;
byteArray2[1] ='0' ;
byteArray2[2] ='6' ;
byteArray2[7] =0x0D ;
char szTmp[1] ;
int iSendstatus = 0 ;
int iByteindex =0 ;
for(int i = 15 ; i >=0 ; i-= 4)
{
iByteindex++ ;
iSendstatus = 0 ;
for(int j = 0 ; j <4 ; j++)
{
iSendstatus += bytestatus[i-j]*pow(2 , 3 - j ) ;
}
ZeroMemory(szTmp,1 );
sprintf(szTmp , "%X" ,iSendstatus);
sprintf(szTmp , "%C" ,szTmp[0]);
byteArray2[2+iByteindex] = szTmp[0] ;
}
m_pSerial2->WritePort((char*)byteArray2 ,8) ;
m_pSerial2->WaitForResponse(strData2 , WAITDELAY) ;
}
void Send7045Command3(BYTE bytestatus[16])
{
ZeroMemory(byteArray3,20) ;
byteArray3[0] ='@' ;
byteArray3[1] ='0' ;
byteArray3[2] ='6' ;
byteArray3[7] =0x0D ;
char szTmp[1] ;
int iSendstatus = 0 ;
int iByteindex =0 ;
for(int i = 15 ; i >=0 ; i-= 4)
{
iByteindex++ ;
iSendstatus = 0 ;
for(int j = 0 ; j <4 ; j++)
{
iSendstatus += bytestatus[i-j]*pow(2 , 3 - j ) ;
}
ZeroMemory(szTmp,1 );
sprintf(szTmp , "%X" ,iSendstatus);
sprintf(szTmp , "%C" ,szTmp[0]);
byteArray3[2+iByteindex] = szTmp[0] ;
}
m_pSerial3->WritePort((char*)byteArray3 ,8) ;
m_pSerial3->WaitForResponse(strData3 , WAITDELAY) ;
}
char IntTochar(int i)
{
char rc;
switch(i)
{
case 0:
rc='0';
break;
case 1:
rc='1';
break;
case 2:
rc='2';
break;
case 3:
rc='3';
break;
case 4:
rc='4';
break;
case 5:
rc='5';
break;
case 6:
rc='6';
break;
case 7:
rc='7';
break;
case 8:
rc='8';
break;
case 9:
rc='9';
break;
case 10:
rc='A';
break;
case 11:
rc='B';
break;
case 12:
rc='C';
break;
case 13:
rc='D';
break;
case 14:
rc='E';
break;
case 15:
rc='F';
break;
default:
;
}
return rc;
}
void HexStatus(BYTE * bValue,int iNum , int iHex )
{
int iTmp = iHex ;
for (int i = 0 ;i< iNum ; i++)
{
if (iTmp & 1 ==1 )
{
bValue[i] =1 ;
}
else
bValue[i] =0 ;
iTmp >>= 1 ;
}
}
//将单个数字转换为对应的8位2进制数
int ConvertHex(CString &str)
{
int A1 =0 ;
if (str =="A") A1 =10 ;
if (str =="B") A1 =11;
if (str =="C") A1 =12 ;
if (str =="D") A1 =13 ;
if (str =="E") A1 =14 ;
if (str =="F") A1 =15;
if (str =="0") A1 =0;
if (str =="1") A1 =1;
if (str =="2") A1 =2;
if (str =="3") A1 =3;
if (str =="4") A1 =4;
if (str =="5") A1 =5;
if (str =="6") A1 =6;
if (str =="7") A1 =7;
if (str =="8") A1 =8;
if (str =="9") A1 =9;
return A1 ;
}
int HexToint(CString &str)
{
CString str1 =str.Mid(0,1) ;
CString str2 = str.Mid(1,1) ;
CString str3 =str.Mid(2,1) ;
CString str4 = str.Mid(3,1) ;
int A1=0 , A2 = 0 , A3= 0 , A4= 0 ;
A1 =atoi((LPSTR)(LPCTSTR)str1) ;
if (str1 =="A") A1 =10 ;
if (str1 =="B") A1 =11 ;
if (str1 =="C") A1 =12 ;
if (str1 =="D") A1 =13 ;
if (str1 =="E") A1 =14 ;
if (str1 =="F") A1 =15 ;
A2 =atoi((LPSTR)(LPCTSTR)str2) ;
if (str2 =="A") A2 =10 ;
if (str2 =="B") A2 =11 ;
if (str2 =="C") A2 =12 ;
if (str2 =="D") A2 =13 ;
if (str2 =="E") A2 =14 ;
if (str2 =="F") A2 =15;
A3 =atoi((LPSTR)(LPCTSTR)str3) ;
if (str3 =="A") A3 =10 ;
if (str3 =="B") A3 =11 ;
if (str3 =="C") A3 =12 ;
if (str3 =="D") A3 =13 ;
if (str3 =="E") A3 =14 ;
if (str3 =="F") A3 =15 ;
A4 =atoi((LPSTR)(LPCTSTR)str4) ;
if (str4 =="A") A4 =10 ;
if (str4 =="B") A4 =11 ;
if (str4 =="C") A4 =12 ;
if (str4 =="D") A4 =13 ;
if (str4 =="E") A4 =14 ;
if (str4 =="F") A4 =15;
int aTmp = 0 ;
aTmp = A1*16*16*16 +A2*16*16 + A3*16 + A4 ;
return aTmp ;
}
void ComDataArrive1(char *data,int length,DWORD userdata)
{
strData1 +=CString(data);
return ; //直接返回
}
void ComDataArrive2(char *data,int length,DWORD userdata)
{
strData2 +=CString(data);
return ; //直接返回
}
void ComDataArrive3(char *data,int length,DWORD userdata)
{
strData3 +=CString(data);
return ; //直接返回
}
/////////////////////////////////////////////////////////////////////////////
// CDK20DieselizeDynamotorDlg message handlers
BOOL CDK20DieselizeDynamotorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 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
// TODO: Add extra initialization here
VERIFY(m_font.CreateFont(
36, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_BOLD, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("Arial"))); // lpszFacename
for (int x= 0 ;x<16;x++)
{
bPortStatus1[x] = 0;
}
CString strDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
CString strDsn;
CString strFile = "D:\\DK20DieselizeDynamotor\\dk20.mdb";
strDsn.Format("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s",strDriver,strFile);
TRY
{
m_db.Open(NULL,false,false,strDsn);
CString strConnect = m_db.GetConnect();
bOpen=true;
}
CATCH(CDBException,e)
{
AfxMessageBox("Database Error:" + e->m_strError+" 数据库打开失败");
bOpen=false;
}
END_CATCH
strData1=_T("");
strData2=_T("");
strData3=_T("");
m_pSerial1->OpenPort("COM4:",9600,8,ONESTOPBIT,NOPARITY,ComDataArrive1,(DWORD)this);
m_pSerial2->OpenPort("COM6:",9600,8,ONESTOPBIT,NOPARITY,ComDataArrive2,(DWORD)this);
m_pSerial3->OpenPort("COM5:",9600,8,ONESTOPBIT,NOPARITY,ComDataArrive3,(DWORD)this);
this->ShowWindow(SW_MAXIMIZE);
CRect rc(0,56,1280,622);
m_TCShow.MoveWindow(&rc);
if (bChinese)
{
m_TCShow.InsertItem(0,"关键性报警信息");
m_TCShow.InsertItem(1,"全部报警信息");
m_TCShow.InsertItem(2,"压力、液位与转速报警信息");
m_TCShow.InsertItem(3,"温度报警信息");
m_TCShow.InsertItem(4,"打印记录与记录查询");
m_TCShow.InsertItem(5,"报警值设置");
SetModeChinese();
}
else
{
m_TCShow.InsertItem(0,"DYNAMOTOR IMPORT INSPECT");
m_TCShow.InsertItem(1,"DYNAMOTOR INSPECT");
m_TCShow.InsertItem(2,"DYNAMOTOR DRANG INSPECT");
m_TCShow.InsertItem(3,"DYNAMOTOR TREMPERATURE INSPECT");
m_TCShow.InsertItem(4,"DYNAMOTOR INFORMATION PRINT");
m_TCShow.InsertItem(5,"DYNAMOTOR INSPECT SETTING");
m_btnExit.SetWindowText("EXIT");
SetModeEnglish();
}
dlgImport.Create(IDD_DIALOG_IMPORT,GetDlgItem(IDC_TAB1));
dlgAll.Create(IDD_DIALOG_ALL,GetDlgItem(IDC_TAB1));
dlgDrang.Create(IDD_DIALOG_DRANG,GetDlgItem(IDC_TAB1));
dlgTemperature.Create(IDD_DIALOG_TREMPERATURE,GetDlgItem(IDC_TAB1));
dlgPrinter.Create(IDD_DIALOG_PRINTER,GetDlgItem(IDC_TAB1));
dlgSetting.Create(IDD_DIALOG_SETTING,GetDlgItem(IDC_TAB1));
CRect rect;
m_TCShow.GetClientRect(&rect);
rect.top+=20;
rect.left+=3;
dlgImport.MoveWindow(&rect);
dlgAll.MoveWindow(&rect);
dlgDrang.MoveWindow(&rect);
dlgTemperature.MoveWindow(&rect);
dlgPrinter.MoveWindow(&rect);
dlgSetting.MoveWindow(&rect);
dlgAll.ShowWindow(TRUE);
Sleep(100);
dlgAll.ShowWindow(FALSE);
dlgImport.ShowWindow(TRUE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -