📄 ideddlg.cpp
字号:
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 + -