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

📄 ideddlg.cpp

📁 VC++6.0基于CAN协议的车辆控制
💻 CPP
📖 第 1 页 / 共 3 页
字号:
{
	// TODO: Add your control notification handler code here
   POSITION pos;
   pos = m_TrainCodeList.GetFirstSelectedItemPosition();
   // 得到项目索引
   IndexInFieldList = m_TrainCodeList.GetNextSelectedItem(pos);
   m_sTrainCode=m_TrainCodeList.GetItemText(IndexInFieldList, 0);
   m_sTrainCode.TrimLeft();
   m_sTrainCode.TrimRight();
   CAdoRecordSet pRS0,pRS1,pRS2,pRS3;
   pRS0.SetAdoConnection(&m_adoConnection);
   pRS0.Open("SELECT distinct OriginalStationCh from RouteList where (TrainCode='"+m_sTrainCode+"')");
   pRS1.SetAdoConnection(&m_adoConnection);
   pRS1.Open("SELECT distinct LastStationCh from RouteList where (TrainCode='"+m_sTrainCode+"')");
   pRS2.SetAdoConnection(&m_adoConnection);
   pRS2.Open("SELECT distinct StartTime from RouteList where (TrainCode='"+m_sTrainCode+"')"); 
   pRS3.SetAdoConnection(&m_adoConnection);
   pRS3.Open("SELECT distinct PassStationCh from RouteList where (TrainCode='"+m_sTrainCode+"')"); 
   //读取区间信息,不显示
   pRS0.GetCollect("OriginalStationCh",m_sOriginalStationCh);
   pRS1.GetCollect("LastStationCh",m_sLastStationCh);
   m_sOriginalStationCh.TrimLeft();
   m_sOriginalStationCh.TrimRight();
   m_sLastStationCh.TrimLeft();
   m_sLastStationCh.TrimRight();
 //  AfxMessageBox(m_sOriginalStationCh);
   //读取开车时间信息,不显示
   pRS2.GetCollect("StartTime",m_sStartTime);
   m_sStartTime.TrimLeft();
   m_sStartTime.TrimRight();
 //  AfxMessageBox(m_sStartTime);
   //读取过路站信息,不显示
   pRS3.GetCollect("PassStationCh",m_sPassStationCh);
   m_sPassStationCh.TrimLeft();
   m_sPassStationCh.TrimRight();
//   AfxMessageBox(m_sPassStationCh);
	*pResult = 0;
}

void CIDEDDlg::OnIntervalStationButton() 
{
	// TODO: Add your control notification handler code here
	m_sIntervalStationCh=m_sOriginalStationCh+'-'+m_sLastStationCh ;
    //显示车次对应的区间
	m_IntervalStationChList.DeleteAllItems();
    int ITEMS=m_IntervalStationChList.GetItemCount();
    m_IntervalStationChList.InsertItem(ITEMS, _T(""));
    m_IntervalStationChList.SetItemText(ITEMS, 0, m_sIntervalStationCh);
}

void CIDEDDlg::OnIDButton() 
{
	// TODO: Add your control notification handler code here
	 //车内显示中文初始化
	//55 FF FF FF FF FF 0D 00 00 00 05 00 00 00 05 00 13 02 00 90 00 18 00 DA 81 0D
	unsigned char WelcomeMaster1[26]={
		         0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0x0D,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x05,
				 0x00,0x13,0x02,0x00,0x90,0x00,0x18,0xDA,0x81,0x00,0x0D};
	//车内显示滚动模式
	//55 FF FF FF FF FF 0D 00 00 00 08 00 00 00 08 00 08 02 00 04 00 00 00 00 00 0A 6D 51 0D
    unsigned char WelcomeMaster2[29]={
		         0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0x0D,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,
				 0x00,0x08,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x0A,0x6d,0x51,0x0D};
    //清空
    unsigned char Reset2[26]={
		         0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0x0D,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x05,
	             0x00,0x05,0x02,0x90,0x10,0x08,0x08,0xD8,0xC8,0xC5,0x0D};
    //欢迎信息:欢迎您乘坐本次列车,本次列车是由xx开往xx的xx次,
    //每段信息最多可显示40个字(包括标点)
	unsigned char WelcomeMaster11[145]={
                 0x55,0xFF,0xFF,0xFF,0xFF,0xFF,0x0D,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x7C,
		         0x00,0x06,0x02,0x00,0x00,0x00,0x28,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,0x00,0x14,0x1D,
				 0x00,0x00,0x0D};
    char string1[200]="欢迎您乘坐本次列车,本次列车是由";//需要设定数组长度,否则动态分配空间影响数组中的内容
	char string2[12];
	char string3[6]="开往";
	char string4[10];
    char string5[4]="的";
    char string6[10];
	char string7[4]="次";
    char string11[200]="开车时间是";
	char string22[15];
	char string33[15]=",中途经由:";
    char string44[50];
	int OriginalStation_len=m_sOriginalStationCh.GetLength( );//求出选择的区间的字符串的长度;
	int LastStation_len=m_sLastStationCh.GetLength( );
    int routeid_len=m_sTrainCode.GetLength( );
    int starttime_len=m_sStartTime.GetLength( );
	int passstation_len=m_sPassStationCh.GetLength( );
	int k,p,q=0,n=0,m,i=0,j=0,a,b,d=0,c,e=0,f,g=0,h,r,s=0;
    unsigned char  HanziUnicodeDataL,HanziUnicodeDataH,XingqiUnicodeDataL,XingqiUnicodeDataH,\
		           HanziUnicodeDataL1,HanziUnicodeDataH1;
	unsigned short  HanziUnicodeData,HanziUnicodeData1;
	unsigned short  ZimuUnicodeData,ZimuUnicodeData1,RiqiUnicodeData,ShijianUnicodeData,XingqiUnicodeData;
    //显示当前日期时间星期
	COleDateTime   TD;   
    CString   time,Date,CurrentTime,CurrentDate,CurrentWeek;
	TD=TD.GetCurrentTime();
	time.Format("%d:%d:%d",TD.GetHour(),TD.GetMinute(),TD.GetSecond());
	CurrentTime=time;  
    //strsql.Format("%d",nLevel);   
    //strTD.Format("%d-%d-%d   %d:%d:%d",TD.GetYear(),TD.GetMonth(),TD.GetDay(),TD.GetHour(),TD.GetMinute(),TD.GetSecond());   
    Date.Format("%d/%d/%d",TD.GetYear(),TD.GetMonth(),TD.GetDay());
	CurrentDate=Date;
	CurrentWeek=GetCurrentWeek();
	AfxMessageBox(CurrentWeek);
	memset(string2,0,sizeof(string2));//清空字符串
	for(k=0;k<OriginalStation_len;k++)
	   string2[k]=m_sOriginalStationCh[k];
		
	strcat(string1,string2);
	strcat(string1,string3);
    memset(string4,0,sizeof(string4));//清空字符串
	for(p=0;p<LastStation_len;p++)
	{
		string4[p]=m_sLastStationCh[p];
	}                     
    strcat(string1,string4);
    strcat(string1,string5);
    memset(string6,0,sizeof(string6));//清空字符串
	for(a=0;a<routeid_len;a++)
       string6[a]=m_sTrainCode[a];
    strcat(string1,string6);
	strcat(string1,string7);
    //AfxMessageBox(string1);
	int string1_len=strlen(string1);
	for(m=0;m<string1_len;m=m+2)
	{ unsigned char str=string1[m];//定义成 char型不可以
	if(str>0x80)//判断汉字和字母数字(汉字版)的条件,大于0x80是汉字
	{
		uchuanyingQ=string1[m];
		uchuanyingW=string1[m+1];
		HanziUnicodeData=0x2A9+(uchuanyingQ-0xB0)*0x5E+(uchuanyingW-0xA1);//计算汉字Unicode码的公式
		HanziUnicodeDataL=HanziUnicodeData&0x00FF;
		HanziUnicodeDataH=(HanziUnicodeData&0xFF00)>>8;
		//赋值
		WelcomeMaster11[22+3*n]=0x00;
		WelcomeMaster11[23+3*n]=HanziUnicodeDataL;
		WelcomeMaster11[24+3*n]=HanziUnicodeDataH;
		n++;
	}
	else
	{   
		ZimuUnicodeData=string1[m]+0x84;////计算字母数字(汉字版)Unicode码的公式
	    //赋值
	    WelcomeMaster11[22+3*n]=0x00;
	    WelcomeMaster11[23+3*n]=ZimuUnicodeData;
	    WelcomeMaster11[24+3*n]=0x00;
	    m--;
	    n++;
	 }
	}
	//算出CRC
    int route11_checksum=FunCRC16(( char *)&WelcomeMaster11[0],142);
    WelcomeMaster11[142]=route11_checksum&0x00FF;
    WelcomeMaster11[143]=(route11_checksum&0xFF00)>>8; 
	
	
	int Date_len=strlen(CurrentDate);
	int Time_len=strlen(CurrentTime);
	int Week_len=strlen(CurrentWeek);
	for(b=0;b<Date_len;b=b+2)
	{ 
	    RiqiUnicodeData=CurrentDate[b]+0x84;
	    //赋值
	    DateTime[22+3*d]=0x00;
	    DateTime[23+3*d]=RiqiUnicodeData;
	    DateTime[24+3*d]=0x00;
		b--;
	    d++;
	}
	//算出日期CRC
	int Date_checksum=FunCRC16(( char *)&DateTime[0],82);
    DateTime[82]=Date_checksum&0x00FF;
    DateTime[83]=(Date_checksum&0xFF00)>>8;
    for(c=0;c<Time_len;c=c+2)
	{ 
	    ShijianUnicodeData=CurrentTime[c]+0x84;
	    //赋值
	    Time[22+3*e]=0x00;
	    Time[23+3*e]=ShijianUnicodeData;
	    Time[24+3*e]=0x00;
		c--;
	    e++;
	}
	//算出时间CRC
    int Time_checksum=FunCRC16(( char *)&Time[0],82);
    Time[82]=Time_checksum&0x00FF;
    Time[83]=(Time_checksum&0xFF00)>>8;
    for(f=0;f<Week_len;f=f+2)
	{ 
	    WeekQ=CurrentWeek[f];
		WeekW=CurrentWeek[f+1];
		XingqiUnicodeData=0x2A9+(WeekQ-0xB0)*0x5E+(WeekW-0xA1);
		XingqiUnicodeDataL=XingqiUnicodeData&0x00FF;
		XingqiUnicodeDataH=(XingqiUnicodeData&0xFF00)>>8;
		//赋值
		Week[22+3*g]=0x00;
		Week[23+3*g]=XingqiUnicodeDataL;
		Week[24+3*g]=XingqiUnicodeDataH;
		g++;
	}
	//算出星期CRC
    int Week_checksum=FunCRC16(( char *)&Week[0],82);
    Week[82]=Week_checksum&0x00FF;
    Week[83]=(Week_checksum&0xFF00)>>8;
	memset(string22,0,sizeof(string22));//清空字符串
    for(f=0;f<starttime_len;f++)
       string22[f]=m_sStartTime[f];
	strcat(string11,string22);
	strcat(string11,string33);
	memset(string44,0,sizeof(string44));//清空字符串
    for(h=0;h<passstation_len;h++)
       string44[h]=m_sPassStationCh[h];
	strcat(string11,string44);
//	AfxMessageBox(string11);
	int string11_len=strlen(string11);
	for(r=0;r<string11_len;r=r+2)
	{ unsigned char str11=string11[r];//定义成 char型不可以
	if(str11>0x80)
	{
		uchuanyingQ1=string11[r];
		uchuanyingW1=string11[r+1];

		HanziUnicodeData1=0x2A9+(uchuanyingQ1-0xB0)*0x5E+(uchuanyingW1-0xA1);
		HanziUnicodeDataL1=HanziUnicodeData1&0x00FF;
		HanziUnicodeDataH1=(HanziUnicodeData1&0xFF00)>>8;
		//赋值
		WelcomeMaster22[22+3*s]=0x00;
		WelcomeMaster22[23+3*s]=HanziUnicodeDataL1;
		WelcomeMaster22[24+3*s]=HanziUnicodeDataH1;
		s++;
	}
	else
	{   
		ZimuUnicodeData1=string11[r]+0x84;
	    //赋值
	    WelcomeMaster22[22+3*s]=0x00;
	    WelcomeMaster22[23+3*s]=ZimuUnicodeData1;
	    WelcomeMaster22[24+3*s]=0x00;
	    r--;
	    s++;
	 }
	}
	//算出第二段信息CRC
    int route22_checksum=FunCRC16(( char *)&WelcomeMaster22[0],142);
    WelcomeMaster22[142]=route22_checksum&0x00FF;
    WelcomeMaster22[143]=(route22_checksum&0xFF00)>>8; 
    m_Com1.Write((unsigned char*)&Reset2[0],26);
	wait();
	m_Com1.Write((unsigned char*)&WelcomeMaster1[0],26);
    wait();
    m_Com1.Write((unsigned char*)&WelcomeMaster2[0],29);
    wait();
	m_Com1.Write((unsigned char*)&WelcomeMaster11[0],145);
	wait();
		

⌨️ 快捷键说明

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