📄 setbiaomangerdlg.cpp
字号:
// SetbiaoMangerdlg.cpp : implementation file
//
#include "stdafx.h"
#include "DxManger.h"
#include "SetbiaoMangerdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSetbiaoMangerdlg dialog
CSetbiaoMangerdlg::CSetbiaoMangerdlg(CWnd* pParent /*=NULL*/)
: CDialog(CSetbiaoMangerdlg::IDD, pParent)
{ com=1;
m_buad="1200";
m_status_count=0;
//{{AFX_DATA_INIT(CSetbiaoMangerdlg)
m_biaonumber = _T("000000000001");
m_mima = _T("123456");
m_clear_mima = _T("123456");
}
void CSetbiaoMangerdlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetbiaoMangerdlg)
DDX_Control(pDX, IDC_LST_STATUS, m_lst_status);
DDX_Text(pDX, IDC_EDT_BIAONUMBER, m_biaonumber);
DDV_MaxChars(pDX, m_biaonumber, 12);
DDX_Text(pDX, IDC_EDT_MIMA, m_mima);
DDV_MaxChars(pDX, m_mima, 6);
DDX_Control(pDX, IDC_MSCOMM1, m_comm);
DDX_Text(pDX, IDC_EDT_CLEAR_MIMA, m_clear_mima);
DDV_MaxChars(pDX, m_clear_mima, 6);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetbiaoMangerdlg, CDialog)
//{{AFX_MSG_MAP(CSetbiaoMangerdlg)
ON_BN_CLICKED(IDC_BTN_SET, OnBtnSet)
ON_EN_CHANGE(IDC_EDT_BIAONUMBER, OnChangeEdtBiaonumber)
ON_BN_CLICKED(IDC_BTN_CLEAR, OnBtnClear)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetbiaoMangerdlg message handlers
BOOL CSetbiaoMangerdlg::OnInitDialog()
{
CDialog::OnInitDialog();
com=1;
initcom(com);
// TODO: Add extra initialization here
LV_COLUMN LVColumn; // column info of one column in list control
char *columnheader[2]={
"选项",
"说明"
};
m_lst_status.SetExtendedStyle(LVS_REPORT&~LVS_EX_CHECKBOXES);
CString HeaderString;
HeaderString.Format ("%s",columnheader[0]);;
LVColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
LVColumn.iSubItem = 0;
LVColumn.pszText = (LPTSTR) (LPCTSTR) HeaderString;
LVColumn.cx = 100;
LVColumn.fmt = LVCFMT_CENTER;
m_lst_status.InsertColumn (0, &LVColumn);
HeaderString.Format ("%s",columnheader[1]);;
LVColumn.iSubItem = 1;
LVColumn.pszText = (LPTSTR) (LPCTSTR) HeaderString;
LVColumn.cx = 157;
LVColumn.fmt = LVCFMT_CENTER;
m_lst_status.InsertColumn (1, &LVColumn);
// TODO: Add extra initialization here
m_dlgPropSheet.AddPage(&m_setpage1);
m_dlgPropSheet.AddPage(&m_setpage2);
m_dlgPropSheet.AddPage(&m_setpage3);
m_dlgPropSheet.Create(this, WS_CHILD | WS_VISIBLE, 0);
m_dlgPropSheet.ModifyStyleEx (0, WS_EX_CONTROLPARENT);
m_dlgPropSheet.ModifyStyle( 0, WS_TABSTOP );
m_dlgPropSheet.SetWindowPos( NULL, 5, 5, 0, 0,
SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BOOL CSetbiaoMangerdlg::sendSetdata(CString bnumber, BYTE command, CString d0d1, CString mima, CString data)
{
if(m_comm.GetPortOpen())m_comm.SetPortOpen(FALSE);
if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);//打开串口
BeginWaitCursor();
COleVariant varin,varout;
CString temp;
CByteArray sendchar;
int limits=0;
sendchar.RemoveAll();
//FE FE FE FE 68 00 00 00 00 00 00 68 01 02 43 F3 09 16
sendchar.Add(0xfe);
sendchar.Add(0xfe);
sendchar.Add(0xfe);
sendchar.Add(0xfe);
sendchar.Add(0x68);// 起始符
BYTE tempchar[255];
//////////////////////////////////////////////////////
int j=0;
BYTE hi,low;
int i,size;
CEdit *hedit;
///////////////////////////////////
bnumber.MakeUpper();
for( i=0;i<12;i+=2)
{ if(bnumber[i+1]<='9')
hi=bnumber[i+1]-'0';
else hi=10+bnumber[i+1]-'A';
if(bnumber[i]<='9')
low=bnumber[i]-'0';
else low =10+bnumber[i]-'A';
tempchar[j]=hi+low*16;
j++;
/*hi=bnumber[i+1]-'0';
low=bnumber[i]-'0';
tempchar[j]=hi+low*16;
j++;*/
}
for(i=5;i>=0;i--)
{
sendchar.Add(tempchar[i]);
}
////////////////////////////////////////
///////////////////////////////////////////////////////
sendchar.Add(0x68);// 起始符
sendchar.Add(command); //命令码
size=data.GetLength();
sendchar.Add((BYTE)size/2+6);//数据长度
d0d1.MakeUpper();
for(i=0;i<4;i+=2)
{
tempchar[i]=d0d1[i];
tempchar[i+1]=d0d1[i+1];
if( tempchar[i]>'9')
tempchar[i]=10+d0d1[i]-'A';
else tempchar[i]=d0d1[i]-'0';
if( tempchar[i+1]>'9')
tempchar[i+1]=10+d0d1[i+1]-'A';
else tempchar[i+1]=d0d1[i+1]-'0';
tempchar[i]=tempchar[i]*16+tempchar[i+1];
sendchar.Add(tempchar[i]);//采集选项
}
mima.MakeUpper();
size=mima.GetLength();
temp.Empty();
for(i=0;i<6-size;i++)
temp+='0';
if(size<6)
mima.Insert(0,temp);
if(d0d1.Compare("4CF4")==0)
m_clear_mima=mima;
else m_mima=mima;
UpdateData(FALSE);
hedit=(CEdit *)this->GetDlgItem(IDC_EDT_MIMA);
hedit->RedrawWindow();
hedit=(CEdit *)this->GetDlgItem(IDC_EDT_CLEAR_MIMA);
hedit->RedrawWindow();
if(d0d1.Compare("4CF4")==0)
sendchar.Add(0x33);//密码
else
sendchar.Add(0x34);//密码
j=0;
// AfxMessageBox(mima);
for( i=0;i<6;i+=2)
{
hi=mima[i+1]-'0';
low=mima[i]-'0';
tempchar[j]=hi+low*16;
j++;
}
for(i=2;i>=0;i--)
{
sendchar.Add(tempchar[i]+0X33);//密码
}
data.MakeUpper();
size=data.GetLength();
for(i=0;i<size;i+=2)
{
tempchar[i]=data[i];
tempchar[i+1]=data[i+1];
if( tempchar[i]>'9')
tempchar[i]=10+data[i]-'A';
else tempchar[i]=data[i]-'0';
if( tempchar[i+1]>'9')
tempchar[i+1]=10+data[i+1]-'A';
else tempchar[i+1]=data[i+1]-'0';
tempchar[i]=tempchar[i]*16+tempchar[i+1];
sendchar.Add(tempchar[i]);//地址域
}
BYTE sum=0;
for(i=4;i<sendchar.GetSize();i++)
{
tempchar[0]=sendchar.GetAt(i);
sum+=sendchar.GetAt(i);
}
sendchar.Add(sum);
sendchar.Add(0x16); //结束符
///////////////测试代码/////////////
CString xx;
for(i=0;i<sendchar.GetSize();i++)
{
temp.Format("%02X ",sendchar.GetAt(i));
xx+=temp;
}
// AfxMessageBox(xx);
//////////////////////////////
varout=COleVariant(sendchar);
if(m_comm.GetPortOpen())
m_comm.SetOutput(varout);//发送
else AfxMessageBox("串行口初始化失败!!!");
//////////////////接收数据//////////////
EndWaitCursor();
if(Receive645Data())return TRUE;
else
return FALSE;
}
BYTE CSetbiaoMangerdlg::byte2bcd(BYTE bytedata)
{
BYTE result;
result=(bytedata/10)*16+bytedata%10;
return result;
}
void CSetbiaoMangerdlg::initcom(int com)
{
CString COMSetings;COMSetings=m_buad+",e,8,1";
if(m_comm.GetPortOpen())m_comm.SetPortOpen(FALSE);
m_comm.SetCommPort(com);//设置端口
m_comm.SetSettings(COMSetings);//设置波特率等参数
m_comm.SetRThreshold(1);// 触发接收事件
m_comm.SetSThreshold(0);//不触发发送事件
m_comm.SetInputLen(1);//每次读取一个字符
m_comm.SetInputMode(1);//设置输入为二进制方式
// if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);//打开串口
}
void CSetbiaoMangerdlg::OnChangeEdtBiaonumber()
{
// 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.
UpdateData(TRUE);
/* int len=m_biaonumber.GetLength();
BYTE tempchar[255];
m_biaonumber.MakeUpper();
if(!m_biaonumber.IsEmpty())
for(int i=0;i<len;i++)
{
tempchar[i]=m_biaonumber[i];
if( (tempchar[i]<'0'||tempchar[i]>'9'))
{
m_biaonumber.Insert(i,'\0');
UpdateData(FALSE);
}
}
*/ // TODO: Add your control notification handler code here
}
void CSetbiaoMangerdlg::AddStatusItem( CString xuanxiang, CString m_status)
{
m_lst_status.InsertItem(m_status_count,xuanxiang);
m_lst_status.SetItemText(m_status_count, 1, m_status);
m_lst_status.Update(m_status_count);
m_status_count++;
}
BOOL CSetbiaoMangerdlg::SetDbnumber()
{
CString temp;
BYTE tempchar[255];
ModifySetDbnumber();
int j=0;
BYTE hi,low;
for( int i=0;i<12;i+=2)
{
hi=m_setpage1.m_edt_setdbnumber[i+1]-'0';
low=m_setpage1.m_edt_setdbnumber[i]-'0';
tempchar[j]=hi+low*16;
j++;
}
temp.Empty();
CString m_data;
for(i=5;i>=0;i--)
{
temp.Format("%02x",tempchar[i]+0x33);
m_data+=temp;
}
if(SetPrgData(m_biaonumber,0x0a,m_mima,m_data))
return TRUE;
else return FALSE;
}
BOOL CSetbiaoMangerdlg::SetClearMima()
{
CString temp;
BYTE tempchar[255];
CString m_data;
m_mimaFlag=0;
///////////////////修正局编号////////////////////
int size=m_setpage1.m_edt_setclear_mima.GetLength();
temp.Empty();
for(int i=0;i<6-size;i++)
temp+='0';
if(size<6)
m_setpage1.m_edt_setclear_mima.Insert(0,temp);
//////////////////更新局编号显示
m_setpage1.UpdatJvnumber();
///////////////////////////////////
int j=0;
BYTE hi,low;
for( i=0;i<6;i+=2)
{
hi=m_setpage1.m_edt_setclear_mima[i+1]-'0';
low=m_setpage1.m_edt_setclear_mima[i]-'0';
tempchar[j]=hi+low*16;
j++;
}
temp.Empty();
m_data+="33";
for(i=2;i>=0;i--)
{temp.Format("%02x",tempchar[i]+0x33);
m_data+=temp;
} UpdateData();
//AfxMessageBox(m_clear_mima);
if(SetPrgData(m_biaonumber,0x0f,m_clear_mima,m_data))
return TRUE;
else return FALSE;
}
BOOL CSetbiaoMangerdlg::SetPrgMima()
{
CString temp;
BYTE tempchar[255];
CString m_data;
m_mimaFlag=1;
///////////////////修正局编号////////////////////
int size=m_setpage1.m_edt_setprg_mima.GetLength();
temp.Empty();
for(int i=0;i<6-size;i++)
temp+='0';
if(size<6)
m_setpage1.m_edt_setprg_mima.Insert(0,temp);
//////////////////更新局编号显示
m_setpage1.UpdatJvnumber();
///////////////////////////////////
int j=0;
BYTE hi,low;
for( i=0;i<6;i+=2)
{
hi=m_setpage1.m_edt_setprg_mima[i+1]-'0';
low=m_setpage1.m_edt_setprg_mima[i]-'0';
tempchar[j]=hi+low*16;
j++;
}
temp.Empty();
m_data+="34";
for(i=2;i>=0;i--)
{temp.Format("%02x",tempchar[i]+0x33);
m_data+=temp;
}
//AfxMessageBox(m_mima);
UpdateData();
if(SetPrgData(m_biaonumber,0x0f,m_mima,m_data))
return TRUE;
else return FALSE;
}
BOOL CSetbiaoMangerdlg::SetDate(BOOL m_type)
{
m_recstring.Empty();
if(m_type)
{
m_setpage1.update();
BYTE hour,minute,second;
hour=m_setpage1.m_time.GetHour();
minute=m_setpage1.m_time.GetMinute();
second=m_setpage1.m_time.GetSecond();
hour=byte2bcd(hour);
minute=byte2bcd(minute);
second=byte2bcd(second);
CString temp;
temp.Format("%02X%02X%02X",second+0x33,minute+0x33,hour+0x33);
//AfxMessageBox(temp);
if(sendSetdata(m_biaonumber,0x04,"44f3",m_mima,temp))
return TRUE;
else return FALSE;
}
else
{
BYTE week,day,month,year;
week=m_setpage1.getweek();
day=byte2bcd(m_setpage1.getday());
month=byte2bcd(m_setpage1.getmonth());
year=byte2bcd(m_setpage1.getyear());
CString temp;
temp.Format("%02x%02X%02X%02X",week+0x33,day+0x33,month+0x33,year+0x33);
// AfxMessageBox(temp);
if(sendSetdata(m_biaonumber,0x04,"43f3",m_mima,temp))
return TRUE;
else return FALSE;
}
return FALSE;
}
BOOL CSetbiaoMangerdlg::SetAutocbDay()
{
m_recstring.Empty();
m_setpage1.update();
CString m_data;
m_data.Format("%02x%02x",byte2bcd(m_setpage1.m_combo_autohour.GetCurSel())+0x33,
byte2bcd(m_setpage1.m_combo_autoday.GetCurSel()+1)+0x33);
//AfxMessageBox(m_data);
if(sendSetdata(m_biaonumber,0x04,"4af4",m_mima,m_data))
return TRUE;
else return FALSE;
}
BOOL CSetbiaoMangerdlg::SetjvNumber()
{
CString temp;
BYTE tempchar[255];
///////////////////修正局编号////////////////////
int size=m_setpage1.m_edt_setjvnumber.GetLength();
temp.Empty();
for(int i=0;i<12-size;i++)
temp+='0';
if(size<12)
m_setpage1.m_edt_setjvnumber.Insert(0,temp);
//////////////////更新局编号显示
m_setpage1.UpdatJvnumber();
///////////////////////////////////
m_setpage1.m_edt_setjvnumber.MakeUpper();
int j=0;
BYTE hi,low;
for( i=0;i<12;i+=2)
{
hi=m_setpage1.m_edt_setjvnumber[i+1]-'0';
low=m_setpage1.m_edt_setjvnumber[i]-'0';
tempchar[j]=hi+low*16;
j++;
}
temp.Empty();
CString m_data;
for(i=5;i>=0;i--)
{temp.Format("%02x",tempchar[i]+0x33);
m_data+=temp;
}
//AfxMessageBox(m_data);
////////////////////////////////////////
if(sendSetdata(m_biaonumber,0x04,"66f3",m_mima,m_data))
return TRUE;
else return FALSE;
}
BOOL CSetbiaoMangerdlg::SetDayTimes()
{
m_setpage1.update();
CString m_data;
m_data.Format("%02x",byte2bcd(m_setpage1.m_edt_nsetdaytimes)+0x33);
//AfxMessageBox(m_data);
if(sendSetdata(m_biaonumber,0x04,"45f6",m_mima,m_data))
return TRUE;
else return FALSE;
}
BOOL CSetbiaoMangerdlg::SetClear()
{
m_setpage1.update();
CString m_data;
unsigned long clear_h,clear_m,clear_l,clearall;
clearall=(unsigned long)(m_setpage1.m_edt_clearall*100);
clear_h=(unsigned long)(m_setpage1.m_edt_clear_h*100);
clear_m=(unsigned long)(m_setpage1.m_edt_clear_m*100);
clear_l=(unsigned long)(m_setpage1.m_edt_clear_l*100);
BYTE dot_h,dot_l,dot_m,dot_all;
dot_all=(BYTE)(clearall%100);
dot_h=(BYTE)(clear_h%100);
dot_m=(BYTE)(clear_m%100);
dot_l=(BYTE)(clear_l%100);
BYTE int_al,int_am,int_ah;
BYTE int_hl,int_hm,int_hh;
BYTE int_ml,int_mm,int_mh;
BYTE int_ll,int_lm,int_lh;
int_ah=(BYTE)(((unsigned long)(m_setpage1.m_edt_clearall))/10000);
int_am=(BYTE)(((unsigned long)(m_setpage1.m_edt_clearall)-int_ah*10000)/100);
int_al=(BYTE)(((unsigned long)(m_setpage1.m_edt_clearall))%100);
int_hh=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_h))/10000);
int_hm=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_h)-int_hh*10000)/100);
int_hl=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_h))%100);
int_mh=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_m))/10000);
int_mm=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_m)-int_mh*10000)/100);
int_ml=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_m))%100);
int_lh=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_l))/10000);
int_lm=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_l)-int_lh*10000)/100);
int_ll=(BYTE)(((unsigned long)(m_setpage1.m_edt_clear_l))%100);
m_data.Format("%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
byte2bcd(dot_all)+0x33,byte2bcd(int_al)+0x33,byte2bcd(int_am)+0x33,byte2bcd(int_ah)+0x33,
byte2bcd(dot_h)+0x33,byte2bcd(int_hl)+0x33,byte2bcd(int_hm)+0x33,byte2bcd(int_hh)+0x33,
byte2bcd(dot_m)+0x33,byte2bcd(int_ml)+0x33,byte2bcd(int_mm)+0x33,byte2bcd(int_mh)+0x33,
byte2bcd(dot_l)+0x33,byte2bcd(int_ll)+0x33,byte2bcd(int_lm)+0x33,byte2bcd(int_lh)+0x33
);
UpdateData();
// AfxMessageBox(m_clear_mima);
if(sendSetdata(m_biaonumber,0x04,"4cf4",m_clear_mima,m_data))
return TRUE;
else return FALSE;
}
void CSetbiaoMangerdlg::OnBtnSet()
{
// TODO: Add your control notification handler code here
UpdateData();
switch(m_dlgPropSheet.GetActiveIndex())
{
case 0:
SetPage1();
break;
case 1:SetPage2();break;
case 2:SetPage3();break;
}
}
void CSetbiaoMangerdlg::SetPage1()
{
ModifyDbnumber();
CEdit *hedit;
m_setpage1.update();
UpdateData(FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -