⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drivercontroller.c

📁 这是我编写的深圳地铁S335型司机控制器的检测程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -