USB-CAN magistralės sąsaja
Adapterio sąsajos funkcija
Bibliotekos vartotojo instrukcija
PIRMA DALIS BAIGTAVIEW
Jei vartotojas tiesiog naudoja USB-CAN magistralės sąsajos adapterį, kad galėtų atlikti CAN magistralės ryšio testą, tada jis gali tiesiogiai naudoti pridedamą USB-CAN Tool programinę įrangą, kad išsiųstų ir gautų testo duomenis.
Jei vartotojas ketina parašyti programinę įrangą savo produktams. Atidžiai perskaitykite šias instrukcijas ir remkitės sampmes suteikiame kodą:
⑴ C++ kūrėjas ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Sukurti biblioteką file :ControlCAN.lib, ControlCAN.DLL
VC versijos funkcijos deklaracija file :ControlCAN.h
VB versijos funkcijos deklaracija file: ControlCAN.bas
LabVIEW versijos bibliotekos funkcijų paketo modulis: ControlCAN.llb
Delphi versijos funkcijos deklaracija file: ControlCAN.pas
ANTRA DALIS SUDERINAMA FUNKCIJŲ BIBLIOTEKA IR DUOMENŲ STRUKTŪRA
2.1. TIPO APIBRĖŽIMAS
2.1.1. Įrenginio tipas
Tipo apibrėžimas | Tipo reikšmė | Aprašymas |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
VCI_BOARD_INFO struktūroje yra USB-CAN serijos sąsajos kortelės įrenginio informacija.
Struktūra bus užpildyta funkcija VCI_ReadBoardInfo.
Narys:
hw_Version
Aparatinės įrangos versijos numeris, šešioliktainis žymėjimas. Pvz., 0x0100 reiškia V1.00.
fw_Version
Aparatinės įrangos versijos numeris, šešioliktainis žymėjimas. Pvz., 0x0100 reiškia V1.00.
2 psl
dr_Version
Tvarkyklės versijos numeris, šešioliktainis žymėjimas. Pvz., 0x0100 reiškia V1.00.
in_Version
Sąsajos bibliotekos versijos numeris, šešioliktainis žymėjimas. Pvz., 0x0100 reiškia V1.00.
irq_Num
Sistema rezervuota.
can_Num
Nurodo bendrą CAN kanalų skaičių.
str_Serial_Num
Šios lentos kortelės serijos numeris.
str_hw_Tipas
Aparatinės įrangos tipas, pvz., „USBCAN V1.00“ (Pastaba: apima eilutės terminą „\0“).
Rezervuota
Sistema rezervuota.
2.1.3. VCI_CAN_OBJ
Funkcijose VCI_Transmit ir VCI_Receive, CAN pranešimų kadrui perduoti naudojama VCI_CAN_OBJ struktūra.
Narys:
ID
Pranešimo identifikatorius. Tiesioginis ID formatas, sulygiuotas dešinėje, žr.: Pirmas priedas: ID lygiavimo informacija.
TimeStamp
Priimant švamp informacija apie laiko tarpą, pradžios laikas, kai CAN valdiklis inicijuojamas, vienetas yra 0. 1ms.
Laiko vėliavėlė
Kalbant apie tai, ar naudoti laiką švamp, 1 yra efektyvus TimeStamp. TimeFlag ir TimeStamp yra prasmingi tik tada, kai gaunamas kadras.
SendType
Siuntimo tipas. = 0 reiškia įprastą tipą, = 1 reiškia vieną siuntimą.
Nuotolinė vėliavėlė
Nesvarbu, ar tai nuotolinė vėliava. = 1 rodo nuotolinę vėliavėlę, = 0 nurodo duomenų vėliavėlę.
Išorinė vėliava
Nesvarbu, ar tai išorinė vėliava. = 1 žymi išorinę vėliavėlę, = 0 – standartinę vėliavėlę.
DataLen
Duomenų ilgis (<=8) , tai yra duomenų ilgis.
Duomenys
Paketiniai duomenys.
Rezervuota
Sistema rezervuota.
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG struktūra apibrėžia CAN inicijavimo konfigūraciją. Struktūra bus užpildyta funkcija VCI_InitCan.
Narys:
AccCode
Gaukite filtruotą priėmimo kodą.
AccMask
Gaukite filtro kaukę.
Rezervuota
Rezervuota.
Filtruoti
Filtravimo metodas, leidžiantis nustatyti diapazoną 0–3, išsamesnės informacijos ieškokite filtro režimų lentelės 2.2.3 skyriuje.
Laikas 0
SJA1000 Prasidėjimo greičio parametras, Timing0 (BTR0) .
Laikas 1
SJA1000 Prasidėjimo greičio parametras, Timing1 (BTR1) .
Režimas
Darbo režimas, 0 = normalus veikimas, 1 = tik klausymo režimas, 2 = spontaniškas priėmimas ir siuntimo bandymo režimas.
Pastabos:
Apie filtro nustatymus skaitykite: II priedas: CANparametro nustatymo instrukcijos.
CAN Timing0 ir Timing1 naudojami duomenų perdavimo spartai nustatyti, šie du parametrai naudojami tik inicijuojanttage.
Įprasta Baud atskaitos lentelė:
CAN Baud norma | Laikas0 (BTR0) | Laikas1 (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 |
- Vartotojams tereikia vadovautis SJA1000 (16MHz), kad nustatytų perdavimo spartos parametrą.
- Adapteris laikinai nepalaiko mažesnio nei 10 XNUMX perdavimo spartos.
2.2. FUNKCIJOS APRAŠYMAS
2.2.1. VCI_OpenDevice
Ši funkcija naudojama prietaisams prijungti.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD rezervuotas);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
Rezervuota
Išlaikymo parametrai, įveskite 0.
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
2.2.2. VCI_CloseDevice
Ši funkcija naudojama ryšiui uždaryti.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
2.2.3. VCI_InitCan
Ši funkcija naudojama inicijuoti nurodytą CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
CANindeksas
CAN kanalo indeksas, pvz., kai yra tik vienas CAN kanalas, indekso numeris yra 0, jei yra du, indekso numeris gali būti 0 arba 1.
pInitConfig
Inicijavimo parametrų struktūra. Parametrų narių sąrašas:
narys | Funkcinis aprašymas |
pInitConfig->AccCode | AccCode ir AccMask gali dirbti kartu, kad nustatytų, kurie paketai gali būti priimti. Šie du registrai naudojami ID sulygiuoti kairėje pusėje, ty didžiausias AccCode bitas (Bit31), o AccMask suderinamas su aukščiausiu ID reikšmės bitu. |
pInitConfig->AccMask | Apie ID lygiavimą žr. priedus: I priedas: ID lygiavimo informacija. Pvz.: Jei AccCode reikšmę nustatote kaip 0x24600000 (ty 0x123 yra perkeltas į kairę 21 bitu), AccMask reikšmė yra nustatytas į 0x00000000, tada galima priimti tik paketus, kurių CAN pranešimo kadro ID yra 0x123 (AccMask reikšmė 0x00000000 rodo, kad visi bitai yra svarbūs |
bitai). Jei AccCode reikšmė nustatyta į 0x24600000, AccMask reikšmė nustatoma į 0x600000 (0x03 perkeliama į kairę 21 bitu), tada galima priimti tik paketus, kurių CAN pranešimo rėmelio ID yra 0x120 ~ 0x123 (AccMask reikšmė 0x600000 rodo, kad be bit0 ~ bit1 kiti bitai (bit2 ~ bit10) yra svarbūs bitai). Pastaba: Šis filtro nustatymas pvzampprie standartinio rėmo, pvzample, aukštas 11 bitų yra galiojantis bitas; išplėstinio kadro atveju, tada galiojantis ID yra 29 bitų. „AccCode“ ir „AccMask“ kaip galiojantį bitą nustatė 29 bitus! |
|
pInitConfig->Rezervuota | rezervuota |
pInitConfig->Filtras | Filtravimo režimo nustatymus skaitykite filtro režimų lentelės skyriuje. |
pInitConfig->Timing0 | Baud rateT0 nustatymas |
pInitConfig->Timing1 | Baud rateT1 nustatymas |
pInitConfig->Mode | Darbo režimas: 0 - normalus veikimas 1 – Tik klausymo režimas 2 spontaniško priėmimo ir siuntimo bandymo režimas (ši reikšmė neįtraukta į ZLG funkcijų biblioteką) |
Filtro režimo lentelė:
Vertė | Vardas | Aprašymas |
1 | Gaukite visų tipų | Tinka tiek standartiniam, tiek prailgintam rėmui! |
2 | Gaukite tik standartinį rėmelį | Tinka standartiniam rėmui ir prailgintam |
rėmas bus pašalintas tiesiogiai filtruojant! | ||
3 | Gaukite tik išplėstinį kadrą | Tinka išplėstiniam rėmui, o standartinis rėmas bus pašalintas tiesioginis filtravimas! . |
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
Pvz
2.2.4. VCI_ReadBoardInfo
Ši funkcija naudojama adapterio aparatinės įrangos informacijai nuskaityti. Apskritai, tai gali būti ignoruojama.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0. pInfo
VCI_BOARD_INFO naudojamas įrenginio informacijos struktūros žymekliui saugoti.
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
2.2.5. VCI_GetReceiveNum
Ši funkcija naudojama nurodytame priėmimo buferyje gautiems, bet nenuskaitytiems kadrams nurodyti.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzampkai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
CANindeksas
CAN kanalo indeksas.
Grąžinimai:
Grąžinti dar neskaitytus kadrus.
Pvz
#include "ControlCan.h" int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Ši funkcija naudojama norint išvalyti nurodyto kanalo priėmimo ir siuntimo buferį
USB-CAN adapteris.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzampkai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
CANindeksas
CAN kanalo indeksas.
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
2.2.7. VCI_StartCAN
Ši funkcija naudojama CAN valdikliui ir adapterio vidinei pertraukų priėmimo funkcijai paleisti.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
CANindeksas
CAN kanalo indeksas.
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
2.2.8. VCI_ResetCAN
Ši funkcija naudojama CAN valdikliui nustatyti iš naujo.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
CANindeksas
CAN kanalo indeksas.
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
2.2.9. VCI_Transmit
Ši funkcija naudojama CAN pranešimo rėmeliui siųsti.
DWORD __stdcall VCI_Transmit(DWORD įrenginio tipas,DWORD įrenginio ind.,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD ilgis);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
CANindeksas
CAN kanalo indeksas. pSiųsti
Pirmasis duomenų rėmelių masyvų, kuriuos reikia išsiųsti, adresas.
Ilgis
Duomenų kadrų, kuriuos reikia siųsti, skaičius, maksimalus skaičius yra 1000, rekomenduojama reikšmė yra 48 dideliu greičiu.
Grąžinimai:
Grąžinti faktinį jau išsiųstų kadrų skaičių, grąžinama reikšmė = -1 rodo įrenginio klaidą.
Pvz
2.2.10. VCI_Gauti
Ši funkcija naudojama prašyti priimti.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
CANindeksas
CAN kanalo indeksas.
pPriimti
Norėdami gauti pirmąjį duomenų rėmelių nustatytą žymeklį.
Len
Duomenų rėmelio masyvo ilgis turi būti didesnis nei 2500, kad būtų grąžintas įprastas pranešimas.
Priešingu atveju grąžinimo ilgis bus lygus nuliui, nesvarbu, ar pranešimas gautas, ar ne. adapteris kiekvienam kanalui nustatė 2000 kadrų buferį. Atsižvelgdamas į savo sistemą ir darbo aplinką, vartotojas gali pasirinkti tinkamą masyvo ilgį nuo 2500.
Laukimo laikas rezervuotas.
Grąžinimai:
Grąžina faktiškai nuskaitytų kadrų skaičių, -1 rodo įrenginio klaidas.
Pvz
TREČIA DALIS KITOS FUNKCIJOS IR DUOMENŲ STRUKTŪROS APRAŠYMAS
Šiame skyriuje aprašomi kiti nesuderinamos ZLG sąsajos bibliotekos duomenų tipai ir funkcijos, esančios USB-CAN adapterio sąsajos bibliotekoje ControlCAN.dll. Prašau padaryti
Nekvieskite šių funkcijų, jei antriniam vystymui naudokite suderinamą ZLG modelį, kad nepakenktumėte suderinamumui.
3.1 FUNKCIJOS APRAŠYMAS
3.1.1. VCI_UsbDeviceReset
Iš naujo nustatykite USB-CAN adapterį. Iš naujo nustatykite įrenginį naudodami VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD rezervuotas
Parametrai:
DevType
Įrenginio tipas. Žr.: Adapterio įrenginio tipo apibrėžimas.
DevIndex
Įrenginio indeksas, pvzample, kai yra tik vienas USB-CAN adapteris, indekso numeris yra 0, kai yra keli USB-CAN adapteriai, indekso numeriai didėjančia tvarka, pradedant nuo 0.
Rezervuota Rezervuota.
Grąžinimai:
Grąžinama reikšmė = 1, o tai reiškia, kad operacija sėkminga; = 0 rodo, kad operacija nepavyko; = -1 reiškia, kad įrenginio nėra.
bRel = VCI_UsbDeviceReset(nDeviceType, Nepriklausomybė, 0);
3.1.2. VCI_FindUsbDevice2
Kai tas pats kompiuteris naudoja kelis USB CAN, vartotojas gali naudoti šią funkciją, kad surastų esamą įrenginį.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametrai:
pInfo
pInfo naudojama pirmojo duomenų buferio adreso rodyklės parametrams saugoti.
Grąžina
Grąžinkite prie kompiuterio prijungto USB-CAN adapterio numerį.
Ketvirta dalis Sąsajos bibliotekos funkcijos naudojant procesą
Siekdami padauginti įrenginio funkciją, pateikėme papildomų funkcijų (funkcijos pateikiamos žaliame fone), šios funkcijos apima: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Antrojo kūrimo metu šios funkcijos nebūtinai turi būti naudojamos. Netgi į šias funkcijas nepaisoma, galima pasiekti visas USB-CAN adapterio funkcijas.
www.waveshare.com
www.waveshare.com/wiki
Dokumentai / Ištekliai
![]() |
WAVESHARE USB-CAN magistralės sąsajos adapterio sąsajos funkcijų biblioteka [pdfNaudojimo instrukcija USB-CAN magistralės sąsajos adapterio sąsajos funkcijų biblioteka, USB-CAN, magistralės sąsajos adapterio sąsajos funkcijų biblioteka, sąsajos funkcijų biblioteka, funkcijų biblioteka |