USB-CAN-businterface
Adapter-interfacefunctie
Gebruiksinstructie voor de bibliotheek
DEEL EEN IS AFVIEW
Als de gebruiker alleen de USB-CAN-businterface-adapter gebruikt om de CAN-buscommunicatietest uit te voeren, kan hij direct de meegeleverde USB-CAN Tool-software gebruiken voor het verzenden en ontvangen van gegevens van de test.
Als de gebruiker van plan is softwareprogramma's voor zijn eigen producten te schrijven. Lees de volgende instructies zorgvuldig door en raadpleeg de sample code die wij bieden:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Bibliotheek ontwikkelen file :ControlCAN.lib, ControlCAN.DLL
Functiedeclaratie van VC-versie file :ControlCAN.h
Functiedeclaratie van VB-versie file: ControlCAN.bas
LaboratoriumVIEW versie bibliotheek functiepakketmodule :ControlCAN.llb
Functiedeclaratie van Delphi-versie file: ControlCAN.pas
DEEL TWEE COMPATIBELE FUNCTIEBIBLIOTHEEK EN DATASTRUCTUUR
2.1. TYPEDEFINITIE
2.1.1. Apparaattype
Typedefinitie | Typ waarde | Beschrijving |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
De VCI_BOARD_INFO-structuur bevat apparaatinformatie van de USB-CAN-serie interfacekaart.
De structuur wordt ingevuld in de VCI_ReadBoardInfo-functie.
Lid:
hw_Versie
Hardwareversienummer, hexadecimale notatie. 0x0100 vertegenwoordigt bijvoorbeeld V1.00.
fw_Versie
Hardwareversienummer, hexadecimale notatie. 0x0100 vertegenwoordigt bijvoorbeeld V1.00.
Pagina 2
dr_Versie
Versienummer van het stuurprogramma, hexadecimale notatie. 0x0100 vertegenwoordigt bijvoorbeeld V1.00.
in_Versie
Versienummer van de interfacebibliotheek, hexadecimale notatie. 0x0100 vertegenwoordigt bijvoorbeeld V1.00.
irq_Num
Systeem gereserveerd.
can_Num
Vertegenwoordigt het totale aantal CAN-kanalen.
str_Serienummer
Het serienummer van deze bordkaart.
str_hw_Type
Hardwaretype, zoals “USBCAN V1.00” (Opmerking: Inclusief stringterminator '\0').
Gereserveerd
Systeem gereserveerd.
2.1.3. VCI_CAN_OBJ
In de functies VCI_Transmit en VCI_Receive wordt de VCI_CAN_OBJ-structuur gebruikt om het CAN-berichtframe te verzenden.
Lid:
ID
Bericht-ID. Direct ID-formaat, rechts uitgelijnd, zie: Bijlage één: ID-uitlijningsdetails.
TijdStamp
Het ontvangen van de stamp informatie over het tijdsbestek, starttiming wanneer de CAN-controller wordt geïnitialiseerd, de eenheid is 0, 1 ms.
Tijdvlag
Wat betreft het al dan niet gebruiken van de tijd stamp, 1is de effectieve TijdStamp. TimeFlag en TimeStamp hebben alleen betekenis als het frame wordt ontvangen.
Verzendtype
Verzendtype. = 0 geeft Normaal type aan, = 1 geeft Enkelvoudig verzenden aan.
ExterneVlag
Of het nu een afgelegen vlag is. = 1 geeft de externe vlag aan, = 0 geeft de gegevensvlag aan.
ExterneVlag
Of het nu een externe vlag is. = 1 geeft externe vlag aan, = 0 geeft standaardvlag aan.
GegevensLen
Gegevenslengte(<=8), dat wil zeggen de lengte van de gegevens.
Gegevens
Pakketgegevens.
Gereserveerd
Systeem gereserveerd.
2.1.4. VCI_INIT_CONFIG
De VCI_INIT_CONFIG-structuur definieert de initialisatieconfiguratie van de CAN. De structuur wordt ingevuld in de VCI_InitCan-functie.
Lid:
AccCode
Ontvang gefilterde acceptatiecode.
AccMask
Ontvang een filtermasker.
Gereserveerd
Gereserveerd.
Filter
Filtermethode, waarbij instellingsbereik 0-3 mogelijk is, zie sectie 2.2.3 van de filtermodustabel voor details.
Tijdstip0
SJA1000 Baudrate-parameter, Timing0 (BTR0) .
Tijdstip1
SJA1000 Baudrate-parameter, Timing1 (BTR1) .
Modus
Bedrijfsmodus, 0 = normale werking, 1 = alleen-luisteren-modus, 2 = spontane toelating en verzendtestmodus.
Opmerkingen:
Over de filterinstellingen verwijzen wij u naar: Bijlage II: CAN-parameter instellingsinstructies.
CAN Timing0 en Timing1 worden gebruikt om de baudrate in te stellen, deze twee parameters worden alleen gebruikt bij de initialisatiestage.
Conventionele Baud-referentietabel:
CAN-baudsnelheid | Timing0(BTR0) | Timing1(BTR1) |
10kbps | 0x31 | 0x1C |
20kbps | 0x18 | 0x1C |
40kbps | 0x87 | 0xFF |
50kbps | 0x09 | 0x1C |
80kbps | 0x83 | 0xFF |
100kbps | 0x04 | 0x1C |
125kbps | 0x03 | 0x1C |
200kbps | 0x81 | 0xFA |
250kbps | 0x01 | 0x1C |
400kbps | 0x80 | 0xFA |
500kbps | 0x00 | 0x1C |
666kbps | 0x80 | 0xB6 |
800kbps | 0x00 | 0x16 |
1000kbps | 0x00 | 0x14 |
33.33 Kbps | 0x09 | 0x6F |
66.66 Kbps | 0x04 | 0x6F |
83.33 Kbps | 0x03 | 0x6F |
- Gebruikers hoeven alleen SJA1000 (16MHz) te volgen om de parameter Baudrate in te stellen.
- De adapter ondersteunt tijdelijk geen baudsnelheid lager dan 10K.
2.2. FUNCTIEBESCHRIJVING
2.2.1. VCI_OpenApparaat
Deze functie wordt gebruikt om apparaten aan te sluiten.
DWORD __stdcall VCI_OpenDevice (DWORD DevType, DWORD DevIndex, DWORD gereserveerd);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
Gereserveerd
Retentieparameters, vul 0 in.
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
2.2.2. VCI_CloseDevice
Deze functie wordt gebruikt om de verbinding te verbreken.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
2.2.3. VCI_InitCan
Deze functie wordt gebruikt om de opgegeven CAN te initialiseren.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
CANIndex
CAN-kanaalindex, bijvoorbeeld als er slechts één CAN-kanaal is, is het indexnummer 0, als er twee zijn, kan het indexnummer 0 of 1 zijn.
pInitConfig
Initialisatieparameterstructuur. Parameterlijst met leden:
Lid | Functionele beschrijving |
pInitConfig->AcccCode | AccCode en AccMask kunnen samenwerken om te bepalen welke pakketten kunnen worden geaccepteerd. Deze twee registers worden gebruikt om de ID links uitgelijnd in te stellen, dat wil zeggen dat de hoogste bit (Bit31) van de AccCode en AccMask wordt uitgelijnd met de hoogste bit van de ID-waarde. |
pInitConfig->AcMask | Over ID-uitlijning zie bijlagen: Bijlage I: Details van ID-uitlijning. Bijv.: Als u de waarde van de AccCode instelt op 0x24600000 (dwz 0x123 wordt 21 bits naar links verschoven), wordt de AccMask-waarde is ingesteld op 0x00000000, en dan kunnen alleen de pakketten met CAN-berichtframe-ID 0x123 worden geaccepteerd (AccMask-waarde van 0x00000000 geeft aan dat alle bits relevant zijn |
stukjes). Als de AccCode-waarde is ingesteld op 0x24600000, wordt de AccMask-waarde ingesteld op 0x600000 (0x03 wordt 21 bits naar links verschoven), en kunnen alleen de pakketten met de CAN-berichtframe-ID 0x120 ~ 0x123 worden geaccepteerd (AccMask-waarde 0x600000 geeft aan dat behalve bit0 ~ bit1 ook andere bits (bit2 ~ bit10) relevante bits zijn). Opmerking: Deze filterinstelling bijvamples aan het standaardframe, bijvoorbeeldample, hoog 11-bit is het geldige bit; in het geval van het uitgebreide frame, en dan is de geldige ID 29-bit. AccCode en AccMask stellen 29-bit hoog in als geldige bit! |
|
pInitConfig->Gereserveerd | gereserveerd |
pInitConfig->Filter | Voor de filtermodusinstellingen verwijzen wij u naar het gedeelte van de filtermodustabel. |
pInitConfig->Timing0 | BaudrateT0-instelling |
pInitConfig->Timing1 | BaudrateT1-instelling |
pInitConfig->Modus | Bedrijfsmodus: 0-normale werking 1-Alleen-luisteren-modus 2-spontane toegangs- en verzendtestmodus (deze waarde is uitgesloten van de ZLG-functiebibliotheek) |
Tabel filtermodus:
Waarde | Naam | Beschrijving |
1 | Ontvang alle soorten | Geschikt voor zowel standaard als verlengd frame! |
2 | Ontvang alleen standaard frame | Geschikt voor standaardframe en verlengd |
frame wordt direct door filtratie verwijderd! | ||
3 | Ontvang alleen een verlengd frame | Geschikt voor verlengd frame, en standaardframe wordt verwijderd door filtratie direct! 。 |
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
Bijv.
2.2.4. VCI_ReadBoardInfo
Deze functie wordt gebruikt om de hardware-informatie van de adapter te lezen. Over het algemeen kan het worden genegeerd.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldample, als er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde vanaf 0. pInfo
VCI_BOARD_INFO wordt gebruikt om de structuuraanwijzer van apparaatinformatie op te slaan.
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
2.2.5. VCI_GetReceiveNum
Deze functie wordt gebruikt om de ontvangen maar nog niet gelezen frames in de aangewezen ontvangstbuffer te specificeren.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
CANIndex
CAN-kanaalindex.
Retourneren:
Retourneer frames die nog niet zijn gelezen.
Bijv.
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Deze functie wordt gebruikt om de ontvangst- en verzendbuffer van het aangegeven kanaal te wissen
USB-CAN-adapter.
DWORD __stdcall VCI_ClearBuffer (DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
CANIndex
CAN-kanaalindex.
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
2.2.7. VCI_StartCAN
Deze functie wordt gebruikt om de CAN-controller en de interne interrupt-ontvangstfunctie van de adapter te starten.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
CANIndex
CAN-kanaalindex.
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
2.2.8. VCI_ResetCAN
Deze functie wordt gebruikt om de CAN-controller te resetten.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
CANIndex
CAN-kanaalindex.
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
2.2.9. VCI_Verzenden
Deze functie wordt gebruikt om CAN-berichtframes te verzenden.
DWORD __stdcall VCI_Transmit (DWORD DeviceType, DWORD DeviceInd, DWORD CANInd, PVCI_CAN_OBJ pSend, DWORD-lengte);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
CANIndex
CAN-kanaalindex. pVerzenden
Het eerste adres van de dataframe-arrays die moeten worden verzonden.
Lengte
Het aantal dataframes dat moet worden verzonden, het maximale aantal is 1000, de aanbevolen waarde is 48 bij hoge snelheid.
Retourneren:
Retourneer het werkelijke aantal frames dat al is verzonden. De retourwaarde = -1 geeft een apparaatfout aan.
Bijv.
2.2.10. VCI_Ontvangen
Deze functie wordt gebruikt om ontvangst aan te vragen.
DWORD __stdcall VCI_Receive (DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
CANIndex
CAN-kanaalindex.
pOntvangen
Om de eerste ingestelde pointer van de dataframes te ontvangen.
Len
De arraylengte van het dataframe moet meer dan 2500 zijn om een normaal bericht te kunnen retourneren.
Anders is de retourlengte nul, ongeacht of het bericht is ontvangen of niet. de adapter heeft voor elk kanaal een buffer van 2000 frames ingesteld. Op basis van zijn eigen systeem en werkomgeving kan de gebruiker een geschikte arraylengte kiezen vanaf 2500.
Wachttijd gereserveerd.
Retourneren:
Retourneert het aantal frames dat daadwerkelijk is gelezen, -1 geeft apparaatfouten aan.
Bijv.
DEEL DRIE ANDERE FUNCTIES EN BESCHRIJVING VAN DE DATASTRUCTUUR
Dit hoofdstuk beschrijft andere gegevenstypen en functies van de incompatibele ZLG-interfacebibliotheek in de USB-CAN-adapterinterfacebibliotheek ControlCAN.dll. Doe dat alsjeblieft
Roep deze functies niet aan als u een compatibel ZLG-model gebruikt voor secundaire ontwikkeling, om de compatibiliteit niet te beïnvloeden.
3.1 FUNCTIEBESCHRIJVING:
3.1.1. VCI_UsbDeviceReset
Reset USB-CAN-adapter, moet het apparaat opnieuw openen na het resetten met behulp van VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD gereserveerd
Parameters:
Ontwikkelaartype
Soort apparaat. Zie: Definitie van adapterapparaattype.
Ontwikkelaar
Apparaatindex, bijvoorbeeldampAls er slechts één USB-CAN-adapter is, is het indexnummer 0, als er meerdere USB-CAN-adapters zijn, de indexnummers in oplopende volgorde, beginnend bij 0.
Gereserveerd Gereserveerd.
Retourneren:
Retourwaarde = 1, wat betekent dat de bewerking succesvol is; = 0 geeft aan dat de bewerking is mislukt; = -1 geeft aan dat het apparaat niet bestaat.
bRel = VCI_UsbDeviceReset(nDeviceType, Onafhankelijkheid, 0);
3.1.2. VCI_FindUsbDevice2
Wanneer dezelfde pc meerdere USB-CAN's gebruikt, kan de gebruiker deze functie gebruiken om het huidige apparaat te vinden.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parameters:
pInfo
pInfo wordt gebruikt om de parameters van de eerste databufferadresaanwijzer op te slaan.
Retourneren
Geef het nummer terug van de USB-CAN-adapter die op de computer is aangesloten.
Deel Vier Interfacebibliotheekfuncties met behulp van proces
Om de apparaatfunctie te vermenigvuldigen, hebben we extra functies geleverd (functies gepresenteerd met een groene achtergrond). Deze functies omvatten: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Tijdens de tweede ontwikkeling hoeven deze functies niet noodzakelijkerwijs te worden aangeroepen. Zelfs deze functies worden genegeerd, alle functies van de USB-CAN-adapter kunnen worden bereikt.
www.waveshare.com
www.waveshare.com/wiki
Documenten / Bronnen
![]() |
WAVESHARE USB-CAN Bus Interface Adapter Interface Functiebibliotheek [pdf] Gebruiksaanwijzing USB-CAN-businterface-adapterinterface Functiebibliotheek, USB-CAN, Businterface-adapterinterface Functiebibliotheek, Interface-functiebibliotheek, Functiebibliotheek |