/* 辅助函数-Log信息台-右键菜单-回调函数 */ void CVICALLBACK logBoxRightClickMenuCallback(int menuBarHandle, int menuItemID, void *callbackData, int panelHandle){ switch(menuItemID){ case 3: SYSTEMTIME localTime; char dirName[MAX_PATHNAME_LEN]; char filePath[MAX_PATHNAME_LEN]; char fileName[200]; fileName[0]='\0'; GetProjectDir(dirName); strcat(dirName, "\\Logs"); GetLocalTime(&localTime); sprintf(fileName, "Log,%04d-%d-%d,%d_%02d_%02d.txt", localTime.wYear, localTime.wMonth, localTime.wDay, localTime.wHour, localTime.wMinute, localTime.wSecond); MakePathname(dirName, fileName, filePath); FILE *fp = fopen(filePath, "w"); int len=0; GetCtrlAttribute(panelHdl, MainPanel_MainLogBox, ATTR_STRING_TEXT_LENGTH, &len); char tempLog[10000]; GetCtrlVal(panelHdl, MainPanel_MainLogBox, tempLog); fwrite(tempLog, sizeof(char), len, fp); fclose(fp); ResetTextBox(panelHdl, MainPanel_MainLogBox, "Logs have been saved!"); break; case 4: ResetTextBox(panelHdl, MainPanel_MainLogBox, ""); break; } }
int CVICALLBACK ConfigCMD (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: DimAction(1); WriteLog(); ResetTextBox (panelHandle, PANEL_TEXTBOX, ""); if (ReadConfigFile(BBUCOMMON_CONFIGCMD)) { if (0==InstallPopup(configHandle)) { SetPanelAttribute (configHandle, ATTR_TITLE, "CheckCMD"); SetCtrlAttribute (configHandle, CONFIG_BOX, ATTR_ENTER_IS_NEWLINE, 1); SetCtrlAttribute (configHandle, CONFIG_BOX, ATTR_TEXT_BGCOLOR, VAL_OFFWHITE); } } else { SetCtrlVal (panelHandle, PANEL_TEXTBOX, "Read data from cmd.txt error,please check it by manual!\r\n"); } DimAction(0); break; } return 0; }
static int ReadConfigFile( int item) { FILE *hFile; char pathName[MAX_PATHNAME_LEN]; char dirName[MAX_PATHNAME_LEN]; char buffer[300]; ResetTextBox (configHandle, CONFIG_BOX, ""); GetProjectDir (dirName); switch(item) { case MENUBAR_CONFIG_CONFIGIP: MakePathname (dirName, "bbuip.txt", pathName); break; case BBUCOMMON_CONFIGCMD: MakePathname (dirName, "command.txt", pathName); break; } if (hFile = fopen(pathName, "r")) { while (fgets(buffer, (int)sizeof(buffer), hFile)) { SetCtrlVal (configHandle, CONFIG_BOX, buffer); } } else { return 0; } if(hFile) { fclose(hFile); } return 1; }
static int WriteOupputBox(int flag) { FILE *hFile; char pathName[MAX_PATHNAME_LEN]; char dirName[MAX_PATHNAME_LEN]; char buffer[300]; ResetTextBox (outputHandle, OUTPUTVIEW_OUTPUTBOX, ""); GetProjectDir (dirName); if (0 == flag) // mean write output.txt to box { MakePathname (dirName, "output.txt", pathName); } if (1 == flag) // mean write help.txt to box { MakePathname (dirName, "help.txt", pathName); } if (hFile = fopen(pathName, "r")) { while (fgets(buffer, (int)sizeof(buffer), hFile)) { SetCtrlVal (outputHandle, OUTPUTVIEW_OUTPUTBOX, buffer); } } else { return 0; } if(hFile) { fclose(hFile); } return 1; }
/* 信息分析面板-Log清空-按钮 */ int CVICALLBACK PopLogInfoBtn (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: ResetTextBox(panel, PopupPanel_PopLogBox, ""); break; } return 0; }
////////////////////////////////////////////////////////////////////selfdefined function////////////////////////////////////// static int ExecutableProcess(char *cmd, char *checkpoint) { FILE *hFile; char buffer[300]; // long enough for single line of output from ipconfig char tempFileName[L_tmpnam]; char command[L_tmpnam + 25]; int hProc; int res=0; int checkflag = 0; tmpnam(tempFileName); sprintf(command, "cmd.exe /C %s > %s", cmd,tempFileName); // sprintf(command, "cmd.exe /C %s", cmd); // if (LaunchExecutableEx(command, LE_SHOWNORMAL, &hProc) >= 0) if (LaunchExecutableEx(command, LE_HIDE, &hProc) >= 0) { SetLed("running...please wait...",0); ProcessSystemEvents (); WriteLog(); ResetTextBox (panelHandle, PANEL_TEXTBOX, ""); while (!ExecutableHasTerminated(hProc)); { RetireExecutableHandle(hProc); } if (hFile = fopen(tempFileName, "r")) { while (fgets(buffer, (int)sizeof(buffer), hFile)) { SetCtrlVal (panelHandle, PANEL_TEXTBOX, buffer); if (!checkflag) { if(NULL != strstr (buffer, checkpoint)) { checkflag = 1; res = 1; } } } fclose(hFile); // DeleteFile(tempFileName); remove (tempFileName); } } return res; }
//////////////////////////////////////////manualbar callback function///////////////////////////////////////////////// void CVICALLBACK Config (int menuBar, int menuItem, void *callbackData, int panel) { DimAction(1); WriteLog(); ResetTextBox (panelHandle, PANEL_TEXTBOX, ""); switch (menuItem) { case MENUBAR_CONFIG_CONFIGIP: if (ReadConfigFile(MENUBAR_CONFIG_CONFIGIP)) { if (0==InstallPopup(configHandle)) { SetPanelAttribute (configHandle, ATTR_TITLE, "CheckBBUIP"); SetCtrlAttribute (configHandle, CONFIG_BOX, ATTR_ENTER_IS_NEWLINE, 1); SetCtrlAttribute (configHandle, CONFIG_BOX, ATTR_TEXT_BGCOLOR, VAL_OFFWHITE); } } else { SetCtrlVal (panelHandle, PANEL_TEXTBOX, "Read data from bbuip.txt error,please check it by manual!\r\n"); } break; case BBUCOMMON_CONFIGCMD: if (ReadConfigFile(BBUCOMMON_CONFIGCMD)) { if (0==InstallPopup(configHandle)) { SetPanelAttribute (configHandle, ATTR_TITLE, "CheckCMD"); SetCtrlAttribute (configHandle, CONFIG_BOX, ATTR_ENTER_IS_NEWLINE, 1); SetCtrlAttribute (configHandle, CONFIG_BOX, ATTR_TEXT_BGCOLOR, VAL_OFFWHITE); } } else { SetCtrlVal (panelHandle, PANEL_TEXTBOX, "Read data from cmd.txt error,please check it by manual!\r\n"); } } DimAction(0); }
int CVICALLBACK CheckUptime (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: char buffer[20000]; char pathName[MAX_PATHNAME_LEN]; char dirName[MAX_PATHNAME_LEN]; FILE *hFile; char *p = ""; int i=0; int lenth=0; char temp[20]; //char value[50]; int flag =0; int row = 0; int column = 0; int insertcolumn = 0; int confirmresult = 0; typedef struct { int x; int y; } Point; confirmresult = ConfirmPopup ("Check uptime","Do you want to check uptime now?"); if ((outputHandle = LoadPanel (0, "Remotely.uir", OUTPUTVIEW)) < 0) { SetCtrlVal (panelHandle, PANEL_TEXTBOX, "Load check uptime panel error,please try again!\r\n"); return -1; } SetPanelAttribute (outputHandle, ATTR_TITLE, "CheckUptimeRecord"); SetCtrlAttribute (outputHandle, OUTPUTVIEW_OUTPUTBOX, ATTR_VISIBLE, 0); SetCtrlAttribute (outputHandle, OUTPUTVIEW_TABLE, ATTR_VISIBLE, 1); GetProjectDir (dirName); MakePathname (dirName, "uptime.csv", pathName); WriteLog(); ResetTextBox (panelHandle, PANEL_TEXTBOX, ""); if (hFile = fopen(pathName, "r")) { while (fgets(buffer, (int)sizeof(buffer), hFile)) { row++; InsertTableRows (outputHandle, OUTPUTVIEW_TABLE, -1, 1, VAL_CELL_STRING); column = 0; p = buffer; flag = 0; do { column++; if (insertcolumn == 0) { InsertTableColumns (outputHandle, OUTPUTVIEW_TABLE, -1, 1, VAL_CELL_STRING); } lenth = FindPattern (p, 0, -1, ",", 0, 0); // strip "," if (lenth >=0) { memset(temp,0,20); for (i=0;i<lenth;i++) { temp[i] = *p; p++; } p++; SetTableCellVal (outputHandle, OUTPUTVIEW_TABLE, MakePoint(column, row), temp); } else { lenth = FindPattern (p, 0, -1, "\n", 0, 0); // strip "\n" if (lenth >=0) // if find "\n" write last string to last column { memset(temp,0,20); for (i=0;i<lenth;i++) { temp[i] = *p; p++; } SetTableCellVal (outputHandle, OUTPUTVIEW_TABLE, MakePoint(column, row), temp); flag = -1; insertcolumn = 1; } else // if not find "\n", write all to last column { SetTableCellVal (outputHandle, OUTPUTVIEW_TABLE, MakePoint(column, row), p); flag = -1; insertcolumn = 1; } } }while( flag != -1); SetTableColumnAttribute (outputHandle, OUTPUTVIEW_TABLE, -1, ATTR_COLUMN_WIDTH, 80); memset(buffer,0,20000); } fclose(hFile); } if (confirmresult) // if user select yes to check uptime install popup { InstallPopup(outputHandle); } else // if user select no, discard panel due to load it at beginning of this function { if (outputHandle) { DiscardPanel (outputHandle); } } break; } return 0; }