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

📄 gps_interface.h

📁 基于USB接口的GPS应用程序
💻 H
字号:
/* ************************************************************************
  Header of IoInterface class;
  IoInterface class visit WDM driver of USB interface board;
  Its duty is to collect measurement and accumulation data for 6 channel
   and send command to hardware which comes from GpsFunc's processing;

  Author : Yu Lu
           luyu1974@gmail.com
***************************************************************************/

//---------------------------------------------------------------------------
#ifndef GPS_INTERFACE_H
#define GPS_INTERFACE_H

#include <windows.h>
#include <stdio.h>
#include <initguid.h>
#include <winioctl.h>
#include <fstream.h>
#include <Setupapi.h>
#include <assert.h>

#include "usb100.h"
#include "Ioctls.h"

#include "sampthread.h"
#include "gbl_var.h"

DEFINE_GUID(GUID_INTERFACE_USBGPS, 0x7e5d68b2L, 0x68ee, 0x4e8d, 0x86, 0x20, 0x1d, 0xa2, 0x92, 0x04, 0xab, 0x3f);
//---------------------------------------------------------------------------

class IoInterface {
   private:
        ofstream infofile;
        char completeDeviceName[256];
        bool handleOpened;
        HANDLE gpsHandle;


        unsigned char ping_pong_flag;    // indicate which buffer is available
        gp2021_regs gp2021regs[2];       // two buffer for ping-pong buffering
        unsigned char tracking_data[2][LENG_OF_ONE_FRAME];   // two buffer for ping-pong buffering
        
        SamplingThread  *s_thread;
        bool   thrdtermed;
        unsigned short count;   // for debugging use

        //The following 3 functions are used to open the usb handle
        HANDLE OpenOneDevice( HDEVINFO  HDDeviceInfo,
                              PSP_INTERFACE_DEVICE_DATA   DeviceInfoData,
	                      char *devName );

        HANDLE OpenUsbDevice( LPGUID pGuid, char *outNameBuf);
        HANDLE OpenHandle();

  public:
        IoInterface();
        ~IoInterface();
        int InitProc();
        void PrintDbgInfo(char*);
        void CreatSampleThrd();
        void ThrdTerminate();
        bool NavThrdIsTermed();
        void SetThrdStatus(bool);
        bool IsHandleOpened();


        void clear_all_reg(unsigned char bufferflag);

        bool read_usbn9603_reg(const unsigned char addr,
                                     unsigned char *out);

        bool read_usbn9603_allreg( unsigned char *out);

        bool read_gp2021_reg(const unsigned  char addr,
                                   unsigned int *out);

        bool write_gp2021_reg(const unsigned char addr,
                              const unsigned int in);

        bool read_gp2021_all(unsigned int *out);

        bool write_gp2021_all(unsigned char *in,
                              unsigned int  size);
        bool rd_wr_gp2021_all(char bufferflag,bool needreturn, unsigned char *out);
        bool control_gp2021( char flag);
        bool WriteReadGP2021(unsigned char pp_flag);

        // copy gps data to des
        void CopyData(unsigned char *des);
        // get control data from src , stored in buffer indicated by bufferflag
        void GetCntlData(char bufferflag, unsigned char *src);

        void set_pp_flag( char PPflag);
        unsigned char get_pp_flag(void);
        unsigned char get_free_pp_flag(void);
        unsigned char toggle_pp_flag(void);
};

#endif
 

⌨️ 快捷键说明

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