Logo WAVESHAREInterfejs magistrali USB-CAN
Funkcja interfejsu adaptera
Instrukcja obsługi bibliotekiBiblioteka funkcji interfejsu adaptera interfejsu USB CAN Bus WAVESHARE

CZĘŚĆ PIERWSZA ZAKOŃCZONAVIEW

Jeśli użytkownik po prostu użyje adaptera interfejsu magistrali USB-CAN, aby przejść do testu komunikacji magistrali CAN, może bezpośrednio użyć dostarczonego oprogramowania USB-CAN Tool do wysyłania i odbierania danych testu.
Jeśli użytkownik zamierza napisać oprogramowanie dla własnych produktów. Proszę uważnie przeczytać poniższe instrukcje i odnieść się do sampkod, który zapewniamy:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Rozwijaj bibliotekę file :ControlCAN.lib, ControlCAN.DLL
Deklaracja funkcji wersji VC file :SterowanieCAN.h
Deklaracja funkcji wersji VB file: ControlCAN.bas
LaboratoriumVIEW Moduł pakietu funkcji biblioteki wersji: ControlCAN.llb
Deklaracja funkcji wersji Delphi file: ControlCAN.pas

CZĘŚĆ DRUGA KOMPATYBILNA BIBLIOTEKA FUNKCJI I STRUKTURA DANYCH

2.1. DEFINICJA TYPU
2.1.1. Rodzaj urządzenia

Definicja typu Wpisz wartość Opis
DEV_USBCAN2 4 USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN

2.1.2. VCI_BOARD_INFO
Struktura VCI_BOARD_INFO zawiera informacje o urządzeniu karty interfejsu USB-CAN.
Struktura zostanie wypełniona funkcją VCI_ReadBoardInfo.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 1

Członek:
hw_wersja
Numer wersji sprzętu, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
fw_wersja
Numer wersji sprzętu, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
Strona 2
dr_Wersja

Numer wersji sterownika, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
in_Version
Numer wersji biblioteki interfejsu, zapis szesnastkowy. Np. 0x0100 reprezentuje V1.00.
irq_Num
System zarezerwowany.
can_Num
Reprezentuje całkowitą liczbę kanałów CAN.
str_Serial_Num
Numer seryjny tej karty pokładowej.
str_hw_Type
Typ sprzętu, np. „USBCAN V1.00” (Uwaga: zawiera terminator ciągu znaków „\0”).
Skryty
System zarezerwowany.
2.1.3. VCI_CAN_OBJ
W funkcjach VCI_Transmit i VCI_Receive do przesyłania ramki danych CAN wykorzystywana jest struktura VCI_CAN_OBJ.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys

Członek:
ID
Identyfikator wiadomości. Format Direct ID, wyrównany do prawej strony, patrz: Załącznik nr 1: Szczegóły dotyczące wyrównania identyfikatorów.
CzasStamp
Odbiór śwamp informacja o ramce czasowej, rozpoczęcie odmierzania czasu po inicjalizacji sterownika CAN, jednostką jest 0 ms.
Flaga czasu
W kwestii wykorzystania czasu ulamp, 1 to efektywny TimeStamp. TimeFlag i TimeStamp mają znaczenie tylko wtedy, gdy ramka zostanie odebrana.
Typ wysyłania
Typ wysyłania. = 0 oznacza typ normalny, = 1 oznacza wysyłanie pojedyncze.
Zdalna flaga
Niezależnie od tego, czy jest to odległa flaga. = 1 oznacza flagę zdalną, = 0 oznacza flagę danych.
Zewnętrzna flaga
Niezależnie od tego, czy jest to flaga zewnętrzna. = 1 oznacza flagę zewnętrzną, = 0 oznacza flagę standardową.
DataLen
Długość danych (<= 8), czyli długość danych.
Dane
Dane pakietowe.
Skryty
System zarezerwowany.
2.1.4. VCI_INIT_CONFIG
Struktura VCI_INIT_CONFIG definiuje konfigurację inicjalizacji CAN. Struktura zostanie wypełniona funkcją VCI_InitCan.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 2

Członek:
Kod dostępu
Otrzymaj przefiltrowany kod akceptacji.
AccMaska
Odbierz maskę filtrującą.
Skryty
Skryty.
Filtr
Metoda filtrowania, umożliwiająca ustawienie w zakresie 0-3, szczegółowe informacje można znaleźć w sekcji 2.2.3 tabeli trybów filtra.
Czas0
SJA1000 Parametr szybkości transmisji, Timing0 (BTR0) .
Czas1
SJA1000 Parametr szybkości transmisji, Timing1 (BTR1) .
Tryb
Tryb pracy, 0 = normalna praca, 1 = tryb tylko nasłuchiwania, 2 = tryb spontanicznego przyjmowania i testowania wysyłania.
Uwagi:
Informacje na temat ustawień filtra można znaleźć w: Załącznik II: Instrukcje konfiguracji parametrów CAN.
CAN Timing0 i Timing1 służą do ustawiania szybkości transmisji, te dwa parametry są używane tylko podczas inicjalizacjitage.
Konwencjonalna tabela referencyjna Baud:

Szybkość transmisji CAN Czas0(BTR0) Czas1(BTR1)
10 tys. bps 0x31 0x1C
20 tys. bps 0x18 0x1C
40 tys. bps 0x87 0xFF
50 tys. bps 0x09 0x1C
80 tys. bps 0x83 0xFF
100 tys. bps 0x04 0x1C
125 tys. bps 0x03 0x1C
200 tys. bps 0x81 0xFA
250 tys. bps 0x01 0x1C
400 tys. bps 0x80 0xFA
500 tys. bps 0x00 0x1C
666 tys. bps 0x80 0xB6
800 tys. bps 0x00 0x16
1000 tys. bps 0x00 0x14
33.33 kbps 0x09 0x6F
66.66 kbps 0x04 0x6F
83.33 kbps 0x03 0x6F
  1. Użytkownicy muszą jedynie postępować zgodnie z SJA1000 (16 MHz), aby ustawić parametr szybkości transmisji.
  2. Adapter nie obsługuje tymczasowo szybkości transmisji poniżej 10K.

2.2. OPIS FUNKCJI
2.2.1. VCI_OpenDevice
Funkcja ta służy do łączenia urządzeń.
DWORD __stdcall VCI_OpenDevice(DWORD DevType, DWORD DevIndex, DWORD zarezerwowane);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
Skryty
Parametry przechowywania, wpisz 0.
Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 3

2.2.2. VCI_CloseDevice
Funkcja ta służy do zamknięcia połączenia.
DWORD __stdcall VCI_CloseDevice(DWORD DevType, DWORD DevIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 4

2.2.3. VCI_InitCan
Ta funkcja służy do inicjalizacji określonej sieci CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);

Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN, np. gdy jest tylko jeden kanał CAN, numer indeksu wynosi 0, jeśli są dwa, numer indeksu może wynosić 0 lub 1.
pInitConfig
Struktura parametrów inicjalizacji. Lista parametrów prętów:

Członek Opis funkcjonalny
pInitConfig->AccCode AccCode i AccMask mogą współpracować, aby określić, które pakiety mogą zostać zaakceptowane. Te dwa rejestry służą do ustawienia identyfikatora wyrównanego do lewej, to znaczy najwyższy bit (Bit31) kodu AccCode i AccMask jest wyrównany z najwyższym bitem wartości identyfikatora.
pInitConfig->AccMask Informacje na temat dostosowania identyfikatorów znajdują się w załącznikach: Załącznik I:
Szczegóły wyrównania identyfikatora.
Np.: Jeśli ustawisz wartość AccCode na 0x24600000 (tzn. 0x123 zostanie przesunięte w lewo o 21 bitów), wartość AccMask
jest ustawiony na 0x00000000 i wtedy akceptowane mogą być tylko pakiety z identyfikatorem ramki danych CAN wynoszącym 0x123 (wartość AccMask wynosząca 0x00000000 wskazuje, że wszystkie bity są istotne
bity). Jeśli wartość AccCode jest ustawiona na 0x24600000, wartość AccMask jest ustawiona na 0x600000 (0x03 jest przesunięta w lewo o 21 bitów), a wówczas akceptowane mogą być tylko pakiety z identyfikatorem ramki komunikatów CAN wynoszącym 0x120 ~ 0x123 (wartość AccMask
0x600000 wskazuje, że oprócz bitów 0 ~ bitów 1 inne bity (bit2 ~ bit10) są istotne).
Notatka: To ustawienie filtra npamples do standardowej ramki, npample, wysoki 11-bitowy bit jest prawidłowym bitem; w przypadku ramki rozszerzonej, wówczas prawidłowy identyfikator jest 29-bitowy. AccCode i AccMask ustawiają wysoki 29-bitowy bit jako prawidłowy!
pInitConfig->Zarezerwowane skryty
pInitConfig->Filtr Ustawienia trybu filtrowania znajdują się w części tabeli trybów filtrowania.
pInitConfig->Timing0 Ustawienie szybkości transmisji T0
pInitConfig->Timing1 Ustawienie szybkości transmisji T1
pInitConfig->Tryb Tryb pracy:
0-normalna praca
1-Tryb tylko słuchania
2-spontaniczny tryb testowy przyjmowania i wysyłania (ta wartość jest wyłączona z biblioteki funkcji ZLG)

Tabela trybów filtra:

Wartość Nazwa Opis
1 Otrzymuj wszystkie typy Pasuje zarówno do ramy standardowej, jak i rozszerzonej!
2 Otrzymuj tylko standardową ramkę Pasuje do standardowej ramy i jest przedłużany
ramka zostanie usunięta bezpośrednio przez filtrację!
3 Otrzymuj tylko rozszerzoną ramkę Pasuje do przedłużonej ramy, a standardowa rama zostanie usunięta
filtracja bezpośrednio! 。

Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.
Np

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 4

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 6

2.2.4. Informacje VCI_ReadBoard
Ta funkcja służy do odczytywania informacji o sprzęcie adaptera. Generalnie można to pominąć.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex, PVCI_BOARD_INFO pInfo);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w kolejności rosnącej, zaczynając od 0. pInfo
VCI_BOARD_INFO służy do przechowywania wskaźnika struktury informacji o urządzeniu.
Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 7

2.2.5. VCI_GetReceiveNum
Ta funkcja służy do określania odebranych, ale nie przeczytanych ramek w wyznaczonym buforze odbiorczym.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Zwróć ramki, które nie zostały jeszcze przeczytane.
Np
#include „ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Ta funkcja służy do czyszczenia bufora odbioru i wysyłania wyznaczonego kanału określonego przez
Adapter USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 8

2.2.7. VCI_StartCAN
Ta funkcja służy do uruchamiania kontrolera CAN i funkcji odbioru wewnętrznego przerwania adaptera.
DWORD __stdcall VCI_StartCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 9

2.2.8. VCI_ResetCAN
Funkcja ta służy do resetowania sterownika CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 10

2.2.9. Transmisja VCI
Ta funkcja służy do wysyłania ramki danych CAN.
DWORD __stdcall VCI_Transmit(Typ urządzenia DWORD, Ind urządzenia DWORD, DWORD CANInd, PVCI_CAN_OBJ pSend, Długość DWORD);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN. pWyślij
Pierwszy adres tablic ramek danych, które mają zostać wysłane.
Długość
Liczba ramek danych, które mają zostać wysłane, maksymalna liczba to 1000, zalecana wartość to 48 przy dużej prędkości.
Zwroty:
Zwraca rzeczywistą liczbę już wysłanych ramek, zwracana wartość = -1 wskazuje na błąd urządzenia.
Np
Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 11

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 12

2.2.10. VCI_Odbiór
Ta funkcja służy do żądania odbioru.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
CANIndeks
Indeks kanału CAN.
pOdbierz
Aby otrzymać pierwszy ustawiony wskaźnik ramek danych.
Len
Aby zwrócić normalny komunikat, długość tablicy ramki danych musi być większa niż 2500.
W przeciwnym razie długość zwracana będzie wynosić zero niezależnie od tego, czy wiadomość zostanie odebrana, czy nie. adapter ustawił bufor na 2000 ramek dla każdego kanału. W oparciu o własny system i środowisko pracy użytkownik może wybrać odpowiednią długość tablicy spośród 2500.
Czas oczekiwania zarezerwowany.
Zwroty:
Zwraca liczbę faktycznie odczytanych ramek, -1 oznacza błędy urządzenia.
Np
Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 13

CZĘŚĆ TRZECIA INNE FUNKCJE I OPIS STRUKTURY DANYCH

W tym rozdziale opisano inne typy danych i funkcje niekompatybilnej biblioteki interfejsu ZLG zawartej w bibliotece interfejsu adaptera USB-CAN ControlCAN.dll. Proszę zrób
nie wywołuj tych funkcji, jeśli używasz kompatybilnego modelu ZLG do rozwoju wtórnego, aby nie wpływać na kompatybilność.
3.1 FUNKCJA OPIS
3.1.1. Reset VCI_UsbDevice
Zresetuj adapter USB-CAN, po zresetowaniu należy ponownie otworzyć urządzenie za pomocą VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType, DWORD DevIndex, DWORD zarezerwowane
Parametry:
Typ dewelopera
Rodzaj urządzenia. Patrz: Definicja typu urządzenia adapterowego.
DevIndex
Indeks urządzeń, npample, gdy jest tylko jeden adapter USB-CAN, numer indeksu wynosi 0, w przypadku wielu adapterów USB-CAN, numery indeksów są w porządku rosnącym, zaczynając od 0.
Zarezerwowane Zarezerwowane.
Zwroty:
Wartość zwracana = 1, co oznacza, że ​​operacja się powiodła; = 0 oznacza, że ​​operacja nie powiodła się; = -1 oznacza, że ​​urządzenie nie istnieje.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 14

bRel = VCI_UsbDeviceReset(nDeviceType, niezależność, 0);
3.1.2. VCI_FindUsbDevice2
Jeśli ten sam komputer korzysta z wielu portów USB-CAN, użytkownik może skorzystać z tej funkcji, aby znaleźć bieżące urządzenie.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametry:
pInfo
pInfo służy do przechowywania parametrów wskaźnika adresu pierwszego bufora danych.
Zwroty
Zwróć numer adaptera USB-CAN podłączonego do komputera.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 15

Część czwarta Funkcje biblioteki interfejsu wykorzystujące proces
Aby zwielokrotnić funkcjonalność urządzenia, udostępniliśmy dodatkowe funkcje (funkcje przedstawione na zielonym tle), do tych funkcji należą: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Podczas drugiego rozwoju funkcje te nie muszą być koniecznie wywoływane. Nawet te funkcje są ignorowane, można uzyskać wszystkie funkcje adaptera USB-CAN.

Biblioteka funkcji interfejsu adaptera interfejsu USB CAN WAVESHARE - rys. 16

www.waveshare.com
www.waveshare.com/wiki

Dokumenty / Zasoby

Biblioteka funkcji interfejsu adaptera interfejsu USB-CAN WAVESHARE [plik PDF] Instrukcja obsługi
Biblioteka funkcji interfejsu magistrali USB-CAN, biblioteka funkcji interfejsu adaptera, USB-CAN, biblioteka funkcji interfejsu magistrali, biblioteka funkcji interfejsu, biblioteka funkcji

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *