- 积分
- 17
- 帖子
- 2
- 主题
- 1
- 精华
- 0
- 最后登录
- 2019-7-4
- 在线时间
- 3 小时
新手上路
兴趣点(最多三项):
Unity引擎
军事仿真
VR互动软件
- 私信
|
发表时间 : 2019-6-27 11:22:27
|
浏览 : 762 评论 : 3
在使用GL Studio 3.2创建好仪表之后,在main函数修改代码,在本机用另一个程序使用UDP发送过来数据之后,有5秒左右的延迟,为什么会有这么大的延迟呢?
下面是main函数
int main(int argc,char *argv[])
{
try
{
glsCommandLine::Instance()->ReadCommandLine(argc,argv);
r44project = new R44projectClass("R44",1645,940);
r44project->CreateObjects();
//////////////////// User Code from section: "Main Initialization" ////////////
///////////////////////////////////////////////////////////////////////////////
r44project->SetRedraw();
//OutputParameter m_OutputParameter;
CNetCom *m_pNetSocket;
unsigned FDM_RECV_UDP_PORT,FDM_SEND_UDP_PORT,TIME_STEP;
FDM_RECV_UDP_PORT=6012;
FDM_SEND_UDP_PORT=6010;
TIME_STEP=10;
bool optValue=true;
if(!AfxSocketInit())
{
AfxMessageBox(_T("网络Socket初始化失败!"));
//return FALSE;
}
m_pNetSocket = new CNetCom();
m_pNetSocket->Create(FDM_SEND_UDP_PORT,SOCK_DGRAM);
m_pNetSocket->SetSockOpt(SO_BROADCAST,&optValue,sizeof(bool));
if(m_pNetSocket == NULL)
{
AfxMessageBox(_T("网络初始化失败"));
//return 0;
}
double R44data[9];
char RecvStr[NET_BUFFER_LENGTH];
CString str_from_IP=m_pNetSocket->m_Guest_IP;//得到对方IP地址以及端口号
int from_port=m_pNetSocket->m_Guest_Source_Port;//得到对方的端口号
do
{
//////////////////// User Code from section: "Main Loop" //////////////////////
///////////////////////////////////////////////////////////////////////////////
m_pNetSocket->m_NumRecv = m_pNetSocket->ReceiveFrom(&m_pNetSocket->m_Receive_Buf,sizeof(m_pNetSocket->m_Receive_Buf),m_pNetSocket->m_Guest_IP,m_pNetSocket->m_Guest_Source_Port);
if (m_pNetSocket->m_NumRecv==-1)
{
AfxMessageBox("no数据");
Sleep(20);
}
else
{
UINT rva=m_pNetSocket->m_NumRecv;//得到数据包大小
memcpy(RecvStr,m_pNetSocket->m_Receive_Buf,NET_BUFFER_LENGTH);//数据复制过来
//memcpy(&m_OutputParameter,RecvStr,sizeof(m_OutputParameter));
//赋值显示
/*R44data[0]=m_OutputParameter.VS;//升降速度 英尺/分
R44data[1]=m_OutputParameter.TTheta;//俯仰角
R44data[2]=m_OutputParameter.Gama;//坡度角
R44data[3]=m_OutputParameter.KIAS;//表速 海里/小时
R44data[4]=m_OutputParameter.EngineRpm;//发动机转速 %
R44data[5]=m_OutputParameter.RotateSpd;//旋翼转速 %
R44data[6]=m_OutputParameter.Altitude;//离标准海平面几何高度 英尺
R44data[7]=m_OutputParameter.Psai;//进气压力 英尺汞柱
R44data[8]=m_OutputParameter.ManifoldPressure;//航向角*/
R44data[0]=atoi(RecvStr);
//r44project->RecordCalculateStart();
r44project->UdpData(R44data);
//r44project->RecordCalculateEnd();
Sleep(10);
}
}
while(r44project->FrameAnimate());
// Delete the instance
delete r44project;
}
catch(DistiException e)
{
Error(e.what());
}
return 0;
}
|
|