USB-CAN interfejs sabirnice
Funkcija interfejsa adaptera
Uputstvo za korišćenje biblioteke
PRVI DEO GOTOVIVIEW
Ako korisnik samo koristi USB-CAN bus interfejs adapter da ide na CAN bus komunikacijski test, i tada može direktno koristiti isporučeni softver USB-CAN Tool za slanje i primanje podataka testa.
Ukoliko korisnik namjerava pisati softverski program za svoje proizvode. Molimo pažljivo pročitajte sljedeće upute i uzmite reference iz sample kod koji nudimo:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Razviti biblioteku file :ControlCAN.lib, ControlCAN.DLL
Deklaracija funkcije VC verzije file :ControlCAN.h
Deklaracija funkcije VB verzije file: ControlCAN.bas
LabVIEW modul funkcionalnog paketa biblioteke verzija :ControlCAN.llb
Deklaracija funkcije Delphi verzije file: ControlCAN.pas
DRUGI DIO KOMPATIBILNA BIBLIOTEKA FUNKCIJA I STRUKTURA PODATAKA
2.1. DEFINICIJA TIPA
2.1.1. Tip uređaja
Definicija tipa | Unesite vrijednost | Opis |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Struktura VCI_BOARD_INFO sadrži informacije o uređaju kartice interfejsa USB-CAN serije.
Struktura će biti popunjena u funkciji VCI_ReadBoardInfo.
Član:
hw_Version
Broj verzije hardvera, heksadecimalni zapis. Npr. 0x0100 predstavlja V1.00.
fw_Version
Broj verzije hardvera, heksadecimalni zapis. Npr. 0x0100 predstavlja V1.00.
Stranica 2
dr_Version
Broj verzije drajvera, heksadecimalni zapis. Npr. 0x0100 predstavlja V1.00.
in_Verzija
Broj verzije biblioteke interfejsa, heksadecimalni zapis. Npr. 0x0100 predstavlja V1.00.
irq_Num
Sistem rezervisan.
can_Num
Predstavlja ukupan broj CAN kanala.
str_Serial_Num
Serijski broj ove kartice.
str_hw_Type
Tip hardvera, kao što je “USBCAN V1.00” (Napomena: uključuje terminator niza '\0').
Rezervirano
Sistem rezervisan.
2.1.3. VCI_CAN_OBJ
U funkcijama VCI_Transmit i VCI_Receive, struktura VCI_CAN_OBJ se koristi za prijenos okvira CAN poruke.
Član:
ID
Identifikator poruke. Direktni format ID-a, poravnat udesno, pogledajte: Aneks 1: Detalji poravnanja ID-a.
TimeStamp
Prijem svamp informacija o vremenskom okviru, vrijeme početka kada je CAN kontroler inicijaliziran, jedinica je 0ms.
TimeFlag
U smislu da li koristiti vrijeme stamp, 1 je efektivni TimeStamp. TimeFlag i TimeStamp imaju smisla samo kada je okvir primljen.
SendType
Vrsta slanja. = 0 označava normalan tip, = 1 označava jednostruko slanje.
RemoteFlag
Bilo da se radi o udaljenoj zastavici. = 1 označava udaljenu zastavicu, = 0 označava zastavicu podataka.
ExternFlag
Bilo da se radi o vanjskoj zastavici. = 1 označava eksternu zastavicu, = 0 označava standardnu zastavicu.
DataLen
Dužina podataka (<=8), odnosno dužina podataka.
Podaci
Paketni podaci.
Rezervirano
Sistem rezervisan.
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG struktura definira konfiguraciju inicijalizacije CAN-a. Struktura će biti popunjena funkcijom VCI_InitCan.
Član:
AccCode
Primite filtrirani kod prihvatanja.
AccMask
Primite filter masku.
Rezervirano
Rezervirano.
Filter
Metoda filtriranja, koja dozvoljava raspon podešavanja 0-3, pogledajte odeljak 2.2.3 tabele režima filtera za detalje.
Tajming0
SJA1000 Parametar brzine prijenosa, Timing0 (BTR0) .
Tajming1
SJA1000 Parametar brzine prijenosa, Timing1 (BTR1) .
Mode
Način rada, 0 = normalan rad, 1 = način rada samo za slušanje, 2 = testni režim spontanog prijema i slanja.
Napomene:
O postavkama filtera pogledajte: Aneks II: Upute za postavljanje CANparametara.
CAN Timing0 i Timing1 se koriste za postavljanje brzine prijenosa, ova dva parametra se koriste samo pri inicijalizaciji stage.
Konvencionalna referentna tablica Bauda:
CAN brzina prijenosa | Vrijeme 0 (BTR0) | Vrijeme 1 (BTR1) |
10k bps | 0x31 | 0x1C |
20k bps | 0x18 | 0x1C |
40k bps | 0x87 | 0xFF |
50k bps | 0x09 | 0x1C |
80k bps | 0x83 | 0xFF |
100k bps | 0x04 | 0x1C |
125k bps | 0x03 | 0x1C |
200k bps | 0x81 | 0xFA |
250k bps | 0x01 | 0x1C |
400k bps | 0x80 | 0xFA |
500k bps | 0x00 | 0x1C |
666k bps | 0x80 | 0xB6 |
800k bps | 0x00 | 0x16 |
1000k bps | 0x00 | 0x14 |
33.33 Kbps | 0x09 | 0x6F |
66.66 Kbps | 0x04 | 0x6F |
83.33 Kbps | 0x03 | 0x6F |
- Korisnici samo trebaju pratiti SJA1000 (16MHz) da bi postavili parametar brzine prijenosa.
- Adapter ne podržava privremenu brzinu prijenosa ispod 10K.
2.2. OPIS FUNKCIJE
2.2.1. VCI_OpenDevice
Ova funkcija se koristi za povezivanje uređaja.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD rezervisan);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
Rezervirano
Parametri zadržavanja, popunite 0.
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
2.2.2. VCI_CloseDevice
Ova funkcija se koristi za zatvaranje veze.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
2.2.3. VCI_InitCan
Ova funkcija se koristi za inicijalizaciju specificiranog CAN-a.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pinitConfig);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
CANIndex
Indeks CAN kanala, kao kada postoji samo jedan CAN kanal, broj indeksa je 0, ako postoje dva, broj indeksa može biti 0 ili 1.
pInitConfig
Struktura parametara inicijalizacije. Lista parametara članova:
Član | Funkcionalni opis |
pInitConfig->AccCode | AccCode i AccMask mogu raditi zajedno kako bi odredili koji paketi mogu biti prihvaćeni. Ova dva registra se koriste za postavljanje ID-a lijevo poravnat, to jest, najviši bit (Bit31) AccCode i AccMask je poravnat sa najvišim bitom ID vrijednosti. |
pInitConfig->AccMask | O ID poravnanju pogledajte anekse: Aneks I: Detalji poravnanja ID-a. Npr: Ako postavite vrijednost AccCode-a kao 0x24600000 (tj. 0x123 je pomaknut ulijevo za 21 bit), vrijednost AccMask je postavljen na 0x00000000, i tada se mogu prihvatiti samo paketi sa CAN okvirom poruke 0x123 (vrijednost AccMask od 0x00000000 ukazuje da su svi bitovi relevantni |
bitovi). Ako je vrijednost AccCode postavljena na 0x24600000, vrijednost AccMask je postavljena na 0x600000 (0x03 je pomaknuta ulijevo za 21 bit), a tada se mogu prihvatiti samo paketi sa ID okvira CAN poruke 0x120 ~ 0x123 (vrijednost AccMask 0x600000 označava da su osim bit0 ~ bit1 drugi bitovi (bit2 ~ bit10) relevantni bit). Napomena: Ova postavka filtera npramples na standardni okvir, nprample, visoki 11-bit je važeći bit; u slučaju proširenog okvira, a tada je važeći ID 29-bitni. AccCode i AccMask postavljaju visoki 29-bitni kao važeći bit! |
|
pInitConfig->Rezervirano | rezervisano |
pInitConfig->Filter | Postavke načina filtriranja pogledajte odjeljak tabele načina filtriranja. |
pInitConfig->Timing0 | Postavka brzine prenosa T0 |
pInitConfig->Timing1 | Postavka brzine prenosa T1 |
pInitConfig->Mode | Način rada: 0-normalan rad 1-Režim samo za slušanje 2-spontani prijem i testni način slanja (ova vrijednost je isključena iz ZLG biblioteke funkcija) |
Tabela načina filtriranja:
Vrijednost | Ime | Opis |
1 | Primite sve vrste | Pogodan i za standardni i za produženi okvir! |
2 | Primite samo standardni okvir | Pogodan za standardni okvir i produžen |
okvir će biti uklonjen direktno filtracijom! | ||
3 | Primite samo prošireni okvir | Pogodno za prošireni okvir, a standardni okvir će biti uklonjen filtracija direktno! 。 |
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
Npr
2.2.4. VCI_ReadBoardInfo
Ova funkcija se koristi za čitanje informacija o hardveru adaptera. Uopšteno govoreći, može se zanemariti.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redoslijedu počevši od 0. pInfo
VCI_BOARD_INFO se koristi za pohranjivanje pokazivača strukture informacija o uređaju.
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
2.2.5. VCI_GetReceiveNum
Ova funkcija se koristi za specificiranje primljenih, ali nije pročitanih okvira u određenom prijemnom baferu.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampako postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
CANIndex
Indeks CAN kanala.
Povratak:
Vrati okvire koji još nisu pročitani.
Npr
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Ova funkcija se koristi za brisanje bafera za primanje i slanje određenog kanala koji je specificirao
USB-CAN adapter.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampako postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
CANIndex
Indeks CAN kanala.
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
2.2.7. VCI_StartCAN
Ova funkcija se koristi za pokretanje CAN kontrolera i funkciju prijema internog prekida adaptera.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
CANIndex
Indeks CAN kanala.
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
2.2.8. VCI_ResetCAN
Ova funkcija se koristi za resetiranje CAN kontrolera.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
CANIndex
Indeks CAN kanala.
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
2.2.9. VCI_Transmit
Ova funkcija se koristi za slanje okvira CAN poruke.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
CANIndex
Indeks CAN kanala. pPošalji
Prva adresa nizova okvira podataka koji se moraju poslati.
Dužina
Broj okvira podataka koji se moraju poslati, maksimalan broj je 1000, preporučena vrijednost je 48 pri velikoj brzini.
Povratak:
Vrati stvarni broj već poslanih okvira, povratna vrijednost = -1 ukazuje na grešku uređaja.
Npr
2.2.10. VCI_Receive
Ova funkcija se koristi za traženje prijema.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT Vrijeme čekanja);
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
CANIndex
Indeks CAN kanala.
pReceive
Za primanje prvog postavljenog pokazivača okvira podataka.
Len
Duljina niza okvira podataka mora biti veća od 2500 da bi se vratila normalna poruka.
U suprotnom, povratna dužina će biti nula bez obzira da li je poruka primljena ili ne. adapter je postavio bafer od 2000 kadrova za svaki kanal. Na osnovu sopstvenog sistema i radnog okruženja, korisnik može izabrati odgovarajuću dužinu niza od 2500.
Vrijeme čekanja rezervirano.
Povratak:
Vrati broj okvira koji su stvarno pročitani, -1 označava greške uređaja.
Npr
TREĆI DIO DRUGE FUNKCIJE I OPIS STRUKTURE PODATAKA
Ovo poglavlje opisuje druge tipove podataka i funkcije nekompatibilne ZLG biblioteke sučelja sadržane u biblioteci interfejsa USB-CAN adaptera ControlCAN.dll. Molim te
ne pozivati ove funkcije ako koristite kompatibilan ZLG model za sekundarni razvoj kako ne bi utjecao na kompatibilnost.
3.1 OPIS FUNKCIJE
3.1.1. VCI_UsbDeviceReset
Resetujte USB-CAN adapter, potrebno je ponovo otvoriti uređaj nakon resetovanja pomoću VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD rezerviran
Parametri:
DevType
Vrsta uređaja. Pogledajte: Definicija tipa adapterskog uređaja.
DevIndex
Indeks uređaja, nprampda, kada postoji samo jedan USB-CAN adapter, broj indeksa je 0, kada postoji više USB-CAN adaptera, brojevi indeksa u rastućem redosledu počevši od 0.
Rezervirano Rezervirano.
Povratak:
Povratna vrijednost = 1, što znači da je operacija uspješna; = 0 označava da operacija nije uspjela; = -1 označava da uređaj ne postoji.
bRel = VCI_UsbDeviceReset(nDeviceType, Nezavisnost, 0);
3.1.2. VCI_FindUsbDevice2
Kada isti računar koristi više USB-CAN-a, korisnik može koristiti ovu funkciju da pronađe trenutni uređaj.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametri:
pInfo
pInfo se koristi za pohranjivanje parametara prvog pokazivača adrese bafera podataka.
Povratak
Vratite broj USB-CAN adaptera priključenog na računar.
Četvrti dio Funkcije biblioteke interfejsa koristeći proces
Da bismo umnožili funkciju uređaja, dali smo dodatne funkcije ( funkcije predstavljene zelenom pozadinom), ove funkcije uključuju: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Tokom drugog razvoja, ove funkcije se ne moraju nužno pozivati. Čak i ove funkcije se zanemaruju, sve funkcije USB-CAN adaptera se mogu postići.
www.waveshare.com
www.waveshare.com/wiki
Dokumenti / Resursi
![]() |
WAVESHARE USB-CAN Bus Interface Adapter Interface Function Library [pdfUputstvo za upotrebu USB-CAN Bus Interface Adapter Biblioteka funkcija sučelja, USB-CAN, Bus Interface Adapter Biblioteka funkcija sučelja, Biblioteka funkcija sučelja, Biblioteka funkcija |