📄 testmain.cpp
字号:
mastercontrol->SetText("■");
zhunbeiwan->SetText("■");
}
void TestWindow::entrydatapage()
{
}
void TestWindow:: beginAVRhui() //与AVR通信 回握手信号0x0f
{
int sendlong=0;
char send[1]={0x0f};
if (FD_ISSET (fdCom1, &WriteFds))//串口2
{
while(1)
{
sendlong=write(fdCom1,send,1);
if(sendlong==1)
break;
}
}
}
void SystemRealTimeData:: AVRrcv_message(unsigned char *rcvString,int AVRreaLen)
{ int a=rcvString[0]^rcvString[1];
if((rcvString[0]==0xf0)&&(rcvString[1]==0x55)&&(a==rcvString[2]))
{
systemRealTimeData->AVRdisplay_message();
}
}
void SystemRealTimeData:: AVRdisplay_message()
{
systemRealTimeData->YuXingbuhuo->SetText("■■■■");
systemRealTimeData->YuXingGenZ->SetText("■");
systemRealTimeData->YuXingDuiZ->SetText("■");
systemRealTimeData->YuXingTongX->SetText("■");
systemRealTimeData->YuXingTuX->SetText("■");
systemRealTimeData->YuXingShuJ->SetText("■");
systemRealTimeData->YuXingDaiJ->SetText("■■■■");
}
mystring::mystring(int left, int top, int width, const ZafIChar *text,int maxLength):
ZafString(left, top, width, text, maxLength)
{
SetCoordinateType(ZAF_PIXEL);
}
/******************************MultiCast test End***************************************/
/************************multiProtocal test Begin***************************************/
/*******************************************************************************************
/* multiProtocal test window, construct function*/
/******************************************************************************************/
SystemRealTimeData::SystemRealTimeData(ZafIChar *name, ZafObjectPersistence &persist):ZafDialogWindow(name, persist)
{
longitude=DynamicPtrCast(GetObject(ZAF_ITEXT("longitude")),ZafString);
latitude=DynamicPtrCast(GetObject(ZAF_ITEXT("latitude")),ZafString);
pianhangjiao=DynamicPtrCast(GetObject(ZAF_ITEXT("pianhangjiao")),ZafString);
henggunjiao=DynamicPtrCast(GetObject(ZAF_ITEXT("henggunjiao")),ZafString);
pitchingAngle=DynamicPtrCast(GetObject(ZAF_ITEXT("pitchingAngle")),ZafString);
dongspeed=DynamicPtrCast(GetObject(ZAF_ITEXT("dongspeed")),ZafString);
height=DynamicPtrCast(GetObject(ZAF_ITEXT("height")),ZafString);
beispeed=DynamicPtrCast(GetObject(ZAF_ITEXT("beispeed")),ZafString);
tianspeed=DynamicPtrCast(GetObject(ZAF_ITEXT("tianspeed")),ZafString);
longitude->SetText("45");
latitude->SetText("45");
height->SetText("10");
pianhangjiao->SetText("30");
henggunjiao->SetText("30");
pitchingAngle->SetText("30");
dongspeed->SetText("100");
beispeed->SetText("100");
tianspeed->SetText("100");
Cufang=DynamicPtrCast(GetObject(ZAF_ITEXT("Cufang")),ZafString);
Cuyang=DynamicPtrCast(GetObject(ZAF_ITEXT("Cuyang")),ZafString);
Cuftuo=DynamicPtrCast(GetObject(ZAF_ITEXT("Cuftuo")),ZafString);
Cuytuo=DynamicPtrCast(GetObject(ZAF_ITEXT("Cuytuo")),ZafString);
Jftuo=DynamicPtrCast(GetObject(ZAF_ITEXT("Jftuo")),ZafString);
Jytuo=DynamicPtrCast(GetObject(ZAF_ITEXT("Jytuo")),ZafString);
Cufang->SetText("Cufang");
Cuyang->SetText("Cuyang");
Cuftuo->SetText("Cuftuo");
Cuytuo->SetText("Cuytuo");
Jftuo->SetText("Jftuo");
Jytuo->SetText("Jytuo");
YuXingbuhuo=DynamicPtrCast(GetObject(ZAF_ITEXT("YuXingbuhuo")),ZafString);
YuXingGenZ=DynamicPtrCast(GetObject(ZAF_ITEXT("YuXingGenZ")),ZafString);
YuXingDuiZ=DynamicPtrCast(GetObject(ZAF_ITEXT("YuXingDuiZ")),ZafString);
YuXingTongX=DynamicPtrCast(GetObject(ZAF_ITEXT("YuXingTongX")),ZafString);
YuXingTuX=DynamicPtrCast(GetObject(ZAF_ITEXT("YuXingTuX")),ZafString);
YuXingShuJ=DynamicPtrCast(GetObject(ZAF_ITEXT("YuXingShuJ")),ZafString);
YuXingDaiJ=DynamicPtrCast(GetObject(ZAF_ITEXT("YuXingDaiJ")),ZafString);
}
void TestWindow:: begin_send() //给APT发握手信号0X55
{
int sendlong=0;
char send[1]={0x55};
if (FD_ISSET (fdCom2, &WriteFds))//串口3
{
while(1)
{
sendlong=write(fdCom2,send,1);
if(sendlong==1)
break;
}
}
}
ZafEventType SystemRealTimeData::Event(const ZafEventStruct &event)//接收从窗口发出的消息;
{
ZafEventType ccode = event.type;
switch(ccode)
{
case ZHUANMESSAGE_SEND:
send_message(); //主控计算机向机载稳定系统传输信息
break;
default:
ccode = ZafWindow::Event(event);
}
return (ccode);
}
float SystemRealTimeData:: trans_int_float(int x,int y,float z) //整型转换浮点型
{ double dd;
float result;
dd=x*z;
result=(float)(dd/y);
return result;
}
int trans_float_int(float x,int y,int z) //浮点数转换整型子程
{
long ll;
int result;
ll=x*z;
result=(int)(ll/y);
return result;
}
void SystemRealTimeData:: send_message()
{
struct sendMessage messageCont1;
char CuSend[7];
/* Initialize the message content */
messageCont1.messageHead = 0x12; //第1字节: 信息头(0xcc)
messageCont1.messageCmd = 0x34; //第2字节: 命令字?????
messageCont1.driverAngleX = 0x5678; //第3~4字节: 驱动角度X
messageCont1.driverAngleY = 0x9abc; //第5~6字节: 驱动角度Y
messageCont1.crc = (messageCont1.messageCmd) ^ (messageCont1.driverAngleX) ^ (messageCont1.driverAngleY);
CuSend[0]=messageCont1.messageHead;
CuSend[1]=messageCont1.messageCmd;
CuSend[2]=messageCont1.driverAngleX&0xff;
CuSend[3]=(messageCont1.driverAngleX >>8)&0xff;
CuSend[4]=messageCont1.driverAngleY&0xff;
CuSend[5]=(messageCont1.driverAngleY>>8)&0xff;
CuSend[6]=CuSend[0]^CuSend[1]^CuSend[2]^CuSend[3]^CuSend[4]^CuSend[5];
if(((zhuantaifalong = write(fdCom1,CuSend,7))==7)>0)
{
if(zhuantaifalong==7)
printf("zhuan tai fa good!");
else
printf("zhuan tai fa wrong!");
}
}
void SystemRealTimeData:: rcv_message(unsigned char *rcvString,int readLen)
{
strcpy(message,rcvString);
systemRealTimeData->display_message();
}
void SystemRealTimeData:: display_message()
{
struct rcvMessage messageCont;/*将数据显示到粗精转台界面*/
char buffer[64];
int i1,i2,i3,i4,i5,i6;
i1=i2=i3=i4=i5=i6=0;
float j1,j2,j3,j4,j5,j6;
j1=j2=j3=j4=j5=j6=0.0;
unsigned char *p=message;
unsigned int *messagehead=(unsigned int *)p;//信息头
//GPS数据
double *jingdu=(double *)(p+2);//经度
double *weidu=(double *)(p+10);//纬度
float *pianHangjiao=(float *)(p+18);//偏航角
float *fuyangjiao=(float *)(p+22);//俯仰角
float *hengGunjiao=(float *)(p+26);//横滚角
float *gaodu=(float *)(p+30);//高度
float *dongsudu=(float *)(p+34);//东向速度
float *beisudu=(float *)(p+38);//北向速度
float *tiansudu=(float *)(p+42);//天向速度
messageCont.custate = message[46] ;//状态字(0x01-归零,0x03-扫描捕获,
//0x04-随动指向,0x06-稳定跟踪,0x05-手动)
messageCont.cufangwjiao = ( (message[47] << 8) | message[48]);//粗转台方位角度
messageCont.cufuyjiao = ( (message[49] << 8) | message[50]);//粗转台俯仰角角度
messageCont.cufangwtuoba = ( (message[51] << 8) | message[52]);//粗转台方位脱靶量
messageCont.cufuytuoba = ( (message[53] << 8) | message[54]);//粗转台俯仰脱靶量
messageCont.saomiaostate = message[55] ;//扫描捕获过程结束报告(1-扫描结束)
messageCont.jingstate = message[56] ;//状态字(0x95-稳定跟踪,0x85-不稳定跟踪)
messageCont.jingfangwtuoba = ( (message[57] << 8) | message[57]);//精转台方位脱靶量
messageCont.jingfuytuoba = ( (message[59] << 8) | message[60]);//精转台俯仰脱靶量
i1=(int)messageCont.cufangwjiao;
i2=(int)messageCont.cufuyjiao;
i3=(int)messageCont.cufangwtuoba;
i4=(int)messageCont.cufuytuoba;
i5=(int)messageCont.jingfangwtuoba;
i6=(int)messageCont.jingfuytuoba;
j1=SystemRealTimeData:: trans_int_float(i1,0x4000,90.0);
j2=SystemRealTimeData:: trans_int_float(i2,0x4000,90.0);
j3=SystemRealTimeData:: trans_int_float(i3,0x4000,90.0);
j4=SystemRealTimeData:: trans_int_float(i4,0x4000,90.0);
j5=SystemRealTimeData:: trans_int_float(i5,0x4000,90.0);
j6=SystemRealTimeData:: trans_int_float(i6,0x4000,90.0);
sprintf(buffer,"%12.8f\n",*jingdu);//经度
systemRealTimeData->longitude->SetText(buffer);
sprintf(buffer,"%12.7f\n",*weidu);//纬度
systemRealTimeData->latitude->SetText(buffer);
sprintf(buffer,"%8.3f\n",*pianHangjiao);//偏航角
systemRealTimeData->pianhangjiao->SetText(buffer);
sprintf(buffer,"%8.3f\n",*fuyangjiao);//俯仰角
systemRealTimeData->pitchingAngle->SetText(buffer);
sprintf(buffer,"%8.3f\n",*hengGunjiao);//横滚角
systemRealTimeData->henggunjiao->SetText(buffer);
sprintf(buffer,"%12.3f\n",*gaodu);//高度
systemRealTimeData->height->SetText(buffer);
sprintf(buffer,"%8.3f\n",*dongsudu);//东向速度
systemRealTimeData->dongspeed->SetText(buffer);
sprintf(buffer,"%8.3f\n",*beisudu);//北向速度
systemRealTimeData->beispeed->SetText(buffer);
sprintf(buffer,"%8.3f\n",*tiansudu);//天向速度
systemRealTimeData->tianspeed->SetText(buffer);
sprintf(buffer,"%f\n",j1);//粗转台方位角度
systemRealTimeData->Cufang->SetText(buffer);
sprintf(buffer,"%f\n",j2);//粗转台俯仰角角度
systemRealTimeData->Cuyang->SetText(buffer);
sprintf(buffer,"%f\n",j3);//粗转台方位脱靶量
systemRealTimeData->Cuftuo->SetText(buffer);
sprintf(buffer,"%f\n",j4);//粗转台俯仰脱靶量
systemRealTimeData->Cuytuo->SetText(buffer);
sprintf(buffer,"%f\n",j3);//精转台方位脱靶量
systemRealTimeData->Jftuo->SetText(buffer);
sprintf(buffer,"%f\n",j4);//精转台俯仰脱靶量
systemRealTimeData->Jytuo->SetText(buffer);
}
void SystemRealTimeData:: cudisplay_message()
{
}
void SystemRealTimeData:: jingdisplay_message()
{
if(message[54]==0x95)//精转台稳定跟踪
{
}
else
if(message[54]==0x85) //精转台不稳定跟踪
{
}
}
SystemRealTimeData::~SystemRealTimeData(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -