static inline Symbol* fkt_exec(const std::vector<Symbol*>& vecSyms, ParseInfo& info, RuntimeInfo &runinfo, SymbolTable* pSymTab) { t_string strExec; for(Symbol *pSym : vecSyms) if(pSym) { strExec += pSym->print(); strExec += T_STR" "; } bool bOk = 0; //G_COUT << "Executing " << strExec << std::endl; //int iRet = system(strExec.c_str()); std::string _strExec = WSTR_TO_STR(strExec); FILE *pPipe = (FILE*)tl::my_popen(_strExec.c_str(), "w"); // fflush(pPipe); if(pPipe) { bOk = 1; int iRet = tl::my_pclose(pPipe); if(iRet == -1) { bOk = 0; } else { int iExitCode = int(char(WEXITSTATUS(iRet))); //G_COUT << "Exit code: " << iExitCode << std::endl; bOk = (iExitCode==0); } } return new SymbolInt(bOk); }
/*=========================================================================== ===========================================================================*/ static void SamplePosDet_GetGPSInfo_Paint( CSamplePosDet *pMe, GetGPSInfo_PaintRegions rgn ) { struct _GetGPSInfo *pGetGPSInfo = SamplePosDet_GetScreenData( pMe ); if( rgn == GETGPSINFO_PAINT_ALL ) { IDISPLAY_ClearScreen( pMe->theApp.m_pIDisplay ); SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_LEFT, "GetGPSInfo" ); if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_ONE_SHOT ) { SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "One Shot" ); } else if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_TRACK_LOCAL ) { SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "Track L" ); } else if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_TRACK_NETWORK ) { SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "Track N" ); } else if( pGetGPSInfo->wMainMenuEntry == MAINMENU_ITEM_TRACK_AUTO ) { SamplePosDet_Printf( pMe, 0, 3, AEE_FONT_BOLD, IDF_ALIGN_RIGHT, "Track A" ); } } if( rgn == GETGPSINFO_PAINT_FIXCOUNT || rgn == GETGPSINFO_PAINT_ALL ) { SamplePosDet_Printf( pMe, 1, 4, AEE_FONT_NORMAL, IDF_ALIGN_LEFT, "Failed : %d", pGetGPSInfo->dwFail+pGetGPSInfo->dwTimeout ); SamplePosDet_Printf( pMe, 1, 4, AEE_FONT_NORMAL, IDF_ALIGN_RIGHT, "Timeout : %d", pGetGPSInfo->dwTimeout ); } if( rgn == GETGPSINFO_PAINT_FIXDATA || rgn == GETGPSINFO_PAINT_ALL ) { #define MAXTEXTLEN 22 AECHAR wcText[MAXTEXTLEN]; char latlonStr[MAXTEXTLEN]; SamplePosDet_Printf( pMe, 2, 4, AEE_FONT_NORMAL, IDF_ALIGN_LEFT, "Fixes : %d", pGetGPSInfo->dwFixNumber ); FLOATTOWSTR( pGetGPSInfo->theInfo.lat, wcText, MAXTEXTLEN * sizeof(AECHAR) ); WSTR_TO_STR( wcText, latlonStr, MAXTEXTLEN ); SamplePosDet_Printf( pMe, 3, 4, AEE_FONT_BOLD, IDF_ALIGN_CENTER|IDF_RECT_FILL, "%s d", latlonStr ); FLOATTOWSTR( pGetGPSInfo->theInfo.lon, wcText, MAXTEXTLEN * sizeof(AECHAR) ); WSTR_TO_STR( wcText, latlonStr, MAXTEXTLEN ); SamplePosDet_Printf( pMe, 4, 4, AEE_FONT_BOLD, IDF_ALIGN_CENTER|IDF_RECT_FILL, "%s d", latlonStr ); SamplePosDet_Printf( pMe, 5, 4, AEE_FONT_BOLD, IDF_ALIGN_RIGHT|IDF_RECT_FILL, "%d m", pGetGPSInfo->theInfo.height ); { double fv; fv = FASSIGN_INT( pGetGPSInfo->dwFixDuration ); if( pGetGPSInfo->dwFixNumber ) { fv = FDIV(fv, pGetGPSInfo->dwFixNumber); } FLOATTOWSTR( fv, wcText, MAXTEXTLEN * sizeof(AECHAR) ); WSTR_TO_STR( wcText, latlonStr, MAXTEXTLEN ); SamplePosDet_Printf( pMe, 6, 4, AEE_FONT_BOLD, IDF_ALIGN_RIGHT|IDF_RECT_FILL, "Avg %ss", latlonStr ); } } if( rgn == GETGPSINFO_PAINT_ERROR ) { SamplePosDet_Printf( pMe, 7, 4, AEE_FONT_BOLD, IDF_ALIGN_BOTTOM|IDF_ALIGN_CENTER|IDF_TEXT_INVERTED, "ABORTED 0x%x", pGetGPSInfo->theInfo.nErr ); } if( rgn == GETGPSINFO_PAINT_FIXANIM || rgn == GETGPSINFO_PAINT_ALL ) { SamplePosDet_Printf( pMe, 7, 4, AEE_FONT_NORMAL, IDF_ALIGN_BOTTOM|IDF_ALIGN_CENTER|IDF_RECT_FILL, ".....%d.....", pGetGPSInfo->wProgress ); } //if (FABS(pGetGPSInfo->theInfo.lat) > 0) { Coordinate c1, c2; double dis = 0; char szDis[64]; AECHAR wcharbuf[32]; //shanghai 31.1774276, 121.5272106 c1.lat = 31.1774276; c1.lon = 121.5272106; //beijing 39.911954, 116.377817 c2.lat = 39.911954; c2.lon = 116.377817; //shenzhen 22.543847, 113.912316 //c1.lat = 22.543847; //c1.lon = 113.912316; c1.lat = pGetGPSInfo->theInfo.lat; c1.lon = pGetGPSInfo->theInfo.lon; dis = Track_Calc_Distance(c1.lat, c1.lon, c2.lat, c2.lon); MEMSET(szDis,0,sizeof(szDis)); FLOATTOWSTR(dis, wcharbuf, 32); WSTRTOSTR(wcharbuf,szDis, 64); DBGPRINTF("Track_cbOrientInfo dis:%s", szDis); SamplePosDet_Printf( pMe, 7, 4, AEE_FONT_BOLD, IDF_ALIGN_LEFT|IDF_RECT_FILL, "%s m", szDis ); } { uint16 d1 = 0; uint8 d2 = 0; d1 = ((uint16)(pGetGPSInfo->theInfo.wAzimuth & (~0x3f)))>>6; d2 = (uint8)(pGetGPSInfo->theInfo.wAzimuth & 0x3f); SamplePosDet_Printf( pMe, 8, 4, AEE_FONT_BOLD, IDF_ALIGN_LEFT|IDF_RECT_FILL, "Head %d.%d", d1, d2 ); SamplePosDet_Printf( pMe, 9, 4, AEE_FONT_BOLD, IDF_ALIGN_LEFT|IDF_RECT_FILL, "Heading %d", pGetGPSInfo->theInfo.heading); } }