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

📄 ideddlg.cpp

📁 VC++6.0基于CAN协议的车辆控制
💻 CPP
📖 第 1 页 / 共 3 页
字号:

    SetTimer(1,15000,NULL);//第二个参数表示隔多少秒触发该事件
	SetTimer(2,30000,NULL);
	SetTimer(3,45000,NULL);
    SetTimer(4,90000,NULL);
	    
	
}

void CIDEDDlg::OnEDButton() 
{
	// TODO: Add your control notification handler code here
   TrainCode_len=m_sTrainCode.GetLength( );//求出选择的车次的字符串的长度
   switch(TrainCode_len)
   {
     case 2:
		{
	     ucVecSequenceMaster32[10]=0x0A;
         ucVecSequenceMaster32[14]=0x0A;
         ucVecSequenceMaster32[21]=0x02;
         ucVecSequenceMaster32[23]=m_sTrainCode[0];
         ucVecSequenceMaster32[26]=m_sTrainCode[1];
		 int route_checksum=FunCRC16(( char *)&ucVecSequenceMaster32[0],28);
         ucVecSequenceMaster32[28]=route_checksum&0x00FF;
         ucVecSequenceMaster32[29]=(route_checksum&0xFF00)>>8; 
		}
        break;
	 case 3:
		{
		 ucVecSequenceMaster33[10]=0x0D;
         ucVecSequenceMaster33[14]=0x0D;
         ucVecSequenceMaster33[21]=0x03;
         ucVecSequenceMaster33[23]=m_sTrainCode[0];
         ucVecSequenceMaster33[26]=m_sTrainCode[1];
		 ucVecSequenceMaster33[29]=m_sTrainCode[2];
		 int route_checksum=FunCRC16(( char *)&ucVecSequenceMaster33[0],31);
         ucVecSequenceMaster33[31]=route_checksum&0x00FF;
         ucVecSequenceMaster33[32]=(route_checksum&0xFF00)>>8;
		}
        break;
     case 4:
		{
		 ucVecSequenceMaster34[10]=0x10;
         ucVecSequenceMaster34[14]=0x10;
         ucVecSequenceMaster34[21]=0x04;
         ucVecSequenceMaster34[23]=m_sTrainCode[0];
         ucVecSequenceMaster34[26]=m_sTrainCode[1];
		 ucVecSequenceMaster34[29]=m_sTrainCode[2];
		 ucVecSequenceMaster34[32]=m_sTrainCode[3];
		 int route_checksum=FunCRC16(( char *)&ucVecSequenceMaster34[0],34);
         ucVecSequenceMaster34[34]=route_checksum&0x00FF;
         ucVecSequenceMaster34[35]=(route_checksum&0xFF00)>>8;
		}
        break;
     case 5:
		{
		 ucVecSequenceMaster35[10]=0x13;
         ucVecSequenceMaster35[14]=0x13;
         ucVecSequenceMaster35[21]=0x05;
         ucVecSequenceMaster35[23]=m_sTrainCode[0];
         ucVecSequenceMaster35[26]=m_sTrainCode[1];
		 ucVecSequenceMaster35[29]=m_sTrainCode[2];
		 ucVecSequenceMaster35[32]=m_sTrainCode[3];
		 ucVecSequenceMaster35[35]=m_sTrainCode[4];
		 int route_checksum=FunCRC16(( char *)&ucVecSequenceMaster35[0],37);
         ucVecSequenceMaster35[37]=route_checksum&0x00FF;
         ucVecSequenceMaster35[38]=(route_checksum&0xFF00)>>8;
		}
	    break;
     case 6:
		{
		 ucVecSequenceMaster36[10]=0x16;
         ucVecSequenceMaster36[14]=0x16;
         ucVecSequenceMaster36[21]=0x06;
         ucVecSequenceMaster36[23]=m_sTrainCode[0];
         ucVecSequenceMaster36[26]=m_sTrainCode[1];
		 ucVecSequenceMaster36[29]=m_sTrainCode[2];
		 ucVecSequenceMaster36[32]=m_sTrainCode[3];
		 ucVecSequenceMaster36[35]=m_sTrainCode[4];
		 ucVecSequenceMaster36[38]=m_sTrainCode[5];
		 int route_checksum=FunCRC16(( char *)&ucVecSequenceMaster36[0],40);
         ucVecSequenceMaster36[40]=route_checksum&0x00FF;
         ucVecSequenceMaster36[41]=(route_checksum&0xFF00)>>8;
		}
        break;
     default:
     break;
   }//end of switch
    unsigned char UnicodeDataL[12],UnicodeDataH[12],UnicodeDataL1[12],UnicodeDataH1[12];
	unsigned short  UnicodeData[12],UnicodeData1[12];
	int OriginalStation_len=m_sOriginalStationCh.GetLength( );//求出选择的区间的字符串的长度;
	int LastStation_len=m_sLastStationCh.GetLength( );
	int i,j=0,p,q=0;
	for(i=0;i<OriginalStation_len-1;i=i+2)
	{ 
	//取得字符串是从第0个开始的
		ucOriginalStationQ=m_sOriginalStationCh[i];
	    ucOriginalStationW=m_sOriginalStationCh[i+1];
		UnicodeData[i]=0x2A9+(ucOriginalStationQ-0xB0)*0x5E+(ucOriginalStationW-0xA1);
        UnicodeDataL[i]=UnicodeData[i]&0x00FF;
        UnicodeDataH[i]=(UnicodeData[i]&0xFF00)>>8;
	    //赋值
		ucIntervalMaster3[23+3*j]=UnicodeDataL[i];
        ucIntervalMaster3[24+3*j]=UnicodeDataH[i];
		j++;
	}
	ucIntervalMaster3[23+3*j]=0xB1;
	ucIntervalMaster3[24+3*j]=0x00;
	j++;
    for(p=0;p<LastStation_len-1;p=p+2)
	{ 
	//取得字符串是从第0个开始的
		ucLastStationQ=m_sLastStationCh[p];
	    ucLastStationW=m_sLastStationCh[p+1];
		UnicodeData1[p]=0x2A9+(ucLastStationQ-0xB0)*0x5E+(ucLastStationW-0xA1);
        UnicodeDataL1[p]=UnicodeData1[p]&0x00FF;
        UnicodeDataH1[p]=(UnicodeData1[p]&0xFF00)>>8;
	    //赋值
		ucIntervalMaster3[23+3*j]=UnicodeDataL1[p];
        ucIntervalMaster3[24+3*j]=UnicodeDataH1[p];
		j++;
	}
    //算出CRC
	int Qujian_checksum=FunCRC16(( char *)&ucIntervalMaster3[0],55);
	ucIntervalMaster3[55]=Qujian_checksum&0x00FF;
	ucIntervalMaster3[56]=(Qujian_checksum&0xFF00)>>8;
    UpdateData(TRUE);
	m_bAutoSend = !m_bAutoSend;
	if (m_bAutoSend)
	{   SetTimer(5,20000,NULL);//设定2秒钟
	    //SetTimer(1,atoi(m_time.GetBuffer(m_time.GetLength())), NULL);	//设置定时
	    SetDlgItemText(IDC_ED_Button, "停止");
	}
	else
	{
		KillTimer(5);
		SetDlgItemText(IDC_ED_Button, "自动发送");
	}
  
}
void CIDEDDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	CDialog::OnTimer(nIDEvent);
 	switch(nIDEvent){   
   case   1:   
		//Process   first   timer  
		m_Com1.Write((unsigned char*)&WelcomeMaster22[0],145);
		KillTimer(1);
		break;   
    case   2:   
		//process   second   timer  
		m_Com1.Write((unsigned char*)&DateTime[0],85);
		KillTimer(2);
		break;
	case   3:   
		//process   second   timer  
		m_Com1.Write((unsigned char*)&Time[0],85);
		KillTimer(3);
		break;
	case   4:   
		//process   second   timer  
		m_Com1.Write((unsigned char*)&Week[0],85);
		KillTimer(4);
		break; 
	case   5:  
		//process   second   timer
		//清空
        unsigned char Reset[26]={
		              0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0x0D,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x05,
	                  0x00,0x05,0x01,0x90,0x10,0x08,0x08,0xD8,0xC8,0xF6,0x0D};
        m_Com1.Write((unsigned char*)&Reset[0],26);
        wait();
		//发送车厢号1主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster1[0],31);
		wait();
		//发送车厢号2主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster2[0],31);
		wait();
		//发送车厢号3主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster3[0],31);
		wait();
		//发送车厢号4主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster4[0],31);
		wait();
		//发送车厢号5主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster5[0],31);
		wait();
		//发送车厢号6主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster6[0],31);
		wait();
		//发送车厢号7主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster7[0],31);
		wait();
		//发送车厢号8主幀
		m_Com1.Write((unsigned char*)&VehicleNumMaster8[0],31);
		wait();
		wait();
		//发送车次初始化主幀 
		m_Com1.Write((unsigned char*)&ucVecSequenceMaster1[0],26);
		wait();
		//发送车次显示模式主幀
		m_Com1.Write((unsigned char*)&ucVecSequenceMaster2[0],29);
		wait();
		//发送车次信息主幀
		if(TrainCode_len==2)
			m_Com1.Write((unsigned char*)&ucVecSequenceMaster32[0],31);
		if(TrainCode_len==3)
			m_Com1.Write((unsigned char*)&ucVecSequenceMaster33[0],34);
		if(TrainCode_len==4)
			m_Com1.Write((unsigned char*)&ucVecSequenceMaster34[0],37);
		if(TrainCode_len==5)
			m_Com1.Write((unsigned char*)&ucVecSequenceMaster35[0],40);
		if(TrainCode_len==6)
			m_Com1.Write((unsigned char*)&ucVecSequenceMaster36[0],43);
		wait();
		wait();
		//发送区间初始化主幀
		m_Com1.Write((unsigned char*)&ucIntervalMaster1[0],26);
		wait();
		//发送区间显示模式主幀
		m_Com1.Write((unsigned char*)&ucIntervalMaster2[0],29);
		wait();
		//发送区间线路信息主幀
		m_Com1.Write((unsigned char*)&ucIntervalMaster3[0],58);
	//	KillTimer(5);
		break; 
	}
}
CString CIDEDDlg::GetCurrentWeek()//得到当天星期几的函数
{
	CString strWeek;
	CTime m_time = CTime::GetCurrentTime();
	int number = m_time.GetDayOfWeek();
	switch(number){
	case 1:
		strWeek = "星期日";
		AfxMessageBox(strWeek);
		break;
	case 2:
		strWeek = "星期一";
		break;
	case 3:
		strWeek = "星期二";
		break;
	case 4:
		strWeek = "星期三";
		break;
	case 5:
		strWeek = "星期四";
		
		break;
	case 6:
		strWeek = "星期五";
		break;
	case 7:
		strWeek = "星期六";
		break;
	}
	return strWeek;

}


⌨️ 快捷键说明

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