📄 projectpmudlg.cpp
字号:
m_EDIDInit[17]=1; //车外
m_EDIDInit[18]=3; //车厢号英文
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]=4; //车次英文
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]=5; //区间英文
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_VehicleNumMaster[18]=0; //中文
for(int n=1;n<=8;n++)
{
m_VehicleNumMaster[1]=n;
m_VehicleNumMaster[26]=n;
CRCchecksum=pFunCRC16(( char *)&m_VehicleNumMaster[0],28);
m_VehicleNumMaster[28]=CRCchecksum&0x00FF;
m_VehicleNumMaster[29]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_VehicleNumMaster[0],31);
wait();
}
//外屏显示车厢号英文
m_VehicleNumMaster[18]=3;
for(n=1;n<=8;n++)
{
m_VehicleNumMaster[1]=n;
m_VehicleNumMaster[26]=n;
CRCchecksum=pFunCRC16(( char *)&m_VehicleNumMaster[0],28);
m_VehicleNumMaster[28]=CRCchecksum&0x00FF;
m_VehicleNumMaster[29]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_VehicleNumMaster[0],31);
wait();
}
//发送车次显示帧中文
m_ucVecSequenceMaster[18]=1;
CRCchecksum=pFunCRC16(( char *)&m_ucVecSequenceMaster[0],m_iVecSequenceNum-3);
m_ucVecSequenceMaster[m_iVecSequenceNum-3]=CRCchecksum&0x00FF;
m_ucVecSequenceMaster[m_iVecSequenceNum-2]=(CRCchecksum&0xFF00)>>8;
m_ucVecSequenceMaster[m_iVecSequenceNum-1]=0x0D;
m_Com2.Write((unsigned char*)&m_ucVecSequenceMaster[0],m_iVecSequenceNum);
wait();
//发送车次显示帧英文
m_ucVecSequenceMaster[18]=4;
CRCchecksum=pFunCRC16(( char *)&m_ucVecSequenceMaster[0],m_iVecSequenceNum-3);
m_ucVecSequenceMaster[m_iVecSequenceNum-3]=CRCchecksum&0x00FF;
m_ucVecSequenceMaster[m_iVecSequenceNum-2]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_ucVecSequenceMaster[0],m_iVecSequenceNum);
wait();
//wait();
//发送区间信息主幀中文
m_Com2.Write((unsigned char*)&m_ucIntervalMasterCh[0],m_iIntervalNumCh);
wait();
//全列区间中文滚动
m_IntervalRoll[17]=1; //车外
m_IntervalRoll[18]=2; //区间中文模式
m_IntervalRoll[25]=2; //滚屏速度
CRCchecksum=pFunCRC16(( char *)&m_IntervalRoll[0],26);
m_IntervalRoll[26]=CRCchecksum&0x00FF;
m_IntervalRoll[27]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_IntervalRoll[0],29);
wait();
//全列区间英文文滚动
m_IntervalRoll[17]=1; //车外
m_IntervalRoll[18]=5; //区间英文模式
m_IntervalRoll[25]=2; //滚屏速度
CRCchecksum=pFunCRC16(( char *)&m_IntervalRoll[0],26);
m_IntervalRoll[26]=CRCchecksum&0x00FF;
m_IntervalRoll[27]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_IntervalRoll[0],29);
wait();
//区间英文
m_Com2.Write((unsigned char*)&m_ucIntervalMasterEn[0],m_iIntervalNumEn);
wait();
//全列交替
m_EDIDInit[16]=0x18; //交替
m_EDIDInit[17]=1; //车外
m_EDIDInit[18]=2; //区间中文
m_EDIDInit[19]=0x10;
m_EDIDInit[20]=0x27;
m_EDIDInit[21]=0x00;
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(0.2);
/*
KillTimer(5);
CString temp;
temp.Format("%x,%x,%d",m_EDInit[23],m_EDInit[24],m_iIntervalNumCh);
MessageBox(temp);
*/
// KillTimer(5);
}
/*##########################################
车内显示发送函数
###############################################333*/
void CPROJECTPMUDlg::IDSend()
{
KillTimer(6);
int CRCchecksum;
//清空外屏
ClearID();
//初始化############################
//全列车内中文初始化
m_EDIDInit[16]=0x13; //初始化
m_EDIDInit[17]=2; //车内
m_EDIDInit[18]=0; //中文
m_EDIDInit[19]=0x90;
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]=2; //车内
m_EDIDInit[18]=3; //英文
m_EDIDInit[19]=0x90;
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_IntervalRoll[17]=2; //车内
m_IntervalRoll[18]=0; //中文
m_IntervalRoll[25]=0x0B; //滚屏速度
CRCchecksum=pFunCRC16(( char *)&m_IntervalRoll[0],26);
m_IntervalRoll[26]=CRCchecksum&0x00FF;
m_IntervalRoll[27]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_IntervalRoll[0],29);
wait();
//全列英文滚动
m_IntervalRoll[17]=2; //车内
m_IntervalRoll[18]=3; //英文
m_IntervalRoll[25]=0x04; //滚屏速度
CRCchecksum=pFunCRC16(( char *)&m_IntervalRoll[0],26);
m_IntervalRoll[26]=CRCchecksum&0x00FF;
m_IntervalRoll[27]=(CRCchecksum&0xFF00)>>8;
m_Com2.Write((unsigned char*)&m_IntervalRoll[0],29);
wait();
//全列交替
m_EDIDInit[16]=0x18; //交替
m_EDIDInit[17]=2; //车内
m_EDIDInit[18]=2;
m_EDIDInit[19]=0x20;
m_EDIDInit[20]=0x4E;
m_EDIDInit[21]=0x00;
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_Com2.Write((unsigned char*)&m_ucIDMasterCh[0],m_iIDNumCh);
wait();
wait();
wait();
//车内英文
m_Com2.Write((unsigned char*)&m_ucIDMasterEn[0],m_iIDNumEn);
wait();
}
void CPROJECTPMUDlg::ReportNextStation()
{
CString strSql,sTemp1,sTemp2;
int i,n;
CAdoRecordSet pRS0;
unsigned char ucOriginalStationQ,ucOriginalStationW;
if (m_pConnection.ConnectAccess(mMDB_Path,"sri"))
{
//
pRS0.SetAdoConnection(&m_pConnection);
strSql="SELECT StationNameEn,StationNameCh FROM StationInfo ";
if (b_IsChinese)
strSql+="where StationNameCh='";
else
strSql+="where StationNameEn='";
strSql+=m_nextstation;
strSql+="' ";
pRS0.Open(strSql,adCmdText);
if(!pRS0.IsEOF())
{
pRS0.GetCollect("StationNameCh",sTemp1);
pRS0.GetCollect("StationNameEn",sTemp2);
sTemp1.TrimRight();
sTemp2.TrimRight();
}
else
{
}
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+=sTemp1;
////中文赋值
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
int 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("The next station is");
strTemp+=sTemp2;
////车内英文赋值
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,1000,NULL);
}
void CPROJECTPMUDlg::ChangeNextStation()
{
int iCount=((CComboBox*)GetDlgItem(IDC_COMBO_NEXTSTATION))->GetCount();//取得目前已经有的行数
int n=((CComboBox*)GetDlgItem(IDC_COMBO_NEXTSTATION))->GetCurSel();
if(iCount > n+1)
{
((CComboBox*)GetDlgItem(IDC_COMBO_NEXTSTATION))->GetLBText(n+1,m_nextstation);
((CComboBox*)GetDlgItem(IDC_COMBO_NEXTSTATION))->SetCurSel(n+1);
SetDlgItemText(IDC_STATIC_NSTATION_TEXT, m_nextstation);
NextStationInit();
}
}
void CPROJECTPMUDlg::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);
m_dNextJd = atof(sTemp1);
m_dNextWd = atof(sTemp2);
}
else
{
SetDlgItemText(IDC_STATIC_NSTATIONJD_TEXT, "");
SetDlgItemText(IDC_STATIC_NSTATIONWD_TEXT, "");
}
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();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -