USB-CAN автобус интерфејс
Функција на интерфејс на адаптерот
Упатство за корисникот на библиотеката
ПРВИОТ ДЕЛ ЗАВРШИVIEW
Ако корисникот само го користи USB-CAN адаптерот за интерфејс на автобусот за да оди на тест за комуникација со CAN bus, а потоа може директно да го користи испорачаниот софтвер USB-CAN Tool за испраќање и примање податоци од тестот.
Доколку корисникот има намера да напише софтверска програма за сопствени производи. Ве молиме внимателно прочитајте ги следните упатства и земете референца од sampкодот што го даваме:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-кан.
Развијте библиотека file :ControlCAN.lib, ControlCAN.DLL
Декларација за функцијата VC верзија file :ControlCAN.h
Декларација на функцијата за верзија на VB file: ControlCAN.bas
ЛабораторијаVIEW Модул за функционален пакет на библиотека за верзија :ControlCAN.llb
Декларација за функцијата за верзија на Делфи file: ControlCAN.pas
ВТОРИ ДЕЛ КОМПАТИБИЛНА БИБЛИОТЕКА ФУНКЦИЈА И СТРУКТУРА НА ПОДАТОЦИ
2.1. ДЕФИНИЦИЈА НА ТИП
2.1.1. Тип на уред
Дефиниција на типот | Тип вредност | Опис |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Структурата VCI_BOARD_INFO содржи информации за уредот за интерфејс од серијата USB-CAN.
Структурата ќе биде пополнета во функцијата VCI_ReadBoardInfo.
Член:
hw_Version
Број на верзија на хардвер, хексадецимална нотација. На пр. 0x0100 претставува V1.00.
fw_Version
Број на верзија на хардвер, хексадецимална нотација. На пр. 0x0100 претставува V1.00.
Страница 2
dr_Version
Број на верзијата на драјверот, хексадецимална нотација. На пр. 0x0100 претставува V1.00.
во_Верзија
Број на верзија на библиотеката за интерфејс, хексадецимална нотација. На пр. 0x0100 претставува V1.00.
irq_Num
Системот е резервиран.
can_Num
Го претставува вкупниот број на CAN канал.
str_Serial_Num
Сериски број на оваа табла картичка.
str_hw_Type
Тип на хардвер, како што е „USBCAN V1.00“ (Забелешка: Вклучува стринг терминатор „\0“).
Резервирано
Системот е резервиран.
2.1.3. VCI_CAN_OBJ
Во функциите VCI_Transmit и VCI_Receive, структурата VCI_CAN_OBJ се користи за пренос на рамката за пораки CAN.
Член:
ID
Идентификатор на порака. Директен формат на ID, порамнет десно, погледнете во: Анекс 1: Детали за усогласување на ID.
TimeStamp
Примање на улamp информации за временската рамка, започнување на тајмингот кога контролерот CAN е иницијализиран, единицата е 0. 1ms.
Временско знаменце
Во однос на тоа дали да се искористи времето улamp, 1е ефективниот TimeStamp. TimeFlag и TimeStamp се значајни само кога рамката е примена.
SendType
Тип на испраќање. = 0 означува Нормален тип, = 1 означува Single Send.
RemoteFlag
Без разлика дали тоа е далечинско знаме. = 1 означува далечинско знаме, = 0 означува знаме со податоци.
Надворешно знаме
Без разлика дали станува збор за екстерно знаме. = 1 означува надворешно знаме, = 0 означува стандардно знаме.
DataLen
Должина на податоците (<=8) , односно должината на податоците.
Податоци
Пакетни податоци.
Резервирано
Системот е резервиран.
2.1.4. VCI_INIT_CONFIG
Структурата VCI_INIT_CONFIG ја дефинира иницијализацијата конфигурација на CAN. Структурата ќе биде пополнета во функцијата VCI_InitCan.
Член:
Accode
Добијте филтриран код за прифаќање.
AccMask
Добијте маска за филтер.
Резервирано
Резервирано.
Филтер
Начин на филтрирање, кој дозволува поставување опсег 0-3, погледнете во делот 2.2.3 од табелата за режим на филтрирање за детали.
Тајминг0
SJA1000 Параметар за брзина на бауд, Тајминг0 (BTR0) .
Тајминг1
SJA1000 Параметар за брзина на бауд, Тајминг1 (BTR1) .
Режим
Работен режим, 0 = нормална работа, 1 = режим само за слушање, 2 = спонтан прием и тест режим на испраќање.
Забелешки:
За поставките на филтерот ве молиме погледнете го: Анекс II: Инструкции за поставување параметар CAN.
CAN Timing0 и Timing1 се користат за поставување брзина на бауд, овие два параметри се користат само при иницијализација stage.
Конвенционална референтна табела на Бауд:
CAN Baud стапка | Време 0 (BTR0) | Време 1 (BTR1) |
10 илјади bps | 0x31 | 0х1С |
20 илјади bps | 0x18 | 0х1С |
40 илјади bps | 0x87 | 0xFF |
50 илјади bps | 0x09 | 0х1С |
80 илјади bps | 0x83 | 0xFF |
100 илјади bps | 0x04 | 0х1С |
125 илјади bps | 0x03 | 0х1С |
200 илјади bps | 0x81 | 0xFA |
250 илјади bps | 0x01 | 0х1С |
400 илјади bps | 0x80 | 0xFA |
500 илјади bps | 0x00 | 0х1С |
666 илјади bps | 0x80 | 0xB6 |
800 илјади bps | 0x00 | 0x16 |
1000 илјади bps | 0x00 | 0x14 |
33.33 Kbps | 0x09 | 0x6F |
66.66 Kbps | 0x04 | 0x6F |
83.33 Kbps | 0x03 | 0x6F |
- Корисниците треба само да го следат SJA1000 (16MHz) за да го постават параметарот Baud rate.
- Адаптерот не поддржува привремено Baud rate под 10K.
2.2. ОПИС НА ФУНКЦИЈАТА
2.2.1. VCI_OpenDevice
Оваа функција се користи за поврзување уреди.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
Резервирано
Параметри за задржување, пополнете 0.
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
2.2.2. VCI_CloseDevice
Оваа функција се користи за затворање на врската.
DWORD __stdповик VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
2.2.3. VCI_InitCan
Оваа функција се користи за иницијализирање на наведеното CAN.
DWORD __stdповик VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIindex,
PVCI_INIT_CONFIG pInitConfig);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
CANIиндекс
Индекс на канал CAN, како на пример кога има само еден CAN канал, бројот на индексот е 0, ако има два, индексниот број може да биде 0 или 1.
pInitConfig
Структура на параметар за иницијализација. Список со параметри на членови:
Член | Функционален опис |
pInitConfig->AccCode | AccCode и AccMask можат да работат заедно за да одредат кои пакети може да се прифатат. Овие два регистри се користат за поставување на ID лево порамнето, односно највисокиот бит (Bit31) од AccCode и AccMask е порамнет со највисокиот бит од вредноста на ID. |
pInitConfig->AccMask | За усогласувањето со ID, погледнете ги анексите: Анекс I: Детали за усогласување на лична карта. На пр.: Ако ја поставите вредноста на AccCode како 0x24600000 (т.е. 0x123 е поместена налево за 21 бит), вредноста на AccMask е поставено на 0x00000000, а потоа може да се прифатат само пакетите со ID на рамката за пораки CAN е 0x123 (вредноста на AcMask од 0x00000000 покажува дека сите битови се релевантни |
битови). Ако вредноста на AccCode е поставена на 0x24600000, вредноста на AccMask е поставена на 0x600000 (0x03 е поместена налево за 21 бит), а потоа може да се прифатат само пакетите со ID на рамката за порака CAN е 0x120 ~ 0x123 (вредност на AccMask 0x600000 покажува дека освен bit0 ~ bit1, други битови (bit2 ~ bit10) се релевантни битови). Забелешка: Оваа поставка за филтер прampлес на стандардната рамка, на прample, високиот 11-битен е валиден бит; во случај на продолжената рамка, и тогаш важечкиот ID е 29-битен. AccCode и AccMask поставија високи 29-битни како валиден бит! |
|
pInitConfig->Резервирано | резервирани |
pInitConfig->Филтер | Поставките за режимот на филтрирање ве молиме погледнете го делот од табелата за режим на филтрирање. |
pInitConfig->Timing0 | Baud rateT0 поставување |
pInitConfig->Timing1 | Baud rateT1 поставување |
pInitConfig->Режим | Начин на работа: 0-нормална работа 1-Режим само за слушање 2-спонтан прием и тест режим на испраќање (оваа вредност е исклучена од библиотеката со функции на ZLG) |
Табела за режим на филтрирање:
Вредност | Име | Опис |
1 | Примајте ги сите видови | Погоден и за стандардна и за продолжена рамка! |
2 | Добијте само стандардна рамка | Погоден за стандардна рамка и продолжен |
рамката ќе се отстрани со директно филтрирање! | ||
3 | Добијте само продолжена рамка | Погоден за продолжена рамка, а стандардната рамка ќе се отстрани со филтрирање директно! . |
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
На пр
2.2.4. VCI_ReadBoardInfo
Оваа функција се користи за читање на информациите за хардверот на адаптерот. Општо земено, може да се игнорира.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex, PVCI_BOARD_INFO pInfo);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, индексниот број е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0. pInfo
VCI_BOARD_INFO се користи за складирање на покажувачот на структурата на информациите на уредот.
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
2.2.5. VCI_GetReceiveNum
Оваа функција се користи за одредување на примените, но не се прочитани рамки во назначениот приемен тампон.
DWORD __stdповик VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIindex);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
CANIиндекс
Индекс на канал CAN.
Се враќа:
Вратете ги рамки кои сè уште не се прочитани.
На пр
#include „ControlCan.h“ int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Оваа функција се користи за чистење на тампонот за примање и испраќање на назначениот канал наведен од
USB-CAN адаптер.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIindex);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
CANIиндекс
Индекс на канал CAN.
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
2.2.7. VCI_StartCAN
Оваа функција се користи за стартување на CAN контролерот и функцијата за прием на внатрешен прекин на адаптерот.
DWORD __stdповик VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIindex);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
CANIиндекс
Индекс на канал CAN.
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
2.2.8. VCI_ResetCAN
Оваа функција се користи за ресетирање на CAN контролерот.
DWORD __stdповик VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIindex);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
CANIиндекс
Индекс на канал CAN.
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
2.2.9. VCI_Transmit
Оваа функција се користи за испраќање на рамка за порака CAN.
DWORD __stdcall VCI_Transmit(Typ на уред DWORD,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
CANIиндекс
Индекс на канал CAN. pИспрати
Првата адреса на низите на податочните рамки што треба да се испратат.
Должина
Бројот на податочни рамки што треба да се испратат, максималниот број е 1000, препорачаната вредност е 48 при голема брзина.
Се враќа:
Вратете го вистинскиот број на веќе испратени рамки, повратната вредност = -1 укажува на грешка на уредот.
На пр
2.2.10. VCI_Receive
Оваа функција се користи за барање прием.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT Waittime);
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
CANIиндекс
Индекс на канал CAN.
прими
За да го примите првиот сет покажувач на податочните рамки.
Лен
Должината на низата на податочната рамка мора да биде повеќе од 2500 за да се врати нормалната порака.
Во спротивно, должината на враќањето ќе биде нула без разлика дали пораката е примена или не. адаптерот постави бафер од 2000 кадри за секој канал. Врз основа на сопствениот систем и работна средина, корисникот може да избере соодветна должина на низа од 2500.
Времето на чекање е резервирано.
Се враќа:
Вратете го бројот на рамки што всушност биле прочитани, -1 означува грешки на уредот.
На пр
ТРЕТ ДЕЛ ДРУГИ ФУНКЦИИ И ОПИС НА СТРУКТУРАТА НА ПОДАТОЦИ
Ова поглавје опишува други типови на податоци и функции на некомпатибилната збирка интерфејс на ZLG содржана во библиотеката за интерфејс на USB-CAN адаптер ControlCAN.dll. Ве молиме да
не ги повикувајте овие функции ако користите компатибилен ZLG модел за секундарен развој за да не влијае на компатибилноста.
3.1 ОПИС НА ФУНКЦИЈАТА
3.1.1. VCI_UsbDeviceReset
Ресетирајте го USB-CAN адаптерот, треба повторно да го отворите уредот по ресетирањето со користење на VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reserved
Параметри:
DevType
Тип на уред. Видете: Дефиниција за тип на уред на адаптер.
DevIndex
Индекс на уреди, на прampле, кога има само еден USB-CAN адаптер, бројот на индексот е 0, кога има повеќе USB-CAN адаптери, индексните броеви во растечки редослед почнувајќи од 0.
Резервирано Резервирано.
Се враќа:
Повратна вредност = 1, што значи дека операцијата е успешна; = 0 покажува дека операцијата не успеа; = -1 покажува дека уредот не постои.
bRel = VCI_UsbDeviceReset (nType на уред, независност, 0);
3.1.2. VCI_FindUsbDevice2
Кога истиот компјутер користи повеќе USB-CAN, корисникот може да ја користи оваа функција за да го пронајде тековниот уред.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Параметри:
pInfo
pInfo се користи за складирање на параметрите на првиот адресен покажувач на баферот за податоци.
Се враќа
Вратете го бројот на USB-CAN адаптерот приклучен на компјутерот.
Четврти дел Функции на интерфејс библиотека со користење на процес
За да ја умножиме функцијата на уредот, обезбедивме дополнителни функции (функции претставени со зелена позадина), овие функции вклучуваат: VCI_FindUsbDevice2 VCI_UsbDeviceReset. За време на вториот развој, овие функции не мора да се повикуваат. Дури и овие функции се игнорираат, може да се постигнат сите функции на адаптерот USB-CAN.
www.waveshare.com
www.waveshare.com/wiki
Документи / ресурси
![]() |
WAVESHARE USB-CAN Bus Inter face адаптер за функционална библиотека [pdf] Упатство за употреба USB-CAN Bus Interface адаптер интерфејс библиотека за функции, USB-CAN, Bus Inter face адаптер функционална библиотека, библиотека со функции за интерфејс, функционална библиотека |