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

📄 setbiaomangerdlg.cpp

📁 645规约表计抄读设置软件 江苏省复费率表抄读设置 采用VC做得界面
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -