📄 projectpmudlg.cpp
字号:
if(i % 3 ==0) m_ucVecSequenceMaster[22+i]=0x0F;
if(i % 3 ==1) m_ucVecSequenceMaster[22+i]=m_checi[i/3];
if(i % 3 ==2) m_ucVecSequenceMaster[22+i]=0x00;
}
m_iVecSequenceNum=22+checi_len*3;
m_iVecSequenceNum=m_iVecSequenceNum+3;
//区间发送串赋值
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( );
unsigned char ucOriginalStationQ,ucOriginalStationW,ucLastStationQ,ucLastStationW;
////中文区间赋值
OriginalStation_len=m_strOriginalStationCh.GetLength();
LastStation_len=m_strLastStationCh.GetLength();
n=0;
for(i=0;i<OriginalStation_len-1;i=i+2)
{
unsigned char str=m_strOriginalStationCh[i];
if(str>0x80)
{
//取得字符串是从第0个开始的
ucOriginalStationQ=m_strOriginalStationCh[i];
ucOriginalStationW=m_strOriginalStationCh[i+1];
UnicodeData[i]=0x2A9+(ucOriginalStationQ-0xB0)*0x5E+(ucOriginalStationW-0xA1);
UnicodeDataL[i]=UnicodeData[i]&0x00FF;
UnicodeDataH[i]=(UnicodeData[i]&0xFF00)>>8;
//赋值
m_ucIntervalMasterCh[23+3*n]=UnicodeDataL[i];
m_ucIntervalMasterCh[24+3*n]=UnicodeDataH[i];
n++;
}
else
{
m_ucIntervalMasterCh[23+3*n]=m_strOriginalStationCh[i]+0x84;
i--;
n++;
}
}
m_ucIntervalMasterCh[23+3*n]=0xB1;
m_ucIntervalMasterCh[24+3*n]=0x00;
n++;
for(i=0;i<LastStation_len-1;i=i+2)
{
//取得字符串是从第0个开始的
unsigned char str=m_strLastStationCh[i];
if(str>0x80)
{
ucLastStationQ=m_strLastStationCh[i];
ucLastStationW=m_strLastStationCh[i+1];
UnicodeData1[i]=0x2A9+(ucLastStationQ-0xB0)*0x5E+(ucLastStationW-0xA1);
UnicodeDataL1[i]=UnicodeData1[i]&0x00FF;
UnicodeDataH1[i]=(UnicodeData1[i]&0xFF00)>>8;
//赋值
m_ucIntervalMasterCh[23+3*n]=UnicodeDataL1[i];
m_ucIntervalMasterCh[24+3*n]=UnicodeDataH1[i];
n++;
}
else
{
m_ucIntervalMasterCh[23+3*n]=m_strLastStationCh[i]+0x84;
i--;
n++;
}
}
//if(n<=8)
{ //后面加3个空格
for(i=0;i<3;i++)
{
m_ucIntervalMasterCh[23+3*n]=0x14;
m_ucIntervalMasterCh[24+3*n]=0x1D;
n++;
}
}
n=n-1;
m_iIntervalNumCh=22+n*3;
m_ucIntervalMasterCh[10]=n*3+4;
m_ucIntervalMasterCh[14]=n*3+4;
m_ucIntervalMasterCh[18]=2;
m_ucIntervalMasterCh[21]=n;
//算出CRC
int Qujian_checksum=pFunCRC16(( char *)&m_ucIntervalMasterCh[0],m_iIntervalNumCh);
m_ucIntervalMasterCh[m_iIntervalNumCh]=Qujian_checksum&0x00FF;
m_ucIntervalMasterCh[m_iIntervalNumCh+1]=(Qujian_checksum&0xFF00)>>8;
m_ucIntervalMasterCh[m_iIntervalNumCh+2]=0x0D;
m_iIntervalNumCh=m_iIntervalNumCh+3;
////////区间英文赋值
OriginalStation_len=m_strOriginalStationEn.GetLength();
LastStation_len=m_strLastStationEn.GetLength();
n=0;
for(i=0;i<OriginalStation_len;i++)
{
m_ucIntervalMasterEn[22+n*3]=0x0F;
m_ucIntervalMasterEn[23+n*3]=m_strOriginalStationEn[i];
n++;
}
m_ucIntervalMasterEn[23+3*n]=0xB1;
m_ucIntervalMasterEn[24+3*n]=0x00;
n++;
for(i=0;i<LastStation_len;i++)
{
m_ucIntervalMasterEn[22+n*3]=0x0F;
m_ucIntervalMasterEn[23+n*3]=m_strLastStationEn[i];
n++;
}
//if(n<=8)
{ //后面加6个空格
for(i=0;i<6;i++)
{
m_ucIntervalMasterEn[22+3*n]=0x0F;
m_ucIntervalMasterEn[23+3*n]=0x20;
n++;
}
}
n=n-1;
m_iIntervalNumEn=22+n*3;
m_ucIntervalMasterEn[10]=n*3+4;
m_ucIntervalMasterEn[14]=n*3+4;
m_ucIntervalMasterEn[18]=5;
m_ucIntervalMasterEn[21]=n;
//算出CRC
Qujian_checksum=pFunCRC16(( char *)&m_ucIntervalMasterEn[0],m_iIntervalNumEn);
m_ucIntervalMasterEn[m_iIntervalNumEn]=Qujian_checksum&0x00FF;
m_ucIntervalMasterEn[m_iIntervalNumEn+1]=(Qujian_checksum&0xFF00)>>8;
m_ucIntervalMasterEn[m_iIntervalNumEn+2]=0x0D;
m_iIntervalNumEn=m_iIntervalNumEn+3;
//发送车外
// EDSend();
SetTimer(5,4000,NULL);//设定2秒钟
//////////////////////////////////////////////
//取中途经由车站
if (m_pConnection.ConnectAccess(mMDB_Path,"sri"))
{
strSql="SELECT PassStationEn,PassStationCh FROM RouteList ";
strSql+="where TrainCode='";
strSql+=m_checi;
strSql+="'";
pRS0.SetAdoConnection(&m_pConnection);
pRS0.Open(strSql,adCmdText);
if(!pRS0.IsEOF())
{
pRS0.GetCollect("PassStationEn",sTemp1);
pRS0.GetCollect("PassStationCh",sTemp2);
sTemp1.TrimRight();
sTemp2.TrimRight();
}
else
{
sTemp1=_T("");
sTemp2=_T("");
}
pRS0.Close();
}
m_pConnection.Close();
/////////////////////////////////////////////////////
//车内赋值
unsigned char UcDataL,UcDataH;
unsigned short UcData;
CString strTemp;
memset(m_ucIDMasterCh,0,sizeof(m_ucIDMasterCh));
memset(m_ucIDMasterEn,0,sizeof(m_ucIDMasterEn));
//strcpy(m_ucVecSequenceMaster,m_ucVecSequenceHead);
for(i=0;i<22;i++)
{
m_ucIDMasterCh[i]=m_ucVecSequenceHead[i];
m_ucIDMasterEn[i]=m_ucVecSequenceHead[i];
}
strTemp=_T("欢迎您乘坐本次列车,本次列车是由");
strTemp=strTemp+m_strOriginalStationCh+_T("开往")+m_strLastStationCh;
strTemp=strTemp+_T("的")+m_checi+_T("次列车");
m_strIDch=strTemp;
////中文赋值
int ID_len=strTemp.GetLength();
n=0;
for(i=0;i<ID_len-1;i=i+2)
{
unsigned char str=strTemp[i];
if(str>0x80)
{
//取得字符串是从第0个开始的
ucOriginalStationQ=strTemp[i];
ucOriginalStationW=strTemp[i+1];
UcData=0x2A9+(ucOriginalStationQ-0xB0)*0x5E+(ucOriginalStationW-0xA1);
UcDataL=UcData&0x00FF;
UcDataH=(UcData&0xFF00)>>8;
//赋值
m_ucIDMasterCh[23+3*n]=UcDataL;
m_ucIDMasterCh[24+3*n]=UcDataH;
n++;
}
else
{
m_ucIDMasterCh[23+3*n]=strTemp[i]+0x84;
i--;
n++;
}
}
{ //后面加3个空格
for(i=0;i<3;i++)
{
m_ucIDMasterCh[23+3*n]=0x14;
m_ucIDMasterCh[24+3*n]=0x1D;
n++;
}
}
n=n-1;
m_iIDNumCh=22+n*3;
m_ucIDMasterCh[10]=n*3+4;
m_ucIDMasterCh[14]=n*3+4;
m_ucIDMasterCh[17]=2; //车内
m_ucIDMasterCh[18]=0; //中文
m_ucIDMasterCh[21]=n;
//算出CRC
Qujian_checksum=pFunCRC16(( char *)&m_ucIDMasterCh[0],m_iIDNumCh);
m_ucIDMasterCh[m_iIDNumCh]=Qujian_checksum&0x00FF;
m_ucIDMasterCh[m_iIDNumCh+1]=(Qujian_checksum&0xFF00)>>8;
m_ucIDMasterCh[m_iIDNumCh+2]=0x0D;
m_iIDNumCh=m_iIDNumCh+3;
strTemp=_T("Welcome on board our ");
strTemp=strTemp+m_checi+_T(" train. ");
//strTemp=strTemp+_T("This train is travelling from ")+m_strOriginalStationEn+_T(" to ")+m_strLastStationEn;
m_strIDen=strTemp;
////车内英文赋值
ID_len=strTemp.GetLength();
n=0;
for(i=0;i<ID_len;i++)
{
m_ucIDMasterEn[22+n*3]=0x0F;
m_ucIDMasterEn[23+n*3]=strTemp[i];
n++;
}
//if(n<=8)
{ //后面加6个空格
for(i=0;i<6;i++)
{
m_ucIDMasterEn[22+3*n]=0x0F;
m_ucIDMasterEn[23+3*n]=0x20;
n++;
}
}
n=n-1;
m_iIDNumEn=22+n*3;
m_ucIDMasterEn[10]=n*3+4;
m_ucIDMasterEn[14]=n*3+4;
m_ucIDMasterEn[17]=2; //车外
m_ucIDMasterEn[18]=3; //英文
m_ucIDMasterEn[21]=n;
//算出CRC
Qujian_checksum=pFunCRC16(( char *)&m_ucIDMasterEn[0],m_iIDNumEn);
m_ucIDMasterEn[m_iIDNumEn]=Qujian_checksum&0x00FF;
m_ucIDMasterEn[m_iIDNumEn+1]=(Qujian_checksum&0xFF00)>>8;
m_ucIDMasterEn[m_iIDNumEn+2]=0x0D;
m_iIDNumEn=m_iIDNumEn+3;
SetTimer(6,12000,NULL);
}
/*#######################################
当在combo_nextstation中选择下一站时
############################################*/
void CPROJECTPMUDlg::OnSelchangeComboNextstation()
{
// TODO: Add your control notification handler code here
int n=((CComboBox*)GetDlgItem(IDC_COMBO_NEXTSTATION))->GetCurSel();
((CComboBox*)GetDlgItem(IDC_COMBO_NEXTSTATION))->GetLBText(n,m_nextstation);
SetDlgItemText(IDC_STATIC_NSTATION_TEXT, m_nextstation);
NextStationInit();
/*
if (m_pConnection.ConnectAccess(mMDB_Path,"sri"))
{
CString sTemp1,sTemp2,strSql;
CAdoRecordSet pRS0;
//从数据库表StationInfo得到下一个站的经纬度
strSql="SELECT Longitude,Latitude,EnglishWave,ChineseWave FROM StationInfo ";
if (b_IsChinese)
strSql+="where StationNameCh='";
else
strSql+="where StationNameEn='";
strSql+=m_nextstation;
strSql+="'";
//MessageBox(strSql);
pRS0.SetAdoConnection(&m_pConnection);
pRS0.Open(strSql,adCmdText);
if(!pRS0.IsEOF())
{
pRS0.GetCollect("Longitude",sTemp1);
pRS0.GetCollect("Latitude",sTemp2);
sTemp1.TrimRight();
sTemp2.TrimRight();
SetDlgItemText(IDC_STATIC_NSTATIONJD_TEXT, sTemp1);
SetDlgItemText(IDC_STATIC_NSTATIONWD_TEXT, sTemp2);
}
pRS0.Close();
//从数据库表RouteInfo得到离下一个站的报站距离
strSql="SELECT AnnouncementDistanceThreshold FROM RouteInfo ";
if (b_IsChinese)
strSql+="where NextStationCh='";
else
strSql+="where NextStationEn='";
strSql+=m_nextstation;
strSql+="'";
//MessageBox(strSql);
pRS0.SetAdoConnection(&m_pConnection);
pRS0.Open(strSql,adCmdText);
if(!pRS0.IsEOF())
{
pRS0.GetCollect("AnnouncementDistanceThreshold",m_iBaoZhanJuLi);
}
pRS0.Close();
}
m_pConnection.Close();
*/
}
void CPROJECTPMUDlg::wait()
{
Sleep(200);
}
//清空外屏
void CPROJECTPMUDlg::ClearED()
{
int CRCchecksum;
m_EDIDInit[16]=0x05; //清空
m_EDIDInit[17]=1; //车外
m_EDIDInit[18]=0x90;
m_EDIDInit[19]=0x10;
m_EDIDInit[20]=0x08;
m_EDIDInit[21]=0x08;
m_EDIDInit[22]=0xD8;
//算出CRC
CRCchecksum=pFunCRC16(( char *)&m_EDIDInit[0],23);
m_EDIDInit[23]=CRCchecksum&0x00FF;
m_EDIDInit[24]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_EDIDInit[0],26);
wait();
}
//清空内屏
void CPROJECTPMUDlg::ClearID()
{
int CRCchecksum;
m_EDIDInit[16]=0x05; //清空
m_EDIDInit[17]=2; //车内
m_EDIDInit[18]=0x90;
m_EDIDInit[19]=0x10;
m_EDIDInit[20]=0x08;
m_EDIDInit[21]=0x08;
m_EDIDInit[22]=0xD8;
//算出CRC
CRCchecksum=pFunCRC16(( char *)&m_EDIDInit[0],23);
m_EDIDInit[23]=CRCchecksum&0x00FF;
m_EDIDInit[24]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_EDIDInit[0],26);
wait();
}
/*##########################################
车外显示发送函数
###############################################333*/
void CPROJECTPMUDlg::EDSend()
{
int CRCchecksum;
KillTimer(5);
//清空外屏
ClearED();
//初始化############################
//全列车厢号中文初始化
m_EDIDInit[16]=0x13; //初始化
m_EDIDInit[17]=1; //车外
m_EDIDInit[18]=0; //车厢号中文
m_EDIDInit[19]=0x24;
m_EDIDInit[20]=0x00;
m_EDIDInit[21]=0x18;
m_EDIDInit[22]=0x00;
CRCchecksum=pFunCRC16(( char *)&m_EDIDInit[0],23);
m_EDIDInit[23]=CRCchecksum&0x00FF;
m_EDIDInit[24]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_EDIDInit[0],26);
wait();
//全列车次中文初始化
m_EDIDInit[16]=0x13; //初始化
m_EDIDInit[17]=1; //车外
m_EDIDInit[18]=1; //车次中文
m_EDIDInit[19]=0x78;
m_EDIDInit[20]=0x44;
m_EDIDInit[21]=0x18;
m_EDIDInit[22]=0x05;
CRCchecksum=pFunCRC16(( char *)&m_EDIDInit[0],23);
m_EDIDInit[23]=CRCchecksum&0x00FF;
m_EDIDInit[24]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_EDIDInit[0],26);
wait();
//全列区间中文初始化
m_EDIDInit[16]=0x13; //初始化
m_EDIDInit[17]=1; //车外
m_EDIDInit[18]=2; //区间中文
m_EDIDInit[19]=0x78;
m_EDIDInit[20]=0x00;
m_EDIDInit[21]=0x30;
m_EDIDInit[22]=0x18;
CRCchecksum=pFunCRC16(( char *)&m_EDIDInit[0],23);
m_EDIDInit[23]=CRCchecksum&0x00FF;
m_EDIDInit[24]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_EDIDInit[0],26);
wait();
//全列车厢号英文初始化
m_EDIDInit[16]=0x13; //初始化
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -