USB-CAN bussgrensesnitt
Adaptergrensesnittfunksjon
Brukerveiledning for biblioteket
DEL EN OVERVIEW
Hvis brukeren bare bruker USB-CAN-buss-grensesnittadapter for å gå på CAN-buss kommunikasjonstest, og så kan han direkte bruke den medfølgende USB-CAN Tool-programvaren for å sende og motta data fra testen.
Hvis brukeren har til hensikt å skrive programvare for sine egne produkter. Les nøye de følgende instruksjonene og ta referansen fra sampkoden vi gir:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-kan.
Utvikle bibliotek file :ControlCAN.lib, ControlCAN.DLL
VC-versjon funksjonserklæring file :ControlCAN.h
VB versjonsfunksjonserklæring file: ControlCAN.bas
LabVIEW versjonsbibliotek funksjonspakkemodul :ControlCAN.llb
Delphi versjonsfunksjonserklæring file: ControlCAN.pas
DEL TO KOMPATIBEL FUNKSJONSBIBLIOTEK OG DATASTRUKTUR
2.1. TYPEDEFINISJON
2.1.1. Enhetstype
Type definisjon | Type verdi | Beskrivelse |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
VCI_BOARD_INFO-strukturen inneholder USB-CAN-seriens grensesnittkortenhetsinformasjon.
Strukturen vil fylles ut i funksjonen VCI_ReadBoardInfo.
Medlem:
hw_Versjon
Maskinvareversjonsnummer, heksadesimal notasjon. F.eks. 0x0100 representerer V1.00.
fw_Versjon
Maskinvareversjonsnummer, heksadesimal notasjon. F.eks. 0x0100 representerer V1.00.
Side 2
dr_Versjon
Driverversjonsnummer, heksadesimal notasjon. F.eks. 0x0100 representerer V1.00.
in_Version
Grensesnittbibliotekets versjonsnummer, heksadesimal notasjon. F.eks. 0x0100 representerer V1.00.
irq_Num
Systemet er reservert.
can_Num
Representerer det totale antallet CAN-kanaler.
str_Serial_Num
Serienummeret til dette brettkortet.
str_hw_Type
Maskinvaretype, for eksempel "USBCAN V1.00" (Merk: Inkluderer strengterminator '\0').
Reservert
Systemet er reservert.
2.1.3. VCI_CAN_OBJ
I funksjonene VCI_Transmit og VCI_Receive, brukes VCI_CAN_OBJ-strukturen til å overføre CAN-meldingsramme.
Medlem:
ID
Meldingsidentifikator. Direkte ID-format, høyrejustert, se: Annex One: ID-justeringsdetaljer.
TimeStamp
Å motta stamp informasjon om tidsrammen, start timing når CAN-kontrolleren er initialisert, enheten er 0. 1ms.
Tidsflagg
Når det gjelder om man skal bruke tiden stamp, 1er den effektive TimeStamp. TimeFlag og TimeStamp er bare meningsfulle når rammen er mottatt.
SendType
Sendingstype. = 0 indikerer normal type, = 1 indikerer enkel sending.
RemoteFlag
Om det er et eksternt flagg. = 1 indikerer eksternt flagg, = 0 indikerer dataflagg.
EksternFlagg
Om det er et eksternt flagg. = 1 indikerer eksternt flagg, = 0 indikerer standard flagg.
DataLen
Datalengde(<=8) , det vil si lengden på data.
Data
Pakkedata.
Reservert
Systemet er reservert.
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG-strukturen definerer initialiseringskonfigurasjonen til CAN. Strukturen vil fylles ut i VCI_InitCan-funksjonen.
Medlem:
AccCode
Motta filtrert akseptkode.
AccMask
Motta filtermaske.
Reservert
Reservert.
Filter
Filtreringsmetode, som tillater innstillingsområde 0-3, se avsnitt 2.2.3 i filtermodustabellen for detaljer.
Timing0
SJA1000 Baud rate parameter, Timing0 (BTR0) .
Timing1
SJA1000 Baud rate parameter, Timing1 (BTR1) .
Modus
Driftsmodus, 0 = normal drift, 1 = Kun lyttemodus, 2 = spontaninnleggelse og sendetestmodus.
Merknader:
Om filterinnstillingene, se: Vedlegg II: CAN-parameteroppsettinstruksjoner.
CAN Timing0 og Timing1 brukes til å stille inn overføringshastigheten, disse to parameterne brukes kun ved initialiseringentage.
Konvensjonell Baud-referansetabell:
CAN Baud rate | Timing0(BTR0) | Timing1(BTR1) |
10 kbps | 0x31 | 0x1C |
20 kbps | 0x18 | 0x1C |
40 kbps | 0x87 | 0xFF |
50 kbps | 0x09 | 0x1C |
80 kbps | 0x83 | 0xFF |
100 kbps | 0x04 | 0x1C |
125 kbps | 0x03 | 0x1C |
200 kbps | 0x81 | 0xFA |
250 kbps | 0x01 | 0x1C |
400 kbps | 0x80 | 0xFA |
500 kbps | 0x00 | 0x1C |
666 kbps | 0x80 | 0xB6 |
800 kbps | 0x00 | 0x16 |
1000 kbps | 0x00 | 0x14 |
33.33 Kbps | 0x09 | 0x6F |
66.66 Kbps | 0x04 | 0x6F |
83.33 Kbps | 0x03 | 0x6F |
- Brukere trenger bare å følge SJA1000 (16MHz) for å angi parameteren Baud rate.
- Adapteren støtter ikke midlertidig Baud-hastighet under 10K.
2.2. FUNKSJONSBESKRIVELSE
2.2.1. VCI_OpenDevice
Denne funksjonen brukes til å koble til enheter.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reservert);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
Reservert
Oppbevaringsparametere, fyll ut 0.
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
2.2.2. VCI_CloseDevice
Denne funksjonen brukes til å lukke forbindelsen.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
2.2.3. VCI_InitCan
Denne funksjonen brukes til å initialisere spesifisert CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
CANIndex
CAN-kanalindeks, for eksempel når det bare er én CAN-kanal, er indeksnummeret 0, hvis det er to, kan indeksnummeret være 0 eller 1.
pInitConfig
Initialiseringsparameterstruktur. Parameterliste over medlemmer:
Medlem | Funksjonell beskrivelse |
pInitConfig->AccCode | AccCode og AccMask kan arbeide sammen for å bestemme hvilke pakker som kan aksepteres. Disse to registrene brukes til å sette ID venstrejustert, det vil si at den høyeste biten (Bit31) av AccCode og AccMask er justert med den høyeste biten av ID-verdien. |
pInitConfig->AccMask | Om ID-justering, se vedlegg: Vedlegg I: ID-justeringsdetaljer. For eksempel: Hvis du setter verdien til AccCode til 0x24600000 (dvs. 0x123 er forskjøvet til venstre med 21 biter), AccMask-verdi er satt til 0x00000000, og da kan bare pakkene med CAN-meldingsramme-ID er 0x123 aksepteres (AccMask-verdi på 0x00000000 indikerer at alle biter er relevante |
biter). Hvis AccCode-verdien er satt til 0x24600000, settes AccMask-verdien til 0x600000 (0x03 forskyves til venstre med 21 biter), og da kan bare pakkene med CAN-meldingsramme-IDen er 0x120 ~ 0x123 aksepteres (AccMask-verdi 0x600000 indikerer at bortsett fra bit0 ~ bit1 er andre biter (bit2 ~ bit10) relevante bit). Note: Denne filterinnstillingen f.eksamples til standardrammen, for eksample, høy 11-bit er den gyldige biten; når det gjelder den utvidede rammen, og da er den gyldige ID-en 29-bit. AccCode og AccMask setter høy 29-bit som gyldig bit! |
|
pInitConfig->Reservert | reservert |
pInitConfig->Filter | Innstillinger for filtreringsmodus, se avsnittet i filtermodustabellen. |
pInitConfig->Timing0 | BaudrateT0-innstilling |
pInitConfig->Timing1 | BaudrateT1-innstilling |
pInitConfig->Modus | Driftsform: 0-normal drift 1-Bare lytt-modus 2-spontan opptak og sendingstestmodus (denne verdien er ekskludert fra ZLG-funksjonsbiblioteket) |
Filtermodustabell:
Verdi | Navn | Beskrivelse |
1 | Motta alle typer | Passer både standard og utvidet ramme! |
2 | Får kun standardramme | Passer til standardramme, og forlenget |
ramme vil bli fjernet ved filtrering direkte! | ||
3 | Få kun utvidet ramme | Egnet til forlenget ramme, og standard ramme vil bli fjernet pr filtrering direkte! . |
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
F.eks
2.2.4. VCI_ReadBoardInfo
Denne funksjonen brukes til å lese adapterens maskinvareinformasjon. Generelt sett kan det ignoreres.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0. pInfo
VCI_BOARD_INFO brukes til å lagre enhetsinformasjonsstrukturpekeren.
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
2.2.5. VCI_GetReceiveNum
Denne funksjonen brukes til å spesifisere mottatte, men ikke blitt leste rammer i den angitte mottaksbufferen.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
CANIndex
CAN-kanalindeks.
Returnerer:
Returner rammer som ikke er lest ennå.
F.eks
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Denne funksjonen brukes til å slette mottaks- og sendebufferen for den angitte kanalen spesifisert av
USB-CAN adapter.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
CANIndex
CAN-kanalindeks.
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
2.2.7. VCI_StartCAN
Denne funksjonen brukes til å starte CAN-kontrolleren og den interne avbruddsmottaksfunksjonen til adapteren.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
CANIndex
CAN-kanalindeks.
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
2.2.8. VCI_ResetCAN
Denne funksjonen brukes til å tilbakestille CAN-kontrolleren.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
CANIndex
CAN-kanalindeks.
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
2.2.9. VCI_Send
Denne funksjonen brukes til å sende CAN-meldingsramme.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
CANIndex
CAN-kanalindeks. pSend
Den første adressen til datarammematrisene som må sendes.
Lengde
Antallet datarammer som må sendes, maksimalt antall er 1000, anbefalt verdi er 48 under høy hastighet.
Returnerer:
Returner det faktiske antallet bilder som allerede er sendt, returverdien = -1 indikerer en enhetsfeil.
F.eks
2.2.10. VCI_Motta
Denne funksjonen brukes til å be om mottak.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
CANIndex
CAN-kanalindeks.
motta
For å motta den første settpekeren av datarammene.
Len
Matriselengden på datarammen må være mer enn 2500 for å returnere normal melding.
Ellers vil returlengden være null enten meldingen mottas eller ikke. adapteren satte en 2000-bilders buffer for hver kanal. Basert på eget system og arbeidsmiljø kan brukeren velge en passende arraylengde fra 2500.
Ventetid reservert.
Returnerer:
Returner antall rammer som faktisk har blitt lest, -1 indikerer enhetsfeil.
F.eks
DEL TRE ANDRE FUNKSJONER OG DATASTRUKTURBESKRIVELSE
Dette kapittelet beskriver andre datatyper og funksjoner til det inkompatible ZLG-grensesnittbiblioteket i USB-CAN-adaptergrensesnittbiblioteket ControlCAN.dll. Vennligst gjør det
ikke kall disse funksjonene hvis du bruker en kompatibel ZLG-modell for sekundær utvikling for ikke å påvirke kompatibiliteten.
3.1 FUNKSJONSBESKRIVELSE
3.1.1. VCI_UsbDeviceReset
Tilbakestill USB-CAN-adapter, må åpne enheten på nytt etter tilbakestilling ved å bruke VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reservert
Parametere:
DevType
Enhetstype. Se: Definisjon av adapterenhetstype.
DevIndex
Enhetsindeks, f.eksample, når det bare er én USB-CAN-adapter, er indeksnummeret 0, når det er flere USB-CAN-adaptere, er indekstallene i stigende rekkefølge fra 0.
Reservert Reservert.
Returnerer:
Returverdi = 1, som betyr at operasjonen er vellykket; = 0 indikerer at operasjonen mislyktes; = -1 indikerer at enheten ikke eksisterer.
bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 0);
3.1.2. VCI_FindUsbDevice2
Når samme PC bruker flere USB-CAN, kan brukeren bruke denne funksjonen til å finne gjeldende enhet.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametere:
pInfo
pInfo brukes til å lagre parametrene til den første databufferadressepekeren.
Returnerer
Returner nummeret til USB-CAN-adapteren som er koblet til datamaskinen.
Del fire Grensesnittbibliotekfunksjoner ved hjelp av prosess
For å multiplisere enhetsfunksjonen ga vi tilleggsfunksjoner (funksjoner presentert med grønn bakgrunn), disse funksjonene inkluderer: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Under den andre utviklingen skal disse funksjonene ikke nødvendigvis påberopes. Selv disse funksjonene ignoreres, alle USB-CAN-adapterfunksjoner kan oppnås.
www.waveshare.com
www.waveshare.com/wiki
Dokumenter / Ressurser
![]() |
WAVESHARE USB-CAN Buss-grensesnittadapter Grensesnittfunksjonsbibliotek [pdf] Bruksanvisning USB-CAN-bussgrensesnittadapter Grensesnittfunksjonsbibliotek, USB-CAN, Bussgrensesnittadaptergrensesnittfunksjonsbibliotek, grensesnittfunksjonsbibliotek, funksjonsbibliotek |