我正在尝试在软件包中运行由公司(美国数字公司)提供的C演示程序。我已正确下载了所有软件,并使用了公司提供的确切演示程序和头文件,因此我假设代码没有任何问题。我是C的新手,所以我猜这是我的问题 - 我怀疑我没有正确地包括一个库或类似的东西。
以下文件也都由公司提供:
USB4.dll
USB4.lib
USB4.h
在演示C程序中,我使用#include包含USB4.h目录(具有正确的文件路径),这是我进入命令提示符窗口的行。 (演示程序的名称是turtle,simple是包含turtle.c,USB4.dll,USB4.h和USB4.lib的文件夹)。
C:\simple> gcc turtle.c -lC:\simple\USB4.lib -o turtle.exe
我继续收到错误
在turtle.c:4:0中包含的文件中:C:\ simple \ USB4.h:222:79:错误:未知类型名称'USB4_FIFOBufferRecord'extern int _stdcall USB4_ReadFIFOBufferStrut(短iDeviceNo,long * plSize,USB4_FIFOBufferRecord * pCBR,unsigned long ulReadTimeout);
我不明白为什么。 (我看到类型名称没有在头文件中定义,但我不知道它将在何处定义)。如果您有任何想法或需要澄清,请告诉我。谢谢!
如果有帮助,这是我试图运行的演示程序:
#include "conio.h"
#include "stdio.h"
#include "windows.h"
#include "C:\simple\USB4.h"
int main(int argc, char* argv[])
{
short iDeviceCount = 0;
int iResult = 0;
unsigned long ctrlmode = 0;
unsigned long ulCount;
unsigned long ulPrevCount = 0xFFFFFFFF;
printf("--------------------------------\n");
printf("USB4 Hello World!\n");
printf("--------------------------------\n");
// Initialize the USB4 driver.
iResult = USB4_Initialize(&iDeviceCount); // initialize the card
// Check result code...
if (iResult != USB4_SUCCESS)
{
printf("Failed to initialize USB4 driver! Result code = %d.\nPress any key to exit.\n",
iResult);
while( !_kbhit() )
{
Sleep(100);
}
}
else
{
// Caution! The reset of the example is implemented without any error checking.
// Configure encoder channel 0.
USB4_SetPresetValue(0,0,499); // Set the preset register to the CPR-1
USB4_SetMultiplier(0,0,3); // Set quadrature mode to X4.
USB4_SetCounterMode(0,0,3); // Set counter mode to modulo-N.
USB4_SetForward(0,0,TRUE); // Optional: determines the direction of counting.
USB4_SetCounterEnabled(0,0,TRUE); // Enable the counter.**IMPORTANT**
USB4_ResetCount(0,0); // Reset the counter to 0
// USB4_SetControlMode(0,0,0xFC000); // You may replace the previous five
// lines with one call to USB4_SetControlMode using to correct control mode value.
printf("Reading encoder channel 0. Press any key to exit.\n");
// Waits for the user to press any key, then exits.
while( !_kbhit() )
{
USB4_GetCount(0,0,&ulCount);
// Update display when value changes
if (ulPrevCount != ulCount)
{
printf("%d \r", ulCount);
}
ulPrevCount = ulCount;
Sleep(1); // Don't want to hog all the CPU.
}
}
// Close all open connections to the USB4 devices.
USB4_Shutdown();
return 0;
}
这是头文件:
// USB4.h : USB4 header file.
/*************************************************************************
| Definitions |
*************************************************************************/
#define MAX_ERROR_MSG_LENGTH 512
#define MAX_INC_COUNTS 0x1000000
#define FAILURE FALSE // must be zero
#define SUCCESS TRUE
#define USB4_SUCCESS 0
#define USB4_MAX_ENCODERS 4 // max number of encoders per device.
#define USB4_MAX_DEVICES 32 // max devices on USB bus
#define USB4_MAX_ADDRESSES 32 // address can be any valid single byte value
#define USB4_MAX_ADC_CHANNELS 4 // max number of a/d channels.
#define USB4_FIFO_MAX_COUNT 196607 // max number of ChannelBufferRecords in FIFO.
#define USB4_RS232_BAUDBYTE_9600 0x00 // baud byte code used to set RS232 baud rate to 9600.
#define USB4_RS232_BAUDBYTE_19200 0x01 // baud byte code used to set RS232 baud rate to 19200.
#define USB4_RS232_BAUDBYTE_115200 0xFF // baud byte code used to set RS232 baud rate to 115200.
//****** Error Codes ***************************/
#define DEVICE_NOT_OPEN -1
#define FAILED_TO_AQUIRE_MUTEX -2
#define FAILED_TO_DOWNLOAD_FIRMWARE -3
#define FATAL_ERROR -4
#define FIFO_BUFFER_EMPTY -5
#define INVALID_A2D_CHANNEL -6
#define INVALID_COUNTER_MODE -7
#define INVALID_D2A_CHANNEL -8
#define INVALID_D2A_MODE -9
#define INVALID_DEVICE_NUMBER -10
#define INVALID_ENCODER_NUMBER -11
#define INVALID_MODULE_NUMBER -12
#define INVALID_PARAMETER -13
#define INVALID_QUADRATURE_MODE -14
#define INVALID_REGISTER_NUMBER -15
#define INVALID_SIGNAL_LENGTH_CODE -16
#define MODULE_NUMBER_ALREADY_ASSIGNED -17
#define MODULE_NUMBER_NOT_FOUND -18
#define NO_AVAILABLE_MODULE_ADDRESSES -19
#define USB4_INVALID_D2A_VALUE -20
#define RX_232_FAILURE -30
#define TX_232_FAILURE -31
#define NO_DEVICES_FOUND -32
#define OLD_FIRMWARE_DETECTED -33
#define INSUFFICIENT_MEMORY_AVAILABLE -34
//****** REGISTERS *****************************/
#define PRESET_REGISTER 0
#define OUTPUT_LATCH_REGISTER 1
#define MATCH_REGISTER 2
#define CONTROL_REGISTER 3
#define STATUS_REGISTER 4
#define COUNTER_REGISTER 5 // Renamed from RESET_CHANNEL_REGISTER
#define RESET_CHANNEL_REGISTER 5 // Not currently used.
#define TRANSFER_PRESET_REGISTER 6
#define CMD_REGISTER 7
#define TIMESTAMP_OUTPUT_LATCH_REGISTER 15
#define TIMESTAMP_REGISTER 23
#define ADC01_TRIGGER_CONTROL_REGISTER 24
#define ADC23_TRIGGER_CONTROL_REGISTER 25
#define ENCODER_TYPE_REGISTER 26
#define INPUT_TRIGGER_CONTROL_REGISTER 27
#define INPUT_TRIGGER_STATUS_REGISTER 28
#define SAMPLING_RATE_MULTIPLIER_REGISTER 30
#define SAMPLING_RATE_COUNTER_REGISTER 31
#define USB_PWM0_TRIGGER_CONTROL_REGISTER 32
#define USB_PWM1_TRIGGER_CONTROL_REGISTER 33
#define USB_PWM2_TRIGGER_CONTROL_REGISTER 34
#define USB_PWM3_TRIGGER_CONTROL_REGISTER 35
#define FIFO_ON_OFF_REGISTER 37
#define FIFO_STATUS_CONTROL_REGISTER 38
#define FIFO_BUFFER_COUNT 39
#define INPUT_PORT_REGISTER 40
#define INPUT_TRIGGER1_SETUP_REGISTER 41
#define INPUT_TRIGGER2_SETUP_REGISTER 42
#define SAMPLES_TO_COLLECT_REGISTER 43
#define SAMPLES_REMAINING_TO_COLLECT_REGISTER 44
#define AQUISITION_CONTROL_REGISTER 45
#define OUTPUT_PORT_REGISTER 46
#define OUTPUT_PORT_SETUP_REGISTER 47
#define USB4_ENCODER3_BASE 48
#define USB4_A2D_BASE_REGISTER 55
#define USB4_A2D_CHANNEL0_REGISTER 55
#define USB4_A2D_CHANNEL1_REGISTER 56
#define USB4_A2D_CHANNEL2_REGISTER 57
#define USB4_A2D_CHANNEL3_REGISTER 58
#define USB4_D2A_CONTROL_REGISTER 59
#define USB4_PW0_REGISTER 60
#define USB4_PER0_REGISTER 61
#define USB4_PW1_REGISTER 62
#define USB4_PER1_REGISTER 63
#define USB4_PW2_REGISTER 64
#define USB4_PER2_REGISTER 65
#define USB4_PW3_REGISTER 66
#define USB4_PER3_REGISTER 67
//****** Status Register Bits ******************/ // bit 6-0 reserved
#define STATUS_BIT_LATCHED_ZERO_DETECTED 0x00000080 // bit 7
#define STATUS_BIT_LATCHED_MATCH_DETECTED 0x00000100 // bit 8
#define STATUS_BIT_LATCHED_CARRY_DETECTED 0x00000200 // bit 9
#define STATUS_BIT_LATCHED_BORROW_DETECTED 0x00000400 // bit 10
#define STATUS_BIT_LATCHED_INDEX_DETECTED 0x00000800 // bit 11
#define STATUS_BIT_LATCHED_ADVANCE_DETECTED 0x00001000 // bit 12
#define STATUS_BIT_LATCHED_RETARD_DETECTED 0x00002000 // bit 13
#define STATUS_BIT_ZERO_DETECTED 0x00004000 // bit 14
#define STATUS_BIT_MATCH_DETECTED 0x00008000 // bit 15
#define STATUS_BIT_CARRY_DETECTED 0x00010000 // bit 16
#define STATUS_BIT_BORROW_DETECTED 0x00020000 // bit 17
#define STATUS_BIT_INDEX_DETECTED 0x00040000 // bit 18
#define STATUS_BIT_ADVANCE_DETECTED 0x00080000 // bit 19
#define STATUS_BIT_RETARD_DETECTED 0x00100000 // bit 20
// bit 22-21 reserved
#define STATUS_BIT_LAST_DIRECTION_INDICATOR 0x08000000 // bit 23
// bit 31-24 reserved
//****** Control Register Bits ******************/ // bit 6-0
#define CONTROL_BIT_INDEX_ENABLE_ON_MATCH 0x00000010 // bit 4
#define CONTROL_BIT_TRIGGER_ON_ZERO 0x00000080 // bit 7
#define CONTROL_BIT_TRIGGER_ON_MATCH 0x00000100 // bit 8
#define CONTROL_BIT_TRIGGER_ON_ROLLOVER 0x00000200 // bit 9
#define CONTROL_BIT_TRIGGER_ON_ROLLUNDER 0x00000400 // bit 10
#define CONTROL_BIT_TRIGGER_ON_INDEX 0x00000800 // bit 11
#define CONTROL_BIT_TRIGGER_ON_INCREASE 0x00001000 // bit 12
#define CONTROL_BIT_TRIGGER_ON_DECREASE 0x00002000 // bit 13
#define CONTROL_BITS_MULTIPLIER 0x0000C000 // bits 14 & 15
#define CONTROL_BITS_COUNTER_MODE 0x00030000 // bits 16 & 17
#define CONTROL_BIT_COUNTER_ENABLE 0x00040000 // bit 18
#define CONTROL_BIT_COUNT_DIRECTION 0x00080000 // bit 19
#define CONTROL_BIT_INDEX_ENABLE 0x00100000 // bit 20
#define CONTROL_BIT_INVERT_INDEX 0x00200000 // bit 21
#define CONTROL_BIT_COUNTER_RESET_OR_PRESET 0x00400000 // bit 22
#define CONTROL_BIT_ENABLE_CAPTURE 0x00800000 // bit 23
// bit 31-24 reserved
//******* Input Port Register Bits ***************/
#define INPUT_PORT_ESTOP 0x00000100 // bit 8
//******* Output Port Configuration Bits ***************/
#define INVERT_OUTPUT_POLARITY 0x00000020 // bit 5
#ifdef __cplusplus
extern "C"{
#endif
struct USB4_FIFOBufferRecord
{
unsigned char Header[6];
unsigned char Input;
unsigned char EStop;
unsigned long Time;
unsigned long Count[4];
unsigned char Status[4];
unsigned short ADC[4];
};
extern int _stdcall USB4_CaptureTimeAndCounts(short iDeviceNo, unsigned long *pulCounts, unsigned long *pulTimeStamp);
extern int _stdcall USB4_ClearCapturedStatus(short iDeviceNo, short iEncoder);
extern int _stdcall USB4_ClearDigitalInputTriggerStatus(short iDeviceNo);
extern int _stdcall USB4_ClearFIFOBuffer(short iDeviceNo);
extern int _stdcall USB4_DeviceCount();
extern int _stdcall USB4_DisableFIFOBuffer(short iDeviceNo);
extern int _stdcall USB4_EnableFIFOBuffer(short iDeviceNo);
extern int _stdcall USB4_GetA2D(short iDeviceNo, short iA2DChannel, unsigned short * puiA2DValue);
extern int _stdcall USB4_GetA2DSamplingFrequency(short iDeviceNo, unsigned short * puiVal);
extern int _stdcall USB4_GetCaptureEnabled(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetControlMode(short iDeviceNo, short iEncoder, unsigned long *pulVal);
extern int _stdcall USB4_GetCount(short iDeviceNo, short iEncoder, unsigned long *pulVal);
extern int _stdcall USB4_GetCounterMode(short iDeviceNo, short iEncoder, short *piVal);
extern int _stdcall USB4_GetDeviceNo(short iModuleAddress, short *piDeviceNo);
extern int _stdcall USB4_GetDigitalInputTriggerConfig(short iDeviceNo, BOOL *pbEnableTrigger, BOOL *pbTriggerOnRisingEdge);
extern int _stdcall USB4_GetDigitalInputTriggerStatus(short iDeviceNo, BOOL *pbVal);
extern int _stdcall USB4_GetDriverBuildNumber(short iDeviceNo, unsigned char *pucVersion);
extern int _stdcall USB4_GetCounterEnabled(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetEnableIndex(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetEnableIndexOnMatch(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetEStopBit(short iDeviceNo, unsigned char *pucVal);
extern int _stdcall USB4_GetFactoryInfo(short iDeviceNo, unsigned short *puiModel, unsigned short *puiVersion, unsigned long *pulSN, unsigned char *pucMonth, unsigned char *pucDay, unsigned short *pusYear);
extern int _stdcall USB4_GetFIFOBufferCount(short iDeviceNo, unsigned long *plVal);
extern int _stdcall USB4_GetForward(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetInterruptControl(short iDeviceNo, BOOL *pbEnableFIFOHalfFullInterrupt, BOOL *pbEnableTriggerOutInterrupt);
extern int _stdcall USB4_GetInvertIndex(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetInvertOutput(short iDeviceNo, BOOL *pbVal);
extern int _stdcall USB4_GetMatch(short iDeviceNo, short iEncoder, unsigned long *pulVal);
extern int _stdcall USB4_GetModuleAddress(short iDeviceNo, unsigned char *pucModuleAddress);
extern int _stdcall USB4_GetMultiplier(short iDeviceNo, short iEncoder, short *piVal);
extern int _stdcall USB4_GetOutputPortConfig(short iDeviceNo, BOOL *pbTriggerOutSignalDrivesOutputPin, unsigned char *pucTriggerSignalLengthCode);
extern int _stdcall USB4_GetPresetOnIndex(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetPresetValue(short iDeviceNo, short iEncoder, unsigned long *pulVal);
extern int _stdcall USB4_GetPWM(short iDeviceNo, short iPWMChannel, unsigned long *pulPulseWidth, unsigned long *pulPulsePeriod);
extern int _stdcall USB4_GetPWMConfig(short iDeviceNo, unsigned char *pucDivisor, unsigned char *pucCaptureToFIFOFlags);
extern int _stdcall USB4_GetROM_ID(short iDeviceNo, unsigned char *pucVal);
extern int _stdcall USB4_GetRPM(short iDeviceNo, short iEncoder, float *pufRPM);
extern int _stdcall USB4_GetSamplesRemaining(short iDeviceNo, unsigned long *pulVal);
extern int _stdcall USB4_GetSamplesToCollect(short iDeviceNo, unsigned long *pulVal);
extern int _stdcall USB4_GetSamplingRateCounter(short iDeviceNo, unsigned long *pulVal);
extern int _stdcall USB4_GetSamplingRateMultiplier(short iDeviceNo, unsigned long *pulVal);
extern int _stdcall USB4_GetStatus(short iDeviceNo, short iEncoder, unsigned long *pulVal);
extern int _stdcall USB4_GetStatusEx(short iDeviceNo, short iEncoder, BOOL *pbDecreaseDetected, BOOL *pbIncreaseDetected, BOOL *pbIndexDetected, BOOL *pbRollunderDetected, BOOL *pbRolloverDetected, BOOL *pbMatchDetected, BOOL *pbZeroDetected);
extern int _stdcall USB4_GetTimeBasedLogSettings(short iDeviceNo, unsigned char * pucInputTrigger1Array, unsigned char * pucInputTrig1And,
unsigned char * pucInputTrigger2Array, unsigned char * pucInputTrig2And,
unsigned char * pucADCTrigger, unsigned short * puiADCThreshold,
unsigned char * pucPWMTrigger, unsigned long * pulPWMThreshold,
unsigned char * pucEncoderChannels, unsigned long * pulNumberOfSamples);
extern int _stdcall USB4_GetTimeStamp(short iDeviceNo, unsigned long *pulVal);
extern int _stdcall USB4_GetTriggerOnDecrease(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetTriggerOnIncrease(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetTriggerOnIndex(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetTriggerOnMatch(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetTriggerOnRollover(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetTriggerOnRollunder(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetTriggerOnZero(short iDeviceNo, short iEncoder, BOOL *pbVal);
extern int _stdcall USB4_GetVersion(short iDeviceNo, unsigned short *puiVersion);
extern int _stdcall USB4_Initialize(short *pDeviceCount);
extern BOOL _stdcall USB4_IsFIFOBufferEmpty(short iDeviceNo, int *piResult);
extern BOOL _stdcall USB4_IsFIFOBufferFull(short iDeviceNo, int * piResult);
extern int _stdcall USB4_PresetCount(short iDeviceNo, short iEncoder);
extern int _stdcall USB4_ReadFIFOBuffer(short iDeviceNo, long *plSize, unsigned long * pTime, unsigned long * pCount0, unsigned long * pCount1, unsigned long * pCount2, unsigned long * pCount3, unsigned char * pStatus0, unsigned char * pStatus1, unsigned char * pStatus2, unsigned char * pStatus3, unsigned char * pInput, unsigned char * pEStop, unsigned long * pADC0, unsigned long * pADC1, unsigned long * pADC2, unsigned long * pADC3, unsigned long ulReadTimeout);
extern int _stdcall USB4_ReadFIFOBufferStruct(short iDeviceNo, long *plSize, USB4_FIFOBufferRecord *pCBR, unsigned long ulReadTimeout);
extern int _stdcall USB4_ReadInputPortRegister(short iDeviceNo, unsigned char *pucVal);
extern int _stdcall USB4_ReadOutputLatch(short iDeviceNo, short iEncoder, unsigned long *pulVal);
extern int _stdcall USB4_ReadOutputPortRegister(short iDeviceNo, unsigned char *pucVal);
extern int _stdcall USB4_ReadRegister(short iDeviceNo, short iRegister, unsigned long *pulVal);
extern int _stdcall USB4_ReadSavedParameters(short iDeviceNo);
extern int _stdcall USB4_ReadTimeAndCounts(short iDeviceNo, unsigned long *pulCounts, unsigned long *pulTimeStamp);
extern int _stdcall USB4_ReadTimeStamp(short iDeviceNo, unsigned long *pulVal);
extern int _stdcall USB4_ReadUnlatchedTimeAndCounts(short iDeviceNo, unsigned long *pulCounts, unsigned long *pulTimeStamp);
extern int _stdcall USB4_ReadUserEEPROM(short iDeviceNo, unsigned char ucStartAddress, unsigned char ucBytesToRead, unsigned char * pucDataArray);
extern int _stdcall USB4_ResetCount(short iDeviceNo, short iEncoder);
extern int _stdcall USB4_ResetTimeStamp(short iDeviceNo);
extern int _stdcall USB4_RestoreFactoryParameters(short iDeviceNo);
extern int _stdcall USB4_SaveParameters(short iDeviceNo);
extern int _stdcall USB4_SetA2DSamplingFrequency(short iDeviceNo, unsigned short uiVal);
extern int _stdcall USB4_SetCaptureEnabled(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetControlMode(short iDeviceNo, short iEncoder, unsigned long ulVal);
extern int _stdcall USB4_SetCount(short iDeviceNo, short iEncoder, unsigned long ulVal);
extern int _stdcall USB4_SetCounterMode(short iDeviceNo, short iEncoder, short iVal);
extern int _stdcall USB4_SetD2A(short iDeviceNo, short iChannel, unsigned short iD2AValue, BOOL bUpdateD2AChannelsNow);
extern int _stdcall USB4_SetD2AControlMode(short iDeviceNo, unsigned char ucMode);
extern int _stdcall USB4_SetDigitalInputTriggerConfig(short iDeviceNo, BOOL *pbEnableTrigger, BOOL *pbTriggerOnRisingEdge);
extern int _stdcall USB4_SetCounterEnabled(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetEnableIndex(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetEnableIndexOnMatch(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetEStopBit(short iDeviceNo, unsigned char bVal);
extern int _stdcall USB4_SetForward(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetInvertIndex(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetInvertOutput(short iDeviceNo, BOOL bVal);
extern int _stdcall USB4_SetMatch(short iDeviceNo, short iEncoder, unsigned long ulVal);
extern int _stdcall USB4_SetModuleAddress(short iDeviceNo, unsigned char ucModuleAddress);
extern int _stdcall USB4_SetMultiplier(short iDeviceNo, short iEncoder, short iVal);
extern int _stdcall USB4_SetOutputPortConfig(short iDeviceNo, BOOL *pbTriggerOutSignalDrivesOutputPin, unsigned char ucTriggerSignalLengthCode);
extern int _stdcall USB4_SetPresetOnIndex(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetPresetValue(short iDeviceNo, short iEncoder, unsigned long ulVal);
extern int _stdcall USB4_SetPWMConfig(short iDeviceNo, unsigned char pucDivisor, unsigned char ucCaptureToFIFOFlags);
extern int _stdcall USB4_SetSamplesToCollect(short iDeviceNo, unsigned long ulVal);
extern int _stdcall USB4_SetSamplingRateMultiplier(short iDeviceNo, unsigned long ulVal);
extern int _stdcall USB4_SetTimeBasedLogSettings(short iDeviceNo, unsigned char * pucInputTrigger1Array, unsigned char ucInputTrig1And,
unsigned char * pucInputTrigger2Array, unsigned char ucInputTrig2And,
unsigned char * pucADCTrigger, unsigned short * puiADCThreshold,
unsigned char * pucPWMTrigger, unsigned long * pulPWMThreshold,
unsigned char ucEncoderChannels, unsigned long ulNumberOfSamples);
extern int _stdcall USB4_SetTriggerOnDecrease(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetTriggerOnIncrease(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetTriggerOnIndex(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetTriggerOnMatch(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetTriggerOnRollover(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetTriggerOnRollunder(short iDeviceNo, short iEncoder, BOOL bVal);
extern int _stdcall USB4_SetTriggerOnZero(short iDeviceNo, short iEncoder, BOOL bVal);
extern void _stdcall USB4_Shutdown();
extern int _stdcall USB4_StartAcquisition(short iDeviceNo);
extern int _stdcall USB4_StopAcquisition(short iDeviceNo);
extern int _stdcall USB4_TriggerSoftwareCapture(short iDeviceNo);
extern int _stdcall USB4_WriteOutputPortRegister(short iDeviceNo, unsigned char ucVal);
extern int _stdcall USB4_WriteRegister(short iDeviceNo, short iRegister, unsigned long ulVal);
extern int _stdcall USB4_WriteUserEEPROM(short iDeviceNo, unsigned char startAddress, unsigned char bytesToWrite, unsigned char * pucData);
#ifdef _DEBUG
#define PRINT(x) OutputDebugString(x)
#else
#define PRINT(x)
#endif
#ifdef __cplusplus
}
#endif
答案 0 :(得分:0)
您提供的错误消息是:
USB4_FIFOBufferRector extern int _stidcall USB4_ReadFIFOBufferStrut(short iDeviceNo, long *plSize, USB$_FIFOBufferRecord *pCBR, unsigned long ulReadTimeout);
我相信这一行有多个拼写错误。这可能是草率的打字,或者它可能是你的错误的来源:
答案 1 :(得分:0)
供应商的头文件第一次出现一些小错误,......
错误消息:
* ... \ USB4.h:222:79:错误:未知类型名称'USB4_FIFOBufferRector'extern int _stidcall USB4_ReadFIFOBufferStrut(短iDeviceNo,long * plSize,USB $ _FIFOBufferRecord pCBR,unsigned long ulReadTimeout );
第222行第79列出现在结构USB4_FIFOBufferRecord
的引用上,该结构在同一文件的第149行定义:
struct USB4_FIFOBufferRecord
{
unsigned char Header[6];
unsigned char Input;
unsigned char EStop;
unsigned long Time;
unsigned long Count[4];
unsigned char Status[4];
unsigned short ADC[4];
};
问题 已定义此结构,但stuct关键字未包含在第222行的原型中。
要解决此问题 ,请参阅以下行:
extern int _stdcall USB4_ReadFIFOBufferStruct(short iDeviceNo, long *plSize, USB4_FIFOBufferRecord *pCBR, unsigned long ulReadTimeout);
尝试在struct
前面插入关键字词USB4_FIFOBufferRecord
。像这样:
extern int _stdcall USB4_ReadFIFOBufferStruct(short iDeviceNo, long *plSize, struct USB4_FIFOBufferRecord *pCBR, unsigned long ulReadTimeout);
或
在第149行,修改结构定义。试试这个:
typedef struct
{
unsigned char Header[6];
unsigned char Input;
unsigned char EStop;
unsigned long Time;
unsigned long Count[4];
unsigned char Status[4];
unsigned short ADC[4];
} USB4_FIFOBufferRecord;
这将导致USB4_FIFOBufferRecord成为“struct USB4_FIFOBufferRecord”类型的新变量。有了它,您可以按原样保留原型。
可以使用 ,(您的选择。)
答案 2 :(得分:0)
USB4_FIFOBufferRecord在第149行声明为struct USB4_FIFOBufferRecord{...};
。在C中,如果参数类型是结构,则该参数在类型声明之前必须具有struct
关键字。因此,在第222行,您需要将USB4_FIFOBufferRecord *pCBR
声明为struct USB4_FIFOBufferRecord *pCBR
。
所以,这条线必须是
extern int _stdcall USB4_ReadFIFOBufferStruct(short iDeviceNo, long *plSize, struct USB4_FIFOBufferRecord *pCBR, unsigned long ulReadTimeout);