📄 drivercontroller.c
字号:
#include <cvirte.h>
#include <userint.h>
#include "DriverController.h"
#include "MyFile.h"
#include "ADCards.h"
#include <cviauto.h>
//------------------------------------------------------------------------------------------------
int plMain;
int plTrend;
int plTitle;
int plMenu;
int plLogo;
int plReport;
int plForce;
//------------------------------------------------------------------------------------------------
PT_DAQCard g_PCL818;
PT_DAQCard g_PCI1752;
PT_DAQCard g_PCI1754;
PT_SystemData g_SystemData;
//------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------
//
void __stdcall DisplayDate(void)
{
static char chData[32];
static SYSTEMTIME st;
GetLocalTime (&st);
sprintf (chData, "%04d/%02d/%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
SetCtrlVal (plTitle, PLTITLE_TM_DATE, chData);
}
//------------------------------------------------------------------------------------------------
//
int main (int argc, char *argv[])
{
long ulWidth, ulHeight;
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
CA_InitActiveXThreadStyleForCurrentThread (0, COINIT_MULTITHREADED);
if ((plMain = LoadPanel (0, "DriverController.uir", PLMAIN)) < 0)
return -1;
if ((plTrend = LoadPanel (0, "DriverController.uir", PLTREND)) < 0)
return -1;
if ((plTitle = LoadPanel (0, "DriverController.uir", PLTITLE)) < 0)
return -1;
if ((plMenu = LoadPanel (0, "DriverController.uir", PLMENU)) < 0)
return -1;
if ((plLogo = LoadPanel (0, "DriverController.uir", PLLOGO)) < 0)
return -1;
if ((plReport = LoadPanel (0, "DriverController.uir", PLREPORT)) < 0)
return -1;
if ((plForce = LoadPanel (0, "DriverController.uir", PLFORCE)) < 0)
return -1;
DisplayDate ();
memset (&g_SystemData, 0, sizeof (PT_SystemData));
ulWidth = GetSystemMetrics(SM_CXSCREEN);
ulHeight = GetSystemMetrics(SM_CYSCREEN);
g_SystemData.ulLeft = (ulWidth - 1100) / 2;
g_SystemData.ulTop = (ulHeight - 768) / 2;
g_SystemData.ptMeasureData.usPrimaryPosition = -1;
g_SystemData.ptMeasureData.usSecondryPosition = -1;
memset (&g_PCL818, 0, sizeof (PT_DAQCard));
g_PCL818.dwIndex = 2;
g_PCL818.usGainCode = 0;
g_SystemData.ufRatedResister = 300.0;
g_SystemData.usStart = FAI_ChannelStart;
g_SystemData.usNumber = FAI_ChannelNumber;
g_SystemData.ulPacerRate = FAI_PacerRate;
g_SystemData.ulBufferSize = FAI_ChannelNumber * FAI_PacerRate;
memset (&g_PCI1752, 0, sizeof (PT_DAQCard));
g_PCI1752.dwIndex = 0;
memset (&g_PCI1754, 0, sizeof (PT_DAQCard));
g_PCI1754.dwIndex = 1;
if (!ADCards_Open (&g_PCL818))
{
}
if (!ADCards_Open (&g_PCI1752))
{
}
if (!ADCards_Open (&g_PCI1754))
{
}
DAQFAIScanStart (&g_PCL818);
DAQCreateThread ();
SetPanelAttribute (plTitle, ATTR_LEFT, g_SystemData.ulLeft);
SetPanelAttribute (plTitle, ATTR_TOP, g_SystemData.ulTop);
SetPanelAttribute (plMain, ATTR_LEFT, g_SystemData.ulLeft);
SetPanelAttribute (plMain, ATTR_TOP, g_SystemData.ulTop + 60);
SetPanelAttribute (plTrend, ATTR_LEFT, g_SystemData.ulLeft);
SetPanelAttribute (plTrend, ATTR_TOP, g_SystemData.ulTop + 60);
SetPanelAttribute (plLogo, ATTR_LEFT, g_SystemData.ulLeft);
SetPanelAttribute (plLogo, ATTR_TOP, g_SystemData.ulTop + 60);
SetPanelAttribute (plReport, ATTR_LEFT, g_SystemData.ulLeft);
SetPanelAttribute (plReport, ATTR_TOP, g_SystemData.ulTop + 60);
SetPanelAttribute (plForce, ATTR_LEFT, g_SystemData.ulLeft);
SetPanelAttribute (plForce, ATTR_TOP, g_SystemData.ulTop + 60);
SetPanelAttribute (plMenu, ATTR_LEFT, g_SystemData.ulLeft);
SetPanelAttribute (plMenu, ATTR_TOP, g_SystemData.ulTop + 60 + 648);
DisplayPanel (plTitle);
DisplayPanel (plMenu);
DisplayPanel (plLogo);
RunUserInterface ();
DAQTerminateThread ();
DAQFAIScanStop (&g_PCL818);
DiscardPanel (plMain);
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK mainCallback (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_GOT_FOCUS:
break;
case EVENT_LOST_FOCUS:
break;
case EVENT_CLOSE:
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
SetCtrlAttribute (plMenu, PLMENU_QUIT, ATTR_DIMMED, 1);
if (MessageBox (NULL, "是否退出运行?", "提示", MB_YESNO | MB_ICONQUESTION | MB_TOPMOST) == IDYES)
{
QuitUserInterface (0);
ADCards_DOBit (&g_PCI1752, DOCH_1A, 0);
ADCards_DOBit (&g_PCI1752, DOCH_15V, 0);
break;
}
SetCtrlAttribute (plMenu, PLMENU_QUIT, ATTR_DIMMED, 0);
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK datetimeCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:
DisplayDate ();
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK poweronCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if ((g_SystemData.ptDAQData.usAuto == 0)
|| (g_SystemData.ptDAQData.usManual == 1))
break;
g_SystemData.ptDAQData.us1A = 1;
g_SystemData.ptDAQData.us15V = 1;
SetCtrlVal (plMain, PLMAIN_LED_1A, g_SystemData.ptDAQData.us1A);
SetCtrlVal (plMain, PLMAIN_LED_15V, g_SystemData.ptDAQData.us15V);
ADCards_DOBit (&g_PCI1752, DOCH_1A, 1);
ADCards_DOBit (&g_PCI1752, DOCH_15V, 1);
SetCtrlAttribute (plMain, PLMAIN_NEWCHECK, ATTR_DIMMED, 0);
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK poweroffCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
if ((g_SystemData.ptDAQData.usAuto == 0)
|| (g_SystemData.ptDAQData.usManual == 1))
break;
ADCards_DOBit (&g_PCI1752, DOCH_1A, 0);
ADCards_DOBit (&g_PCI1752, DOCH_15V, 0);
SetCtrlAttribute (plMain, PLMAIN_NEWCHECK, ATTR_DIMMED, 0);
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK clearCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
ReportSave ();
Sleep (500);
ReportClose ();
g_SystemData.usRuning = 0;
memset (&g_SystemData.ptMeasureData, 0, sizeof (PT_MeasureData));
SetCtrlAttribute (plMain, PLMAIN_NEWCHECK, ATTR_DIMMED, 0);
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
void __stdcall DisplayHistroyTrend(void)
{
long ulOffset;
float *pfDataBuffer;
ulOffset = 0;//g_SystemData.ulDisplayPointer;
pfDataBuffer = g_SystemData.ufDataBuffer;
pfDataBuffer = (float*)g_SystemData.ufDataBuffer;
// SetAxisScalingMode (plMain, PLMAIN_VOLTAGE, VAL_BOTTOM_XAXIS, VAL_MANUAL,
// fValue, fValue + FAI_PacerRate / 1000.0);
DeleteGraphPlot (plTrend, PLTREND_VOLTAGE, -1, VAL_IMMEDIATE_DRAW);
PlotWaveform (plTrend, PLTREND_VOLTAGE, pfDataBuffer, FAI_PacerRate * 20, VAL_FLOAT, 1.0, 0.0, 0, 1.0, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK stopCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
SetCtrlAttribute (plTrend, PLTREND_TRENDTIMER, ATTR_ENABLED, 0);
g_SystemData.usTrendRecord = 0;
g_SystemData.ulDisplayPointer = 0;
SetCtrlAttribute (plTrend, PLTREND_STOP, ATTR_DIMMED, 1);
SetCtrlAttribute (plTrend, PLTREND_RESUME, ATTR_DIMMED, 0);
DisplayHistroyTrend ();
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK resumeCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
memset (&g_SystemData.ufDataBuffer, 0, sizeof (g_SystemData.ufDataBuffer));
g_SystemData.ulSeconds = 0;
g_SystemData.usTrendRecord = 1;
SetCtrlAttribute (plTrend, PLTREND_STOP, ATTR_DIMMED, 0);
SetCtrlAttribute (plTrend, PLTREND_RESUME, ATTR_DIMMED, 1);
SetCtrlAttribute (plTrend, PLTREND_TRENDTIMER, ATTR_ENABLED, 1);
break;
}
return 0;
}
//------------------------------------------------------------------------------------------------
//
int CVICALLBACK printtrendCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
SetPrintAttribute (ATTR_PRINT_AREA_WIDTH,VAL_USE_ENTIRE_PAPER);
SetPrintAttribute (ATTR_PRINT_AREA_HEIGHT,VAL_USE_ENTIRE_PAPER);
PrintCtrl (plTrend, PLTREND_VOLTAGE, NULL, 1, 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -