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

📄 pmacu.h

📁 美国Delta Tau公司PMAC多轴运动控制卡的VC++示例程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/* pmacu.h
 *
 * 32-bit Motion Control Device Driver
 * Data structures and function entry-points for Pmac user-mode driver

HISTORY

*/

#ifndef _PMACU_H_
  #define _PMACU_H_

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif

//
// include needed headers
//
#ifndef __ATLBASE_H__
  #include <windows.h>
  #include <windowsx.h>
#endif
  #include <winsock2.h>
  #include "Include\mcstruct.h"
  #include "Include\common.h"
  #include "Include\mioctl.h"
  #include "Include\private.h"

#ifndef _PMACSERVER
//////////////////////////////////////////////////////////////////////////////
// This section is included for the Pcomm32.dll and old server
  #include "Include\dpr.h"
  #include "Include\intr.h"
  #include "Include\gather.h"

/****************************************************************************
 * information needed to locate/initialise hardware. Set by user
 * in ConfigDlgProc and written to registry to kernel driver.
 ****************************************************************************/
typedef struct _Config_Location 
{
  PMACDEVICETYPE PmacType; // 1 = DT_PMAC1, 2 = DT_PMAC2,3 = DT_TURBO
  DWORD Location;          // typedef enum {LT_UNKNOWN, LT_ISA, LT_SER, LT_ETH, LT_PCI, LT_USB, LT_LAST};
  DWORD PCBusType;         // ISA, PCI etc.
  DWORD DPRRotSize[MAX_ROTBUF_PMAC]; // 16 originally

  DWORD DPRVarAdr;

  DWORD  dwDPRRTimeout;
  DWORD  dwDPRBKTimeout;
  DWORD  dwDPRCharTimeout;
  DWORD  dwDPRFlushTimeout;
  DWORD  dwBUSFlushTimeout;
  DWORD  dwBUSCharTimeout;

  DWORD  dwSERPortNumber;
  DWORD  dwSERBaudrate;
  DWORD  dwSERParity;  // 0 = no, 1 = odd, 2 = even
  DWORD  dwSERFlushTimeout;
  DWORD  dwSERCharTimeout;
  DWORD  dwSERWriteMultiplyerTimeout;
  DWORD  dwSERWriteConstantTimeout;
  DWORD  dwSERReadMultiplyerTimeout;
  DWORD  dwSERReadConstantTimeout;
  DWORD  dwSERReadIntervalTimeout;

  DWORD  dwDPRAutoActive;
  DWORD  dwDPRRealtActive;
  DWORD  dwDRPBackgActive;
  DWORD  dwDPRRealtPeriod;
  DWORD  dwDRPBackgPeriod;
  DWORD  dwEnableInterrupts;

  DWORD  dwIPAddress;

  CHAR szNcTitle[256];
  CHAR szSourceProfile[_MAX_PATH];
  CHAR szToolProfile[_MAX_PATH];
  CHAR szCoordProfile[_MAX_PATH];
  DWORD MachineType;
  DWORD NoOfTools;
  DWORD NoOfBlocks;
  DWORD NoOfCoordSys;
  DWORD MetricDisplay;
  double LeastHandleInc;
  double MaxHandleInc;
  double LeastJogInc;
  CHAR szAxisMotorMap[15];
  CHAR szAxisMotorSel[15];
  CHAR szAxisDispMap[15];
  double MaxRapidOvrd;
  double MaxFeedOvrd;
  // Axis stuff
  DWORD IsSpindle;
  DWORD HasSlave;
  DWORD IsPhantom;
  DWORD Display;
  DWORD DisplaySlave;
  DWORD HomeMode;
  DWORD HomePrgNumber;
  DWORD Precision;
  DWORD AxisMetricDisplay;
  DWORD MetricUnits;
  DWORD ProbePrgNumber;
  CHAR szPulsePerUnit[15];
  CHAR szInPositionBand[15];
  CHAR szMaxRapid[15];
  CHAR szMaxFeed[15];
  CHAR szFatalFError[15];
  CHAR szWarnFError[15];
  CHAR szJogSpeedLow[15];
  CHAR szJogSpeedMedLow[15];
  CHAR szJogSpeedMed[15];
  CHAR szJogSpeedMedHigh[15];
  CHAR szJogSpeedHigh[15];
  CHAR szFormatInch[15];
  CHAR szFormatMM[15];
} CONFIG_LOCATION, *PCONFIG_LOCATION;


#else
//////////////////////////////////////////////////////////////////////////////
// This section is included for the new server

 /****************************************************************************
 * information needed to locate/initialise hardware. Set by user
 * in ConfigDlgProc and written to registry to kernel driver.
 ****************************************************************************/
typedef struct _Config_Location 
{
  PMACDEVICETYPE PmacType; // 1 = DT_PMAC1, 2 = DT_PMAC2,3 = DT_TURBO
  DWORD Location;          // typedef enum {LT_UNKNOWN, LT_ISA, LT_SER, LT_ETH, LT_PCI, LT_USB, LT_LAST};
  DWORD PCBusType;         // ISA, PCI etc.
  DWORD DPRRotSize[MAX_ROTBUF_PMAC]; // 16 originally

  DWORD DPRVarAdr;

  DWORD  dwDPRRTimeout;
  DWORD  dwDPRBKTimeout;
  DWORD  dwDPRCharTimeout;
  DWORD  dwDPRFlushTimeout;
  DWORD  dwBUSFlushTimeout;
  DWORD  dwBUSCharTimeout;

  DWORD  dwSERPortNumber;
  DWORD  dwSERBaudrate;
  DWORD  dwSERParity;  // 0 = no, 1 = odd, 2 = even
  DWORD  dwSERFlushTimeout;
  DWORD  dwSERCharTimeout;
  DWORD  dwSERWriteMultiplyerTimeout;
  DWORD  dwSERWriteConstantTimeout;
  DWORD  dwSERReadMultiplyerTimeout;
  DWORD  dwSERReadConstantTimeout;
  DWORD  dwSERReadIntervalTimeout;

  DWORD  dwDPRAutoActive;
  DWORD  dwDPRRealtActive;
  DWORD  dwDRPBackgActive;
  DWORD  dwDPRRealtPeriod;
  DWORD  dwDRPBackgPeriod;
  DWORD  dwEnableInterrupts;

  DWORD  dwIPAddress;

  CHAR szNcTitle[256];
  CHAR szSourceProfile[_MAX_PATH];
  CHAR szToolProfile[_MAX_PATH];
  CHAR szCoordProfile[_MAX_PATH];
  DWORD MachineType;
  DWORD NoOfTools;
  DWORD NoOfBlocks;
  DWORD NoOfCoordSys;
  DWORD MetricDisplay;
  double LeastHandleInc;
  double MaxHandleInc;
  double LeastJogInc;
  CHAR szAxisMotorMap[15];
  CHAR szAxisMotorSel[15];
  CHAR szAxisDispMap[15];
  double MaxRapidOvrd;
  double MaxFeedOvrd;
  // Axis stuff
  DWORD IsSpindle;
  DWORD HasSlave;
  DWORD IsPhantom;
  DWORD Display;
  DWORD DisplaySlave;
  DWORD HomeMode;
  DWORD HomePrgNumber;
  DWORD Precision;
  DWORD AxisMetricDisplay;
  DWORD MetricUnits;
  DWORD ProbePrgNumber;
  CHAR szPulsePerUnit[15];
  CHAR szInPositionBand[15];
  CHAR szMaxRapid[15];
  CHAR szMaxFeed[15];
  CHAR szFatalFError[15];
  CHAR szWarnFError[15];
  CHAR szJogSpeedLow[15];
  CHAR szJogSpeedMedLow[15];
  CHAR szJogSpeedMed[15];
  CHAR szJogSpeedMedHigh[15];
  CHAR szJogSpeedHigh[15];
  CHAR szFormatInch[15];
  CHAR szFormatMM[15];
} CONFIG_LOCATION, *PCONFIG_LOCATION;
  
  #include <intr.h>
  #include "pmac.h"

#endif  // _PMACSERVER

  #ifdef _CUI_
    #define _MAX_PATH MAX_PATHNAME_LEN
  #endif

  #define LINKLIST_FILE "PMAC_LINKLIST.INI"

  #ifdef __cplusplus
extern "C" {
  #endif

// forward declarations
typedef struct _USER_HANDLE USER_HANDLE, *PUSER_HANDLE;
typedef struct _GLOBAL_HANDLE GLOBAL_HANDLE, *PGLOBAL_HANDLE;


/////////////////////////////////////////////////////////////////////////////
// Process User Handle Sructure
/////////////////////////////////////////////////////////////////////////////
typedef struct _USER_HANDLE
{

  DWORD         dwSize;                         // Keep track of structure size
  DWORD         dwUser;                         // User No. for this device
  HANDLE        hDriver;                        // Handle to ring zero driver or COM
  HANDLE        hMutex;                         // Global mutex handle
  WSAEVENT      hPmacSockEvent;                 // Ethernet Event Object
  HANDLE        hEthMutex;
  CHAR          *szPmacData;                    // Buffered data on ethernet
  CHAR          *pData;                         // pointer to buffer next get line
  CHAR          *pDataStart;
  DWORD         dwPmacSockLastErr;

  // Command logging stuff
  BOOL       dCommandLogging;                   // Command Logging Enabled
  CHAR      tcComandLoggingFilename[MAX_PATH]; // Command Logging File Name
  UINT       uMaxCommandLoggingFileSize;        // Command Logging Max. file size
  HANDLE     hCommandLoggingFileHandle;         // Command Logging File Handle
  CHAR       languageDll[_MAX_PATH];            // Language translation DLL name

  // LT_COM - SERIAL
  BOOL          bDoChecksums;          // This process wants checksums
  char          csum;                  // Used to retain Command Sum for Checksummed comm

  // LT_ISA & LT_PCI - DPRAM
  ASCIIMODE     ascii_comm;            // current mode of ascii comm
  BOOL          bDpramAvailable;       // TRUE if DPRAM is available
  HANDLE        hDPRMutex;             // Global DPRAM serialized access mutex handle
  struct cpane  DPRCPanel;             // control panel           (ofs = 0x000,size = 36)
  struct cpane  DPRCPanelTurbo;        // ?? Turbo control panel  (ofs = 0x000,size = 36)

  struct backgvarbuf_status *bgv_status[MAX_VBGBUF_USERS ]; // Background variable data
  DWORD  DPRrotbuffer[16];                                  // DPR Binary Rotary Buffer Start

  // Gather stuff
  double *pGatherData[MAXGATHERS2 ];   // Pointers to gathered data
  double *pRTGatherData;               // Pointer to gathered data

  // Interrupt Stuff
  // inter-thread sync data
  UINT   ThreadId;
  HANDLE hThread;
  HANDLE hCompleteEvent;
  BOOL   bTerminateThread;

  // worker thread data
  MCCALLBACK Callback;                // interrupt callback function
  DWORD  WaitResult;
  INTRBUFFER Buffer;

⌨️ 快捷键说明

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