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

📄 dxmangerview.cpp

📁 645规约表计抄读设置软件 江苏省复费率表抄读设置 采用VC做得界面
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	// TODO: add cleanup after printing
}

void CDxMangerView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CDxMangerView diagnostics

#ifdef _DEBUG
void CDxMangerView::AssertValid() const
{
	CFormView::AssertValid();
}

void CDxMangerView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CDxMangerDoc* CDxMangerView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDxMangerDoc)));
	return (CDxMangerDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDxMangerView message handlers

void CDxMangerView::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);//打开串口
	
}

BOOL CDxMangerView::senddata(CString add, BYTE command, CString data)
{
	BeginWaitCursor();
	if(m_comm.GetPortOpen())m_comm.SetPortOpen(FALSE);
	if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);//打开串口
	
	m_recstring.Empty();
	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  size=add.GetLength();
	temp.Empty();
	for(int i=0;i<12-size;i++)
		temp+='0';
	if(size<12)
		add.Insert(0,temp);
	 
	UpdateData(FALSE);
	//////////////////更新表号显示
	CEdit *hedit;	
	UpdateData(FALSE);
	hedit=(CEdit *)this->GetDlgItem(IDC_EDT_BIAONUMBER);
	hedit->RedrawWindow();
	
	///////////////////////////////////
	add.MakeUpper();
	int j=0;
	BYTE hi,low;
	for( i=0;i<12;i+=2)
	{
		
		hi=add[i+1]-'0';		
		low=add[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);//数据长度
	data.MakeUpper();
	BYTE sum=0;
	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]);//地址域
	}
	
	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[i]);
	xx+=temp;
	
	  }
	  AfxMessageBox(xx);
	  return 0;*/
	
	//////////////////////////////
    varout=COleVariant(sendchar);
	if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);
    if(m_comm.GetPortOpen())
		m_comm.SetOutput(varout);//发送
	else AfxMessageBox("串行口初始化失败!!!");
	
	//////////////////接收数据//////////////

	if(Receive645Data())		
		return TRUE;
	else
	{ 
		if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);
		if(m_comm.GetPortOpen())
		m_comm.SetOutput(varout);//发送
	    else AfxMessageBox("串行口初始化失败!!!");
      
	   if(Receive645Data())		
		  return TRUE;
	   else
	   {
           if(!m_comm.GetPortOpen())m_comm.SetPortOpen(TRUE);
		   	if(m_comm.GetPortOpen())
		    m_comm.SetOutput(varout);//发送
	        else AfxMessageBox("串行口初始化失败!!!");
      
	       if(Receive645Data())		
		      return TRUE;
           else return FALSE;
	   }
	    
	}
}
void CDxMangerView::OnBtnSelectAllparam() 
{
	// TODO: Add your control notification handler code here
	 
	 
}

void CDxMangerView::OnBtnCancleAllparam() 
{
	// TODO: Add your control notification handler code here
 
}



void CDxMangerView::ExplainRecdata()
{
	CString temp;
	unsigned char i;
	unsigned char low;
	
	if(m_bRecData[11]==0xc1)
	{
     temp.Format("%02x",m_bRecData[13]);
     AddReadStatusItem("read error",temp);   
	}
    switch(m_bRecData[14])
	{
	case 0x90:
              switch(m_bRecData[13])
			  {
			  case 0x10:
				          low=0;
				          temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
									                  Bcdtoint(m_bRecData[17])*100+
									                  Bcdtoint(m_bRecData[16]),
									                  Bcdtoint(m_bRecData[15]));
					     m_listmonth.SetItemText(low, 1, temp);
						 m_listmonth.Update(low);
				        break;
			  case 0x90:
			  case 0x91:
			  case 0x92:
			  case 0x93:
			  case 0x94:
			  case 0x95:
			  case 0x96:
			  case 0x97:
				        low=m_bRecData[13]-0x90;
						 temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
									                  Bcdtoint(m_bRecData[17])*100+
									                  Bcdtoint(m_bRecData[16]),
									                  Bcdtoint(m_bRecData[15]));
					     m_listday.SetItemText(low, 1, temp);
						 temp.Format("%02d",Bcdtoint(m_bRecData[19]));
                         m_listday.SetItemText(low, 2, temp);
						 m_listday.Update(low);
				        break;
			  case 0x9d: for(i=0;i<4;i++)
						 {
                           low=i;
                           temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+5*i])*10000+
									                  Bcdtoint(m_bRecData[17+5*i])*100+
									                  Bcdtoint(m_bRecData[16+5*i]),
									                  Bcdtoint(m_bRecData[15+5*i]));
					       m_listday.SetItemText(low, 1, temp);
						   temp.Format("%02d",Bcdtoint(m_bRecData[19+5*i]));
                           m_listday.SetItemText(low, 2, temp);
						   m_listday.Update(low);
						 }
				         break;
			  case 0x9e:
				         for(i=0;i<4;i++)
						 {
                           low=i+4;
                           temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+5*i])*10000+
									                  Bcdtoint(m_bRecData[17+5*i])*100+
									                  Bcdtoint(m_bRecData[16+5*i]),
									                  Bcdtoint(m_bRecData[15+5*i]));
					       m_listday.SetItemText(low, 1, temp);
						   temp.Format("%02d",Bcdtoint(m_bRecData[19+5*i]));
                           m_listday.SetItemText(low, 2, temp);
						   m_listday.Update(low);
						 }
				          
				         break;
			  case 0x9f: for(i=0;i<8;i++)
						 {
                           low=i;
                           temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+5*i])*10000+
									                  Bcdtoint(m_bRecData[17+5*i])*100+
									                  Bcdtoint(m_bRecData[16+5*i]),
									                  Bcdtoint(m_bRecData[15+5*i]));
					       m_listday.SetItemText(low, 1, temp);
						   temp.Format("%02d",Bcdtoint(m_bRecData[19+5*i]));
                           m_listday.SetItemText(low, 2, temp);
						   m_listday.Update(low);
						 }
				         break;
			  case 0xa0:
			  case 0xa1:
			  case 0xa2:
			  case 0xa3:
			  case 0xa4:
			  case 0xa5:
			  case 0xa6:
			  case 0xa7:
				          low=m_bRecData[13]-0xa0;
				          temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
									                  Bcdtoint(m_bRecData[17])*100+
									                  Bcdtoint(m_bRecData[16]),
									                  Bcdtoint(m_bRecData[15]));
					      m_listhour.SetItemText(low, 1, temp);
                          temp.Format("%02x",m_bRecData[19]);
						  m_listhour.SetItemText(low, 2, temp);
                          temp.Format("%02x",m_bRecData[20]);
						  m_listhour.SetItemText(low, 3, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[24])*10000+
									                  Bcdtoint(m_bRecData[23])*100+
									                  Bcdtoint(m_bRecData[22]),
									                  Bcdtoint(m_bRecData[21]));
					      m_listhour.SetItemText(low, 4, temp);
                          temp.Format("%02x",m_bRecData[25]);
						  m_listhour.SetItemText(low, 5, temp);
                          temp.Format("%02x",m_bRecData[26]);
						  m_listhour.SetItemText(low, 6, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[30])*10000+
									                  Bcdtoint(m_bRecData[29])*100+
									                  Bcdtoint(m_bRecData[28]),
									                  Bcdtoint(m_bRecData[27]));
					      m_listhour.SetItemText(low, 7, temp);
                          temp.Format("%02x",m_bRecData[31]);
						  m_listhour.SetItemText(low, 8, temp);
                          temp.Format("%02x",m_bRecData[32]);
						  m_listhour.SetItemText(low, 9, temp);
						  m_listhour.Update(low);
				        break;
			  case 0xaf:  for(low=0;low<8;low++)
						  {
						 temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+18*low])*10000+
									                  Bcdtoint(m_bRecData[17+18*low])*100+
									                  Bcdtoint(m_bRecData[16+18*low]),
									                  Bcdtoint(m_bRecData[15+18*low]));
					      m_listhour.SetItemText(low, 1, temp);
                          temp.Format("%02x",m_bRecData[19+18*low]);
						  m_listhour.SetItemText(low, 2, temp);
                          temp.Format("%02x",m_bRecData[20+18*low]);
						  m_listhour.SetItemText(low, 3, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[24+18*low])*10000+
									                  Bcdtoint(m_bRecData[23+18*low])*100+
									                  Bcdtoint(m_bRecData[22+18*low]),
									                  Bcdtoint(m_bRecData[21+18*low]));
					      m_listhour.SetItemText(low, 4, temp);
                          temp.Format("%02x",m_bRecData[25+18*low]);
						  m_listhour.SetItemText(low, 5, temp);
                          temp.Format("%02x",m_bRecData[26+18*low]);
						  m_listhour.SetItemText(low, 6, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[30+18*low])*10000+
									                  Bcdtoint(m_bRecData[29+18*low])*100+
									                  Bcdtoint(m_bRecData[28+18*low]),
									                  Bcdtoint(m_bRecData[27+18*low]));
					      m_listhour.SetItemText(low, 7, temp);
                          temp.Format("%02x",m_bRecData[31+18*low]);
						  m_listhour.SetItemText(low, 8, temp);
                          temp.Format("%02x",m_bRecData[32+18*low]);
						  m_listhour.SetItemText(low, 9, temp);
						  m_listhour.Update(low);
						  }
				          break;

			  case 0xb0:
			  case 0xb1:
			  case 0xb2:
			  case 0xb3:
			  case 0xb4:
			  case 0xb5:
			  case 0xb6:
			  case 0xb7:
				         low=m_bRecData[13]-0xb0+8;
				          temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
									                  Bcdtoint(m_bRecData[17])*100+
									                  Bcdtoint(m_bRecData[16]),
									                  Bcdtoint(m_bRecData[15]));
					      m_listhour.SetItemText(low, 1, temp);
                          temp.Format("%02x",m_bRecData[19]);
						  m_listhour.SetItemText(low, 2, temp);
                          temp.Format("%02x",m_bRecData[20]);
						  m_listhour.SetItemText(low, 3, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[24])*10000+
									                  Bcdtoint(m_bRecData[23])*100+
									                  Bcdtoint(m_bRecData[22]),
									                  Bcdtoint(m_bRecData[21]));
					      m_listhour.SetItemText(low, 4, temp);
                          temp.Format("%02x",m_bRecData[25]);
						  m_listhour.SetItemText(low, 5, temp);
                          temp.Format("%02x",m_bRecData[26]);
						  m_listhour.SetItemText(low, 6, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[30])*10000+
									                  Bcdtoint(m_bRecData[29])*100+
									                  Bcdtoint(m_bRecData[28]),
									                  Bcdtoint(m_bRecData[27]));
					      m_listhour.SetItemText(low, 7, temp);
                          temp.Format("%02x",m_bRecData[31]);
						  m_listhour.SetItemText(low, 8, temp);
                          temp.Format("%02x",m_bRecData[32]);
						  m_listhour.SetItemText(low, 9, temp);
						  m_listhour.Update(low);
				        break;
			 case 0xbf:  for(low=0;low<8;low++)
						  {
						 temp.Format("%d.%02d",Bcdtoint(m_bRecData[18+18*low])*10000+
									                  Bcdtoint(m_bRecData[17+18*low])*100+
									                  Bcdtoint(m_bRecData[16+18*low]),
									                  Bcdtoint(m_bRecData[15+18*low]));
					      m_listhour.SetItemText(low+8, 1, temp);
                          temp.Format("%02x",m_bRecData[19+18*low]);
						  m_listhour.SetItemText(low+8, 2, temp);
                          temp.Format("%02x",m_bRecData[20+18*low]);
						  m_listhour.SetItemText(low+8, 3, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[24+18*low])*10000+
									                  Bcdtoint(m_bRecData[23+18*low])*100+
									                  Bcdtoint(m_bRecData[22+18*low]),
									                  Bcdtoint(m_bRecData[21+18*low]));
					      m_listhour.SetItemText(low+8, 4, temp);
                          temp.Format("%02x",m_bRecData[25+18*low]);
						  m_listhour.SetItemText(low+8, 5, temp);
                          temp.Format("%02x",m_bRecData[26+18*low]);
						  m_listhour.SetItemText(low+8, 6, temp);

						   temp.Format("%d.%02d",Bcdtoint(m_bRecData[30+18*low])*10000+
									                  Bcdtoint(m_bRecData[29+18*low])*100+
									                  Bcdtoint(m_bRecData[28+18*low]),
									                  Bcdtoint(m_bRecData[27+18*low]));
					      m_listhour.SetItemText(low+8, 7, temp);
                          temp.Format("%02x",m_bRecData[31+18*low]);
						  m_listhour.SetItemText(low+8, 8, temp);
                          temp.Format("%02x",m_bRecData[32+18*low]);
						  m_listhour.SetItemText(low+8, 9, temp);
						  m_listhour.Update(low+8);
						  }
				          break;

			  }
		      break;
	case 0x94:
		       if(m_bRecData[13]==0x10)
			   {
                 low=1;
				          temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
									                  Bcdtoint(m_bRecData[17])*100+
									                  Bcdtoint(m_bRecData[16]),
									                  Bcdtoint(m_bRecData[15]));
					     m_listmonth.SetItemText(low, 1, temp);
						 m_listmonth.Update(low);
			   }
		       break; 
	case 0x98: if(m_bRecData[13]==0x10)
			   {
				    low=2;
				          temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
									                  Bcdtoint(m_bRecData[17])*100+
									                  Bcdtoint(m_bRecData[16]),
									                  Bcdtoint(m_bRecData[15]));
					     m_listmonth.SetItemText(low, 1, temp);
						 m_listmonth.Update(low);
			   }
		       break;
	case 0x9a: if(m_bRecData[13]==0x10)
			   {
				    low=3;
				          temp.Format("%d.%02d",Bcdtoint(m_bRecData[18])*10000+
									                  Bcdtoint(m_bRecData[17])*100+
									                  Bcdtoint(m_bRecData[16]),
									                  Bcdtoint(m_bRecData[15]));
					     m_listmonth.SetItemText(low, 1, temp);
						 m_listmonth.Update(low);
			   }
		       break;
    case 0xc0:
		      switch(m_bRecData[13])
			  {
			  case 0x10:
				        temp.Format("20%02X-%02X-%02X",m_bRecData[18],m_bRecData[17],m_bRecData[16]);
						m_edit_date=temp;
						//	UpdateData(TRUE);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -