📄 oxcygentestdlg.cpp
字号:
info.DoModal();
}
void COxcygenTestDlg::OnButtonCheck()
{
// TODO: Add your control notification handler code here
CCheck check;
check.DoModal();
}
void COxcygenTestDlg::OnChangeEditSend()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
CString str0;
GetDlgItemText(IDC_EDIT_SEND,str0);
if(str0.GetLength() == 0) {
GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(false);
}
else {
GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(true);
}
}
void COxcygenTestDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
/////////////////////////////////////////////////////////////////////////////////////
extern unsigned char Draw_count;
if(GetDlgItemText(IDC_BUTTON_START,str),str=="结束") {
if((Draw_count++) == 5) {//显示曲线每秒显扫描一次
CDialog::OnTimer(nIDEvent);
CRect rect;
GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(&rect);
ScreenToClient(rect);
InvalidateRect(rect,false);
Draw_count = 0;
}
}
//获取下位机信息
extern unsigned char flag_info;//从机信息接收完成标志位
CByteArray hexdata;
CString m1,m2,m3,m4,m5,m6;
extern unsigned char startch, slaveadd, command, hdata, ldata, check;
extern unsigned char m_Start_char, m_Slave_add;
//从slaveadd.ini中获得从机地址
char *pBuf;
DWORD dwFileLen;
CFile file_slaveadd("slaveadd.ini",CFile::modeRead);
dwFileLen=file_slaveadd.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file_slaveadd.Read(pBuf,dwFileLen);
file_slaveadd.Close();
m_Slave_add = String2int(pBuf[2], pBuf[3]);//"0x23"
delete [] pBuf;
//从startch.ini中获得开始字节数据
CFile file_startch("startch.ini",CFile::modeRead);//"0xff"
dwFileLen=file_startch.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file_startch.Read(pBuf,dwFileLen);
file_startch.Close();
m_Start_char = String2int(pBuf[2], pBuf[3]);
delete [] pBuf;
startch = m_Start_char;
slaveadd = m_Slave_add;
CString commond_str[] = {"Slavetype", "Gastype", "Gasmeaur", "Protype", "A1", "A2"};
extern unsigned char count_info;
if(!flag_info) {//如果从机信息还未接收完,继续发送指令
if(count_info == 4) {
command = 0x12;//返回A1的报警值
}
else if(count_info == 5) {
command = 0x13;//返回A2的报警值
}
else {
command = count_info;//i;///////////////////////////////////////////////
}
hdata = 0;////////////////////////////////////////////////////
ldata = 0;/////////////////////////////////////////////////////
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
extern CString flag;
flag = commond_str[count_info];
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
count_info++;
}
if(count_info == 6) {//如果发送给从机的信息发送完毕
flag_info = 1;//变为1
GetDlgItem(IDC_BUTTON_START)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_SET)->EnableWindow(true);
count_info = 0;
return;
}
extern unsigned char command_info;
if(flag_info && command_info == 0) {//////////////////////////////////////////////////////
command = 0x10;//i;///////////////////////////////////////////////
command &= 0x7f;//最高位取0
hdata = 0;////////////////////////////////////////////////////
ldata = 0;/////////////////////////////////////////////////////
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
extern CString flag;
flag = "Gasppm";
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
command_info++;
}
else if(flag_info && command_info == 1) {//////////////////////////////////////////////////
command = 0x11;//i;///////////////////////////////////////////////
hdata = 0;////////////////////////////////////////////////////
ldata = 0;/////////////////////////////////////////////////////
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
extern CString flag;
flag = "Gasadc";
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
command_info = 0;
}
UpdateData(false);
}
void COxcygenTestDlg::OnButtonA1()
{
// TODO: Add your control notification handler code here
CByteArray hexdata;
CString m1,m2,m3,m4,m5,m6;
extern unsigned char startch, slaveadd, command, hdata, ldata, check;
extern unsigned char m_Start_char, m_Slave_add;
extern unsigned long gasmeaur_info;//气体量程
startch = m_Start_char;
slaveadd = m_Slave_add;
command = 0x19;
CString str0;
GetDlgItemText(IDC_EDIT_A1,str0);
if(str0.GetLength() == 0) {//判断高字节数据是否输入
MessageBox("输入有误,请重新输入高字节数据!");
return;
}
LPTSTR p = str0.GetBuffer(str0.GetLength());
float data = (float)atoi(p)/(gasmeaur_info/10000);
hdata = (unsigned char)((int)data / 128);
ldata = (unsigned char)((int)data % 128);//m_Slave_add;//m_Slave_add;
extern unsigned long a1_info;
a1_info = hdata * 128 + ldata;
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
extern CString flag;
flag = "OnButtonA1";
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
}
void COxcygenTestDlg::OnButtonA2()
{
// TODO: Add your control notification handler code here
CByteArray hexdata;
CString m1,m2,m3,m4,m5,m6;
extern unsigned char startch, slaveadd, command, hdata, ldata, check;
extern unsigned char m_Start_char, m_Slave_add;
extern unsigned long gasmeaur_info;//气体量程
startch = m_Start_char;
slaveadd = m_Slave_add;
command = 0x1a;
CString str0;
GetDlgItemText(IDC_EDIT_A2,str0);
if(str0.GetLength() == 0) {//判断高字节数据是否输入
MessageBox("输入有误,请重新输入高字节数据!");
return;
}
LPTSTR p = str0.GetBuffer(str0.GetLength());
float data = (float)atoi(p)/(gasmeaur_info/10000);
hdata = (unsigned char)((int)data / 128);
ldata = (unsigned char)((int)data % 128);//m_Slave_add;//m_Slave_add;
extern unsigned long a2_info;
a2_info = hdata * 128 + ldata;
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
extern CString flag;
flag = "OnButtonA2";
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
}
void COxcygenTestDlg::OnButtonGas()
{
// TODO: Add your control notification handler code here
CByteArray hexdata;
CString m1,m2,m3,m4,m5,m6;
extern unsigned char startch, slaveadd, command, hdata, ldata, check;
extern unsigned char m_Start_char, m_Slave_add;
startch = m_Start_char;
slaveadd = m_Slave_add;
command = 0x06;
int num;
CString str0;
GetDlgItemText(IDC_COMBO_GAS,str0);
if(str0 == "一氧化碳(CO)")
num=0;
else if(str0 == "硫化氢(H2S)")
num=1;
else if(str0 == "氧气(O2)")
num=2;
else if(str0 == "可燃气体(Ex)")
num=3;
else if(str0 == "二氧化氮(NO2)")
num=4;
else if(str0 == "一氧化氮(NO)")
num=5;
else if(str0 == "二氧化硫(SO2)")
num=6;
else if(str0 == "氯气(CL2)")
num=7;
else if(str0 == "氨气(NH3)")
num=8;
else if(str0 == "氢气(H2)")
num=9;
else if(str0 == "磷化氢(PH3)")
num=10;
else if(str0 == "甲醛(CH2O)")
num=11;
else if(str0 == "臭氧(O3)")
num=12;
else if(str0 == "氟气(F2)")
num=13;
else if(str0 == "氟化氢(HF)")
num=14;
else if(str0 == "氯化氢(HCl)")
num=15;
else if(str0 == "溴化氢(HBr)")
num=16;
else if(str0 == "环氧乙烷(C2H4O)")
num=17;
else if(str0 == "光气(COCL2)")
num=18;
else if(str0 == "硅烷(SiH4)")
num=19;
else if(str0 == "二氧化氯(ClO2)")
num=20;
else num = 0;
hdata = 0;
ldata = num + 1;
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
extern unsigned long gasnum_info;
gasnum_info = ldata;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
extern CString flag;
flag = "OnButtonGas";
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
}
void COxcygenTestDlg::OnButtonMeas()
{
// TODO: Add your control notification handler code here
CByteArray hexdata;
CString m1,m2,m3,m4,m5,m6;
extern unsigned char startch, slaveadd, command, hdata, ldata, check;
extern unsigned char m_Start_char, m_Slave_add;
extern unsigned long gasmeaur_info;//气体量程
startch = m_Start_char;
slaveadd = m_Slave_add;
command = 0x07;
CString str0;
GetDlgItemText(IDC_EDIT_MEAUR,str0);
if(str0.GetLength() == 0) {//判断高字节数据是否输入
MessageBox("输入有误,请重新输入高字节数据!");
return;
}
LPTSTR p = str0.GetBuffer(str0.GetLength());
hdata = (unsigned char)(atoi(p) / 128);
ldata = (unsigned char)(atoi(p) % 128);//m_Slave_add;//m_Slave_add;
gasmeaur_info = atoi(p);
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
extern CString flag;
flag = "OnButtonMeas";
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
}
void COxcygenTestDlg::OnButtonRevise()
{
// TODO: Add your control notification handler code here
if(GetDlgItemText(IDC_BUTTON_START,str),str=="开始") {
MessageBox("请按下开始按钮");
return;
}
if(GetDlgItemText(IDC_BUTTON_REVISE,str),str=="修改") {
KillTimer(1);
SetDlgItemText(IDC_BUTTON_REVISE,"保存");
GetDlgItem(IDC_BUTTON_A1)->EnableWindow(true);//打开相关按钮
GetDlgItem(IDC_BUTTON_A2)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_GAS)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_MEAS)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_INFO)->EnableWindow(false);//关闭无关按钮
GetDlgItem(IDC_BUTTON_ADD)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_DEC)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_FUNC)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_BAK)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_OK)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_START)->EnableWindow(false);
}
else if(GetDlgItemText(IDC_BUTTON_REVISE,str),str=="保存") {
SetDlgItemText(IDC_BUTTON_REVISE,"修改");
GetDlgItem(IDC_BUTTON_A1)->EnableWindow(false);//保存退出关闭相关按钮
GetDlgItem(IDC_BUTTON_A2)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_GAS)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_MEAS)->EnableWindow(false);
GetDlgItem(IDC_BUTTON_INFO)->EnableWindow(true);//打开无关按钮
GetDlgItem(IDC_BUTTON_ADD)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_DEC)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_FUNC)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_BAK)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_OK)->EnableWindow(true);
GetDlgItem(IDC_BUTTON_START)->EnableWindow(true);
GetDlgItem(IDC_EDIT_A1)->SetWindowText("");//清空编辑框中的文本
GetDlgItem(IDC_EDIT_A2)->SetWindowText("");//清空编辑框中的文本
GetDlgItem(IDC_COMBO_GAS)->SetWindowText("");
GetDlgItem(IDC_EDIT_MEAUR)->SetWindowText("");
CByteArray hexdata;
CString m1,m2,m3,m4,m5,m6;
extern unsigned char startch, slaveadd, command, hdata, ldata, check;
extern unsigned char m_Start_char, m_Slave_add;
startch = m_Start_char;
slaveadd = m_Slave_add;
command = 0x00;
hdata = 0;
ldata = 0;
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
extern CString flag;
flag = "Slavetype";
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
SetTimer(1,100,NULL);
}
}
void COxcygenTestDlg::OnButtonBak()
{
// TODO: Add your control notification handler code here
KillTimer(1);
CByteArray hexdata;
CString m1,m2,m3,m4,m5,m6;
extern unsigned char startch, slaveadd, command, hdata, ldata, check;
extern unsigned char m_Start_char, m_Slave_add;
startch = m_Start_char;
slaveadd = m_Slave_add;
command = 0x0a;
command &= 0x7f;//最高位取0
hdata = 0;
ldata = 0;
check = slaveadd ^ command ^ hdata ^ ldata;
check &= 0x7f;
m1.Format("%02X", startch);
m2.Format("%02X", slaveadd);
m3.Format("%02X", command);
m4.Format("%02X", hdata);
m5.Format("%02X", ldata);
m6.Format("%02X", check);
int len=String2Hex(m1+m2+m3+m4+m5+m6,hexdata);
m_com.SetOutput(COleVariant(hexdata)); //发送查询数
SetTimer(1,100,NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -