tao_z
2022-05-16 7b93ce7d3c07dc8d60dacbd4ab76651882f4d92b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
#ifndef CONTROLCAN_H
#define CONTROLCAN_H
 
//½Ó¿Ú¿¨ÀàÐͶ¨Òå
#define VCI_PCI5121         1
#define VCI_PCI9810         2
#define VCI_USBCAN1         3
#define VCI_USBCAN2         4
#define VCI_USBCAN2A        4
#define VCI_PCI9820         5
#define VCI_CAN232          6
#define VCI_PCI5110         7
#define VCI_CANLITE         8
#define VCI_ISA9620         9
#define VCI_ISA5420         10
#define VCI_PC104CAN        11
#define VCI_CANETUDP        12
#define VCI_CANETE          12
#define VCI_DNP9810         13
#define VCI_PCI9840         14
#define VCI_PC104CAN2       15
#define VCI_PCI9820I        16
#define VCI_CANETTCP        17
#define VCI_PEC9920         18
#define VCI_PCIE_9220       18
#define VCI_PCI5010U        19
#define VCI_USBCAN_E_U      20
#define VCI_USBCAN_2E_U     21
#define VCI_PCI5020U        22
#define VCI_EG20T_CAN       23
#define VCI_PCIE9221        24
#define VCI_WIFICAN_TCP     25
#define VCI_WIFICAN_UDP     26
#define VCI_PCIe9120        27
#define VCI_PCIe9110        28
#define VCI_PCIe9140        29
#define VCI_USBCAN_4E_U     31
#define VCI_CANDTU_200UR    32
#define VCI_CANDTU_MINI     33
#define VCI_USBCAN_8E_U     34
#define VCI_CANREPLAY       35
#define VCI_CANDTU_NET      36
#define VCI_CANDTU_100UR    37
 
//CAN´íÎóÂë
#define ERR_CAN_OVERFLOW            0x0001  //CAN¿ØÖÆÆ÷ÄÚ²¿FIFOÒç³ö
#define ERR_CAN_ERRALARM            0x0002  //CAN¿ØÖÆÆ÷´íÎ󱨾¯
#define ERR_CAN_PASSIVE             0x0004  //CAN¿ØÖÆÆ÷Ïû¼«´íÎó
#define ERR_CAN_LOSE                0x0008  //CAN¿ØÖÆÆ÷ÖٲöªÊ§
#define ERR_CAN_BUSERR              0x0010  //CAN¿ØÖÆÆ÷×ÜÏß´íÎó
#define ERR_CAN_BUSOFF              0x0020  //×ÜÏ߹رմíÎó
#define ERR_CAN_BUFFER_OVERFLOW     0x0040  //CAN¿ØÖÆÆ÷ÄÚ²¿BUFFERÒç³ö
//ͨÓôíÎóÂë
#define ERR_DEVICEOPENED            0x0100  //É豸ÒѾ­´ò¿ª
#define ERR_DEVICEOPEN              0x0200  //´ò¿ªÉ豸´íÎó
#define ERR_DEVICENOTOPEN           0x0400  //É豸ûÓдò¿ª
#define ERR_BUFFEROVERFLOW          0x0800  //»º³åÇøÒç³ö
#define ERR_DEVICENOTEXIST          0x1000  //´ËÉ豸²»´æÔÚ
#define ERR_LOADKERNELDLL           0x2000  //×°ÔØ¶¯Ì¬¿âʧ°Ü
#define ERR_CMDFAILED               0x4000  //Ö´ÐÐÃüÁîʧ°Ü´íÎóÂë
#define ERR_BUFFERCREATE            0x8000  //ÄÚ´æ²»×ã
 
//CANET´íÎóÂë
#define ERR_CANETE_PORTOPENED       0x00010000  //¶Ë¿ÚÒѾ­±»´ò¿ª
#define ERR_CANETE_INDEXUSED        0x00020000  //É豸Ë÷ÒýºÅÒѾ­±»Õ¼ÓÃ
#define ERR_REF_TYPE_ID             0x00030000  //SetReference»òGetReference´«µÝµÄRefType²»´æÔÚ
#define ERR_CREATE_SOCKET           0x00030002  //´´½¨Socketʧ°Ü
#define ERR_OPEN_CONNECT            0x00030003  //´ò¿ªSocketµÄÁ¬½Óʱʧ°Ü£¬¿ÉÄÜÉ豸Á¬½ÓÒѾ­´æÔÚ
#define ERR_NO_STARTUP              0x00030004  //É豸ûÆô¶¯
#define ERR_NO_CONNECTED            0x00030005  //É豸ÎÞÁ¬½Ó
#define ERR_SEND_PARTIAL            0x00030006  //Ö»·¢ËÍÁ˲¿·ÖµÄCANÖ¡
#define ERR_SEND_TOO_FAST           0x00030007  //Êý¾Ý·¢µÃÌ«¿ì£¬Socket»º³åÇøÂúÁË
 
//º¯Êýµ÷Ó÷µ»Ø×´Ì¬Öµ
#define STATUS_OK                   1
#define STATUS_ERR                  0
 
#define CMD_DESIP                   0
#define CMD_DESPORT                 1
#define CMD_CHGDESIPANDPORT         2
#define CMD_SRCPORT                 2
#define CMD_TCP_TYPE                4  //tcp ¹¤×÷·½Ê½£¬·þÎñÆ÷:1 »òÊǿͻ§¶Ë:0
#define TCP_CLIENT                  0
#define TCP_SERVER                  1
//·þÎñÆ÷·½Ê½ÏÂÓÐЧ
#define CMD_CLIENT_COUNT            5  //Á¬½ÓÉϵĿͻ§¶Ë¼ÆÊý
#define CMD_CLIENT                  6  //Á¬½ÓÉϵĿͻ§¶Ë
#define CMD_DISCONN_CLINET          7  //¶Ï¿ªÒ»¸öÁ¬½Ó
#define CMD_SET_RECONNECT_TIME      8  //ʹÄÜ×Ô¶¯ÖØÁ¬
//CANDTU_NETÖ§³ÖGPS
#define CMD_GET_GPS                 9
#define CMD_GET_GPS_NUM             10 //»ñÈ¡GPSÐÅÏ¢µÄÊýÄ¿
 
typedef unsigned long       DWORD, ULONG;
typedef int                 INT;
typedef void*                HANDLE;
typedef unsigned char       BYTE;
typedef unsigned short      USHORT;
typedef char                CHAR;
typedef unsigned int        UINT;
typedef unsigned char        UCHAR;
typedef unsigned short      UINT16;
typedef void*                PVOID;
 
typedef struct tagRemoteClient{
    int     iIndex;
    DWORD   port;
    HANDLE  hClient;
    char    szip[32];
}REMOTE_CLIENT;
 
typedef struct _tagChgDesIPAndPort
{
    char    szpwd[10];
    char    szdesip[20];
    int     desport;
    BYTE    blistenonly;
}CHGDESIPANDPORT;
 
//1.ZLGCANϵÁнӿڿ¨ÐÅÏ¢µÄÊý¾ÝÀàÐÍ¡£
typedef  struct  _VCI_BOARD_INFO{
    USHORT  hw_Version;
    USHORT  fw_Version;
    USHORT  dr_Version;
    USHORT  in_Version;
    USHORT  irq_Num;
    BYTE    can_Num;
    CHAR    str_Serial_Num[20];
    CHAR    str_hw_Type[40];
    USHORT  Reserved[4];
} VCI_BOARD_INFO,*PVCI_BOARD_INFO;
 
//2.¶¨ÒåCANÐÅÏ¢Ö¡µÄÊý¾ÝÀàÐÍ¡£
typedef  struct  _VCI_CAN_OBJ{
    UINT    ID;
    UINT    TimeStamp;
    BYTE    TimeFlag;
    BYTE    SendType;
    BYTE    RemoteFlag;//ÊÇ·ñÊÇÔ¶³ÌÖ¡
    BYTE    ExternFlag;//ÊÇ·ñÊÇÀ©Õ¹Ö¡
    BYTE    DataLen;
    BYTE    Data[8];
    BYTE    Reserved[3];    //Reserved[0] µÚ0λ±íÊ¾ÌØÊâµÄ¿ÕÐлòÕ߸ßÁÁÖ¡
}VCI_CAN_OBJ,*PVCI_CAN_OBJ;
 
//3.¶¨ÒåCAN¿ØÖÆÆ÷״̬µÄÊý¾ÝÀàÐÍ¡£
typedef struct _VCI_CAN_STATUS{
    UCHAR   ErrInterrupt;
    UCHAR   regMode;
    UCHAR   regStatus;
    UCHAR   regALCapture;
    UCHAR   regECCapture; 
    UCHAR   regEWLimit;
    UCHAR   regRECounter; 
    UCHAR   regTECounter;
    DWORD   Reserved;
}VCI_CAN_STATUS,*PVCI_CAN_STATUS;
 
//4.¶¨Òå´íÎóÐÅÏ¢µÄÊý¾ÝÀàÐÍ¡£
typedef struct _VCI_ERR_INFO{
    UINT    ErrCode;
    BYTE    Passive_ErrData[3];
    BYTE    ArLost_ErrData;
} VCI_ERR_INFO,*PVCI_ERR_INFO;
 
//5.¶¨Òå³õʼ»¯CANµÄÊý¾ÝÀàÐÍ
typedef struct _VCI_INIT_CONFIG{
    DWORD    AccCode;
    DWORD    AccMask;
    DWORD    Reserved;
    UCHAR    Filter;
    UCHAR    Timing0;
    UCHAR    Timing1;
    UCHAR    Mode;
}VCI_INIT_CONFIG,*PVCI_INIT_CONFIG;
 
///////// new add struct for filter /////////
typedef struct _VCI_FILTER_RECORD{
    DWORD   ExtFrame;   //ÊÇ·ñΪÀ©Õ¹Ö¡
    DWORD   Start;
    DWORD   End;
}VCI_FILTER_RECORD,*PVCI_FILTER_RECORD;
 
//¶¨Ê±×Ô¶¯·¢ËÍÖ¡½á¹¹
typedef struct _VCI_AUTO_SEND_OBJ{
    BYTE    Enable;     //ʹÄܱ¾Ìõ±¨ÎÄ 0:½ûÄÜ 1:ʹÄÜ
    BYTE    Index;      //±¨ÎıàºÅ     ×î´óÖ§³Ö32Ìõ±¨ÎÄ
    DWORD   Interval;   //¶¨Ê±·¢ËÍʱ¼ä 1msΪµ¥Î»
    VCI_CAN_OBJ obj;    //±¨ÎÄ
}VCI_AUTO_SEND_OBJ,*PVCI_AUTO_SEND_OBJ;
 
//ÉèÖÃָʾµÆ×´Ì¬½á¹¹
typedef struct _VCI_INDICATE_LIGHT{
    BYTE    Indicate;             //ָʾµÆ±àºÅ
    BYTE    AttribRedMode:2;      //Red LEDÃð/ÁÁ/ÉÁ˸/×Ô¿Ø
    BYTE    AttribGreenMode:2;    //Green LEDÃð/ÁÁ/ÉÁ˸/×Ô¿Ø
    BYTE    AttribReserved:4;     //±£ÁôÔÝʱ²»ÓÃ
    BYTE    FrequenceRed:2;       //Red LEDÉÁ˸ƵÂÊ
    BYTE    FrequenceGreen:2;     //Green LEDÉÁ˸ƵÂÊ
    BYTE    FrequenceReserved:4;  //±£ÁôÔÝʱ²»ÓÃ
} VCI_INDICATE_LIGHT,*PVCI_INDICATE_LIGHT;
 
//ÉèÖÃת·¢½á¹¹
typedef struct _VCI_CAN_OBJ_REDIRECT{
    BYTE    Action;                //±êʶ¿ªÆô»òֹͣת·¢
    BYTE    DestCanIndex;          //CANÄ¿±êͨµÀ
} VCI_CAN_OBJ_REDIRECT,*PVCI_CAN_OBJ_REDIRECT;
 
typedef struct _CANDTUTIME {
    UINT16 wYear;
    UINT16 wMonth;
    UINT16 wDay;
    UINT16 wHour;
    UINT16 wMinute;
    UINT16 wSecond;
} CANDTUTIME;
 
//GPSÊý¾Ý½á¹¹
typedef struct _tagCANDTUGPSData
{
    float       fLatitude;  //γ¶È
    float       fLongitude; //¾­¶È
    float       fSpeed;     //ËÙ¶È
    CANDTUTIME  candtuTime;
}CANDTUGPSData, *PCANDTUGPSData;
 
//»ñÈ¡GPS½á¹¹
typedef struct _VCI_CANDTU_GPS_DATA
{
    PCANDTUGPSData pGPSData;    //Óû§Ìṩ½ÓÊÕGPSÊý¾ÝµÄ»º³åÇøµØÖ·
    ULONG          nGPSDataCnt; //¿ÉÒÔÈÝÄɵÄGPSÊý¾Ý¸öÊý
}VCI_CANDTU_GPS_DATA, *PVCI_CANDTU_GPS_DATA;
 
#ifdef __cplusplus
#define EXTERNC extern "C"
#define DEF(a) = a
#else
#define EXTERNC
#define DEF(a)
#endif
 
EXTERNC DWORD __stdcall VCI_OpenDevice(DWORD DeviceType,DWORD DeviceInd,DWORD Reserved);
EXTERNC DWORD __stdcall VCI_CloseDevice(DWORD DeviceType,DWORD DeviceInd);
EXTERNC DWORD __stdcall VCI_InitCAN(DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig);
 
EXTERNC DWORD __stdcall VCI_ReadBoardInfo(DWORD DeviceType,DWORD DeviceInd,PVCI_BOARD_INFO pInfo);
EXTERNC DWORD __stdcall VCI_ReadErrInfo(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_ERR_INFO pErrInfo);
EXTERNC DWORD __stdcall VCI_ReadCANStatus(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_STATUS pCANStatus);
 
EXTERNC DWORD __stdcall VCI_GetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData);
EXTERNC DWORD __stdcall VCI_SetReference(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,DWORD RefType,PVOID pData);
 
EXTERNC ULONG __stdcall VCI_GetReceiveNum(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
EXTERNC DWORD __stdcall VCI_ClearBuffer(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
 
EXTERNC DWORD __stdcall VCI_StartCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
EXTERNC DWORD __stdcall VCI_ResetCAN(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd);
 
EXTERNC ULONG __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,ULONG Len);
EXTERNC ULONG __stdcall VCI_Receive(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pReceive,ULONG Len,INT WaitTime DEF(-1));
 
#endif