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

📄 daqthread.c

📁 这是我编写的深圳地铁S335型司机控制器的检测程序
💻 C
📖 第 1 页 / 共 3 页
字号:
       && (pData->usL21 == 1) && (pData->usL22 == 0) && (pData->usL23 == 1) && (pData->usL24 == 1)
       && (pData->usL25 == 0))
   {
      g_SystemData.ptMeasureData.usPrimaryPosition = 3;
      g_SystemData.ptMeasureData.usSecondryPosition = 9;
      g_SystemData.ptMeasureData.ptPosition [8].usChecked = 1;
   }

   if (   (pData->usL01 == 0) && (pData->usL02 == 1) && (pData->usL04 == 0)
       && (pData->usL05 == 0) && (pData->usL06 == 1) && (pData->usL07 == 0) && (pData->usL08 == 0)
       && (pData->usL09 == 1) && (pData->usL10 == 0) && (pData->usL11 == 0) && (pData->usL12 == 0)
       && (pData->usL13 == 0) && (pData->usL14 == 1) && (pData->usL15 == 1) && (pData->usL16 == 0)
       && (pData->usL17 == 1) && (pData->usL18 == 0) && (pData->usL19 == 1) && (pData->usL20 == 1)
       && (pData->usL21 == 1) && (pData->usL22 == 1) && (pData->usL23 == 0) && (pData->usL24 == 1)
       && (pData->usL25 == 0))
   {
      g_SystemData.ptMeasureData.usPrimaryPosition = 3;
      g_SystemData.ptMeasureData.usSecondryPosition = 10;
      g_SystemData.ptMeasureData.ptPosition [9].usChecked = 1;
   }

   if (   (pData->usL01 == 1) && (pData->usL02 == 0) && (pData->usL04 == 0)
       && (pData->usL05 == 0) && (pData->usL06 == 1) && (pData->usL07 == 0) && (pData->usL08 == 0)
       && (pData->usL09 == 1) && (pData->usL10 == 0) && (pData->usL11 == 0) && (pData->usL12 == 0)
       && (pData->usL13 == 0) && (pData->usL14 == 1) && (pData->usL15 == 1) && (pData->usL16 == 0)
       && (pData->usL17 == 1) && (pData->usL18 == 0) && (pData->usL19 == 1) && (pData->usL20 == 1)
       && (pData->usL21 == 1) && (pData->usL22 == 1) && (pData->usL23 == 0) && (pData->usL24 == 1)
       && (pData->usL25 == 0))
   {
      g_SystemData.ptMeasureData.usPrimaryPosition = 3;
      g_SystemData.ptMeasureData.usSecondryPosition = 11;
      g_SystemData.ptMeasureData.ptPosition [10].usChecked = 1;
   }

   if (   (pData->usL01 == 1) && (pData->usL02 == 0) && (pData->usL04 == 0)
       && (pData->usL05 == 1) && (pData->usL06 == 0) && (pData->usL07 == 1) && (pData->usL08 == 0)
       && (pData->usL09 == 1) && (pData->usL10 == 0) && (pData->usL11 == 0) && (pData->usL12 == 0)
       && (pData->usL13 == 0) && (pData->usL14 == 1) && (pData->usL15 == 1) && (pData->usL16 == 0)
       && (pData->usL17 == 1) && (pData->usL18 == 0) && (pData->usL19 == 1) && (pData->usL20 == 1)
       && (pData->usL21 == 1) && (pData->usL22 == 1) && (pData->usL23 == 0) && (pData->usL24 == 1)
       && (pData->usL25 == 0))
   {
      g_SystemData.ptMeasureData.usPrimaryPosition = 3;
      g_SystemData.ptMeasureData.usSecondryPosition = 12;
      g_SystemData.ptMeasureData.ptPosition [11].usChecked = 1;
   }

   if (   (pData->usL01 == 1) && (pData->usL02 == 0) && (pData->usL04 == 0)
       && (pData->usL05 == 1) && (pData->usL06 == 0) && (pData->usL07 == 1) && (pData->usL08 == 0)
       && (pData->usL09 == 1) && (pData->usL10 == 0) && (pData->usL11 == 0) && (pData->usL12 == 0)
       && (pData->usL13 == 0) && (pData->usL14 == 1) && (pData->usL15 == 1) && (pData->usL16 == 0)
       && (pData->usL17 == 1) && (pData->usL18 == 0) && (pData->usL19 == 1) && (pData->usL20 == 1)
       && (pData->usL21 == 1) && (pData->usL22 == 1) && (pData->usL23 == 0) && (pData->usL24 == 0)
       && (pData->usL25 == 1))
   {
      g_SystemData.ptMeasureData.usPrimaryPosition = 3;
      g_SystemData.ptMeasureData.usSecondryPosition = 13;
      g_SystemData.ptMeasureData.ptPosition [12].usChecked = 1;
   }

   if (   (pData->usL01 == 1) && (pData->usL02 == 0) && (pData->usL04 == 0)
       && (pData->usL05 == 1) && (pData->usL06 == 0) && (pData->usL07 == 1) && (pData->usL08 == 1)
       && (pData->usL09 == 0) && (pData->usL10 == 1) && (pData->usL11 == 0) && (pData->usL12 == 0)
       && (pData->usL13 == 0) && (pData->usL14 == 1) && (pData->usL15 == 1) && (pData->usL16 == 0)
       && (pData->usL17 == 1) && (pData->usL18 == 0) && (pData->usL19 == 1) && (pData->usL20 == 1)
       && (pData->usL21 == 1) && (pData->usL22 == 1) && (pData->usL23 == 0) && (pData->usL24 == 1)
       && (pData->usL25 == 0))
   {
      g_SystemData.ptMeasureData.usPrimaryPosition = 3;
      g_SystemData.ptMeasureData.usSecondryPosition = 14;
      g_SystemData.ptMeasureData.ptPosition [13].usChecked = 1;
   }
   
   return;
}

//------------------------------------------------------------------------------------------------
//
void __stdcall DAQReadDIData(void)
{
   short          usState;
   LPT_DAQCard    pCard;
   
   pCard = &g_PCI1754;
   
   if (pCard->hDevice == NULL)
      return;
   
   if (ADCards_DIBit (pCard, DICH_L01, &usState) == 0)
      g_SystemData.ptDAQData.usL01 = usState;
   if (ADCards_DIBit (pCard, DICH_L02, &usState) == 0)
      g_SystemData.ptDAQData.usL02 = usState;
   if (ADCards_DIBit (pCard, DICH_L03, &usState) == 0)
      g_SystemData.ptDAQData.usL03 = usState;
   if (ADCards_DIBit (pCard, DICH_L04, &usState) == 0)
      g_SystemData.ptDAQData.usL04 = usState;
   if (ADCards_DIBit (pCard, DICH_L05, &usState) == 0)
      g_SystemData.ptDAQData.usL05 = usState;
   if (ADCards_DIBit (pCard, DICH_L06, &usState) == 0)
      g_SystemData.ptDAQData.usL06 = usState;
   if (ADCards_DIBit (pCard, DICH_L07, &usState) == 0)
      g_SystemData.ptDAQData.usL07 = usState;
   if (ADCards_DIBit (pCard, DICH_L08, &usState) == 0)
      g_SystemData.ptDAQData.usL08 = usState;
      
   if (ADCards_DIBit (pCard, DICH_L09, &usState) == 0)
      g_SystemData.ptDAQData.usL09 = usState;
   if (ADCards_DIBit (pCard, DICH_L10, &usState) == 0)
      g_SystemData.ptDAQData.usL10 = usState;
   if (ADCards_DIBit (pCard, DICH_L11, &usState) == 0)
      g_SystemData.ptDAQData.usL11 = usState;
   if (ADCards_DIBit (pCard, DICH_L12, &usState) == 0)
      g_SystemData.ptDAQData.usL12 = usState;
   if (ADCards_DIBit (pCard, DICH_L13, &usState) == 0)
      g_SystemData.ptDAQData.usL13 = usState;
   if (ADCards_DIBit (pCard, DICH_L14, &usState) == 0)
      g_SystemData.ptDAQData.usL14 = usState;
   if (ADCards_DIBit (pCard, DICH_L15, &usState) == 0)
      g_SystemData.ptDAQData.usL15 = usState;
   if (ADCards_DIBit (pCard, DICH_L16, &usState) == 0)
      g_SystemData.ptDAQData.usL16 = usState;
      
   if (ADCards_DIBit (pCard, DICH_L17, &usState) == 0)
      g_SystemData.ptDAQData.usL17 = usState;
   if (ADCards_DIBit (pCard, DICH_L18, &usState) == 0)
      g_SystemData.ptDAQData.usL18 = usState;
   if (ADCards_DIBit (pCard, DICH_L19, &usState) == 0)
      g_SystemData.ptDAQData.usL19 = usState;
   if (ADCards_DIBit (pCard, DICH_L20, &usState) == 0)
      g_SystemData.ptDAQData.usL20 = usState;
   if (ADCards_DIBit (pCard, DICH_L21, &usState) == 0)
      g_SystemData.ptDAQData.usL21 = usState;
   if (ADCards_DIBit (pCard, DICH_L22, &usState) == 0)
      g_SystemData.ptDAQData.usL22 = usState;
   if (ADCards_DIBit (pCard, DICH_L23, &usState) == 0)
      g_SystemData.ptDAQData.usL23 = usState;
   if (ADCards_DIBit (pCard, DICH_L24, &usState) == 0)
      g_SystemData.ptDAQData.usL24 = usState;
      
   if (ADCards_DIBit (pCard, DICH_L25, &usState) == 0)
      g_SystemData.ptDAQData.usL25 = usState;
   
   if (ADCards_DIBit (pCard, DICH_1A, &usState) == 0)
      g_SystemData.ptDAQData.us1A = usState;
   if (ADCards_DIBit (pCard, DICH_15V, &usState) == 0)
      g_SystemData.ptDAQData.us15V = usState;
   if (ADCards_DIBit (pCard, DICH_MANUAL, &usState) == 0)
      g_SystemData.ptDAQData.usManual = usState;
   if (ADCards_DIBit (pCard, DICH_AUTO, &usState) == 0)
      g_SystemData.ptDAQData.usAuto = usState;
   
   return;
}

//------------------------------------------------------------------------------------------------
//
void __stdcall DAQReadResisterLoop(int ulID, int ulIndex, short usChannel)
{
   float    fData;
   if (g_SystemData.ptMeasureData.ptResister [ulIndex].usChecked)
      return;
   
   SetCtrlVal (plMain, PLMAIN_LED_CHECK, 1);
   
   SetCtrlAttribute (plMain, ulID, ATTR_LABEL_COLOR, MakeColor (255, 0, 0));
   
   ADCards_DOBit (&g_PCI1752, usChannel, 1);
   
   DAQDelay (500);
   
   g_SystemData.ptMeasureData.ptResister [ulIndex].usChecked = 1;
   
   DAQFAIReadResister (&fData);
   fData -= 300.0;
   if (fData < 0.0)
      fData = 0.0;
   g_SystemData.ptMeasureData.ptResister [ulIndex].fResister = fData;
   
   ADCards_DOBit (&g_PCI1752, usChannel, 0);
   SetCtrlAttribute (plMain, ulID, ATTR_LABEL_COLOR, MakeColor (0, 0, 0));
   
   SetCtrlVal (plMain, ulID, g_SystemData.ptMeasureData.ptResister [ulIndex].fResister);
   
}

//------------------------------------------------------------------------------------------------
//
void __stdcall DAQReadResister(void)
{
   if (g_PCI1752.hDevice == NULL)
      return;
   
   if ((g_SystemData.ptDAQData.usAuto == 0)
      || (g_SystemData.ptDAQData.usManual == 1)
      || (g_SystemData.ptDAQData.us1A == 0)
      || (g_SystemData.ptDAQData.us15V == 0))
      return;
      
   if (g_SystemData.usRuning != 1)
      return;
   
   if (g_SystemData.ptMeasureData.usSecondryPosition <= 0)
      return;
   
   if (g_SystemData.ptDAQData.usL01 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L01, 0, DOCH_L01);
   if (g_SystemData.ptDAQData.usL02 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L02, 1, DOCH_L02);
   if (g_SystemData.ptDAQData.usL03 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L03, 2, DOCH_L03);
   if (g_SystemData.ptDAQData.usL04 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L04, 3, DOCH_L04);
   if (g_SystemData.ptDAQData.usL05 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L05, 4, DOCH_L05);
   if (g_SystemData.ptDAQData.usL06 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L06, 5, DOCH_L06);
   if (g_SystemData.ptDAQData.usL07 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L07, 6, DOCH_L07);
   if (g_SystemData.ptDAQData.usL08 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L08, 7, DOCH_L08);
   
   if (g_SystemData.ptDAQData.usL09 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L09, 8, DOCH_L09);
   if (g_SystemData.ptDAQData.usL10 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L10, 9, DOCH_L10);
   if (g_SystemData.ptDAQData.usL11 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L11, 10, DOCH_L11);
   if (g_SystemData.ptDAQData.usL12 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L12, 11, DOCH_L12);
   if (g_SystemData.ptDAQData.usL13 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L13, 12, DOCH_L13);
   if (g_SystemData.ptDAQData.usL14 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L14, 13, DOCH_L14);
   if (g_SystemData.ptDAQData.usL15 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L15, 14, DOCH_L15);
   if (g_SystemData.ptDAQData.usL16 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L16, 15, DOCH_L16);
   
   if (g_SystemData.ptDAQData.usL17 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L17, 16, DOCH_L17);
   if (g_SystemData.ptDAQData.usL18 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L18, 17, DOCH_L18);
   if (g_SystemData.ptDAQData.usL19 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L19, 18, DOCH_L19);
   if (g_SystemData.ptDAQData.usL20 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L20, 19, DOCH_L20);
   if (g_SystemData.ptDAQData.usL21 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L21, 20, DOCH_L21);
   if (g_SystemData.ptDAQData.usL22 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L22, 21, DOCH_L22);
   if (g_SystemData.ptDAQData.usL23 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L23, 22, DOCH_L23);
   if (g_SystemData.ptDAQData.usL24 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L24, 23, DOCH_L24);
   
   if (g_SystemData.ptDAQData.usL25 == 1)
      DAQReadResisterLoop (PLMAIN_RESISTER_L25, 24, DOCH_L25);
   
   DAQDelay (500);
   g_SystemData.ptMeasureData.ptPosition [g_SystemData.ptMeasureData.usSecondryPosition - 1].fVoltage = g_SystemData.ptDAQData.fVoltage;

   g_SystemData.usCheckResister = 0;
   
   SetCtrlVal (plMain, PLMAIN_LED_CHECK, 0);
}

//------------------------------------------------------------------------------------------------
//
void WINAPI DAQCheckMeasure( void )
{
   DWORD dwTicks;
   DAQFAIReadAIData ();
   DAQReadDIData ();
   
   DAQCheckPosition ();
   
   DAQReadResister ();
   dwTicks = GetTickCount ();
   if ((dwTicks - g_SystemData.dwDAQTicks) > 200)
   {
      g_SystemData.dwDAQTicks = dwTicks;
      DAQDataDisplay();
   }
}

//------------------------------------------------------------------------------------------------
//
void WINAPI DAQDelay(DWORD dwDelay)
{
   DWORD dwTicks;
   dwTicks = GetTickCount ();
   while ((GetTickCount () - dwTicks) < dwDelay)
   {
//      DAQCheckMeasure ();
      Sleep( 10 );
   }
}

//------------------------------------------------------------------------------------------------
//
DWORD WINAPI DAQThreadRoutine( DWORD arg )
{
   while ( g_SystemData.usThreadLoop )
   {
      DAQCheckMeasure ();
      Sleep (10);
   }
   return 0;
}

//------------------------------------------------------------------------------------------------
//
int __stdcall DAQCreateThread( void )
{
   // Enable thread loop
   g_SystemData.usThreadLoop = TRUE;
   
   // Set DAQ ticks used by DAQCheckMeasure
   g_SystemData.dwDAQTicks = GetTickCount( );
   
   // Crate Device Test thread
   g_SystemData.uhDAQThread = CreateThread( NULL, 0, ( LPTHREAD_START_ROUTINE )&DAQThreadRoutine, NULL, 0, NULL );
   if ( g_SystemData.uhDAQThread == NULL )
      return FALSE;

   return TRUE;
}

//------------------------------------------------------------------------------------------------
//
int __stdcall DAQTerminateThread( void )
{
   // Disable thread loop
   g_SystemData.usThreadLoop = FALSE;
   
   // Terminate the thread
   WaitForSingleObject( g_SystemData.uhDAQThread, 5000 );
   CloseHandle (g_SystemData.uhDAQThread);
   g_SystemData.uhDAQThread = NULL;
   
   return TRUE;
}

//------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -