USB-CAN автобус интерфейси
Адаптер интерфейсинин функциясы
Китепкананы колдонуучу нускама
БИРИНЧИ БӨЛҮМ БҮТКӨНVIEW
Эгерде колдонуучу жөн гана USB-CAN автобус интерфейсинин адаптерин CAN автобус байланыш тестине өтүү үчүн колдонсо, анда ал тесттин маалыматтарын жөнөтүү жана кабыл алуу үчүн берилген USB-CAN Tool программасын түздөн-түз колдоно алат.
Колдонуучу өз продукциясы үчүн программалык камсыздоону жазууну кааласа. Сураныч, төмөнкү нускамаларды кунт коюп окуп чыгыңыз жана сampбиз камсыз кылган код:
⑴ 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
Delphi версиясынын функция декларациясы file: ControlCAN.pas
ЭКИНЧИ БӨЛҮМ ТИЕШЕЛҮҮ ФУНКЦИЯЛАР КИТЕПКАНАСЫ ЖАНА МААЛЫМАТ ТҮЗҮМҮ
2.1. ТИП АНЫКТОО
2.1.1. Түзмөк түрү
Type Definition | Маани териңиз | Description |
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ду билдирет.
in_Version
Интерфейс китепканасынын версия номери, он алтылык белги. Мисалы, 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 форматы, оңго тегизделген, караңыз: Биринчи тиркеме: ID тегиздөө чоо-жайы.
TimeStamp
Кабыл алуу стamp убакыт алкагы жөнүндө маалымат, CAN контроллери инициализацияланганда убакытты баштоо, бирдик 0. 1ms.
TimeFlag
Убакытты пайдалануу керекпи жагынан стamp, 1 эффективдүү TimeStamp. TimeFlag жана TimeStamp кадр алынганда гана мааниге ээ болот.
SendType
Жөнөтүү түрү. = 0 Кадимки түрүн көрсөтөт, = 1 Бирдиктүү жөнөтүүнү билдирет.
RemoteFlag
Алыскы желек болобу. = 1 алыскы желекти, = 0 маалымат желегин көрсөтөт.
ExternFlag
Бул тышкы желек болобу. = 1 тышкы желекти, = 0 стандарттуу желекти билдирет.
DataLen
Маалыматтын узундугу (<=8), башкача айтканда, берилиштердин узундугу.
Маалыматтар
Пакет маалыматтары.
Резервге коюлган
Система сакталган.
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG структурасы CANдын инициализация конфигурациясын аныктайт. Түзүм VCI_InitCan функциясында толтурулат.
Мүчө:
AccCode
Чыпкаланган кабыл алуу кодун алыңыз.
AccMask
Фильтр маскасын алуу.
Резервге коюлган
Резервге коюлган.
Фильтр
0-3 диапазонун орнотууга мүмкүндүк берүүчү чыпкалоо ыкмасы, чоо-жайын билүү үчүн чыпка режиминин таблицасынын 2.2.3 бөлүмүн караңыз.
Убакыт 0
SJA1000 Берүү ылдамдыгы параметри, Timing0 (BTR0) .
Убакыт 1
SJA1000 Берүү ылдамдыгы параметри, Timing1 (BTR1) .
Mode
Иштөө режими, 0 = нормалдуу иштөө, 1 = угуу гана режими, 2 = стихиялуу кабыл алуу жана жөнөтүү тест режими.
Эскертүү:
Чыпка орнотуулары жөнүндө төмөнкүнү караңыз: II тиркеме: CANпараметрди орнотуу нускамалары.
CAN Timing0 жана Timing1 берүү ылдамдыгын орнотуу үчүн колдонулат, бул эки параметр инициализация учурунда гана колдонулат.tage.
Кадимки Baud маалымдама таблицасы:
CAN Baud ылдамдыгы | Убакыт 0(BTR0) | Убакыт 1(BTR1) |
10к б/сек | 0x31 | 0x1C |
20к б/сек | 0x18 | 0x1C |
40к б/сек | 0x87 | 0xFF |
50к б/сек | 0x09 | 0x1C |
80к б/сек | 0x83 | 0xFF |
100к б/сек | 0x04 | 0x1C |
125к б/сек | 0x03 | 0x1C |
200к б/сек | 0x81 | 0xFA |
250к б/сек | 0x01 | 0x1C |
400к б/сек | 0x80 | 0xFA |
500к б/сек | 0x00 | 0x1C |
666к б/сек | 0x80 | 0xB6 |
800к б/сек | 0x00 | 0x16 |
1000к б/сек | 0x00 | 0x14 |
33.33 Кбит/сек | 0x09 | 0x6F |
66.66 Кбит/сек | 0x04 | 0x6F |
83.33 Кбит/сек | 0x03 | 0x6F |
- Колдонуучуларга SJA1000 (16MHz) ээрчип, берүү ылдамдыгы параметрин орнотуу керек.
- Адаптер 10K төмөн ылдамдыкты убактылуу колдоого албайт.
2.2. ФУНКЦИЯНЫН СИПАТТАМАСЫ
2.2.1. VCI_OpenDevice
Бул функция түзмөктөрдү туташтыруу үчүн колдонулат.
DWORD __stdcall VCI_OpenDevice(DWORD DevType, DWORD DevIndex, DWORD камдалган);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
Резервге коюлган
Сактоо параметрлери, 0 толтуруңуз.
Кайтаруулар:
Кайтаруу мааниси = 1, бул операция ийгиликтүү болгонун билдирет; = 0 операция ишке ашпай калганын билдирет; = -1 аппараттын жок экенин көрсөтүп турат.
2.2.2. VCI_CloseDevice
Бул функция байланышты жабуу үчүн колдонулат.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
Кайтаруулар:
Кайтаруу мааниси = 1, бул операция ийгиликтүү болгонун билдирет; = 0 операция ишке ашпай калганын билдирет; = -1 аппараттын жок экенин көрсөтүп турат.
2.2.3. VCI_InitCan
Бул функция көрсөтүлгөн CANды инициализациялоо үчүн колдонулат.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
CANindex
CAN каналынын индекси, мисалы, бир гана CAN каналы болгондо, индекстин саны 0, эки болсо, индекс саны 0 же 1 болушу мүмкүн.
pInitConfig
Инициализация параметринин структурасы. Мүчөлөрдүн параметр тизмеси:
мүчө | Функционалдык сүрөттөмө |
pInitConfig->AccCode | AccCode жана AccMask кайсы пакеттерди кабыл алууга болорун аныктоо үчүн бирге иштей алат. Бул эки регистр идентификаторду солго тегиздөө үчүн колдонулат, башкача айтканда, AccCode жана AccMaskтин эң жогорку бити (Bit31) ID маанисинин эң жогорку битине тегизделген. |
pInitConfig->AccMask | ID тегиздөө жөнүндө тиркемелерди караңыз: I тиркеме: ID тегиздөө чоо-жайы. Мисалы: Эгер сиз AccCode маанисин 0x24600000 деп койсоңуз (б.а. 0x123 солго 21 битке жылдырылса), AccMask мааниси 0x00000000 деп коюлган, андан кийин CAN билдирүү кадрынын идентификатору 0x123 болгон пакеттерди гана кабыл алууга болот (AccMask 0x00000000 мааниси бардык биттердин тиешелүү экенин көрсөтөт |
бит). Эгерде AccCode мааниси 0x24600000 деп коюлса, AccMask мааниси 0x600000 болуп коюлат (0x03 21 бит солго жылдырылат), андан кийин CAN билдирүү кадрынын ID 0x120 ~ 0x123 болгон пакеттерди гана кабыл алууга болот (AccMask мааниси 0x600000 бит0 ~ бит1ден башка биттердин (бит2 ~ бит10) тиешелүү бит экенин көрсөтөт. Эскертүү: Бул чыпка орнотуусу, мисалыamples стандарттык кадрга, мисалыample, жогорку 11-бит жарактуу бит болуп саналат; кеңейтилген кадр учурда, андан кийин жарактуу ID 29-бит болуп саналат. AccCode жана AccMask жарактуу бит катары жогорку 29-битти койду! |
|
pInitConfig-> Резервделген | сакталган |
pInitConfig->Фильтр | Чыпкалоо режиминин жөндөөлөрү чыпка режиминин таблицасынын бөлүмүн караңыз. |
pInitConfig->Timing0 | Берүү ылдамдыгыT0 жөндөөсү |
pInitConfig->Timing1 | Берүү ылдамдыгыT1 жөндөөсү |
pInitConfig->Mode | Иштөө режими: 0 - нормалдуу иштөө 1-Угуу гана режими 2-стихиялуу кабыл алуу жана жөнөтүү тест режими (бул маани ZLG функция китепканасынан алынып салынган) |
Чыпка режиминин таблицасы:
Нарк | аты | Description |
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
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекстин сандары 0дөн баштап өсүү тартибинде. pInfo
VCI_BOARD_INFO түзмөк маалымат түзүмү көрсөткүчүн сактоо үчүн колдонулат.
Кайтаруулар:
Кайтаруу мааниси = 1, бул операция ийгиликтүү болгонун билдирет; = 0 операция ишке ашпай калганын билдирет; = -1 аппараттын жок экенин көрсөтүп турат.
2.2.5. VCI_GetReceiveNum
Бул функция кабыл алынган, бирок дайындалган кабыл алуучу буферде окула элек кадрларды көрсөтүү үчүн колдонулат.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекс саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
CANindex
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 CANIndex);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекс саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
CANindex
CAN канал индекси.
Кайтаруулар:
Кайтаруу мааниси = 1, бул операция ийгиликтүү болгонун билдирет; = 0 операция ишке ашпай калганын билдирет; = -1 аппараттын жок экенин көрсөтүп турат.
2.2.7. VCI_StartCAN
Бул функция CAN контроллерин жана адаптердин ички үзгүлтүктөрдү кабыл алуу функциясын иштетүү үчүн колдонулат.
DWORD __stdcall VCI_StartCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
CANindex
CAN канал индекси.
Кайтаруулар:
Кайтаруу мааниси = 1, бул операция ийгиликтүү болгонун билдирет; = 0 операция ишке ашпай калганын билдирет; = -1 аппараттын жок экенин көрсөтүп турат.
2.2.8. VCI_ResetCAN
Бул функция CAN контроллерин баштапкы абалга келтирүү үчүн колдонулат.
DWORD __stdcall VCI_ResetCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
CANindex
CAN канал индекси.
Кайтаруулар:
Кайтаруу мааниси = 1, бул операция ийгиликтүү болгонун билдирет; = 0 операция ишке ашпай калганын билдирет; = -1 аппараттын жок экенин көрсөтүп турат.
2.2.9. VCI_Transmit
Бул функция CAN билдирүү алкагын жөнөтүү үчүн колдонулат.
DWORD __stdcall VCI_Transmit(DWORD DeviceType, DWORD DeviceInd, DWORD CANInd,PVCI_CAN_OBJ pSend, DWORD Length);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
CANindex
CAN канал индекси. pSend
Жөнөтүлүшү керек болгон маалымат алкактарынын массивдеринин биринчи дареги.
Узундук
Жөнөтүү керек болгон маалымат алкактарынын саны, максималдуу саны - 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 күтүү убактысы);
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
CANindex
CAN канал индекси.
кабыл алуу
Маалымат алкактарынын биринчи белгиленген көрсөткүчүн алуу үчүн.
Лен
Кадимки билдирүүнү кайтаруу үчүн маалымат алкагынын массивинин узундугу 2500дөн ашык болушу керек.
Болбосо, кабар алынганбы же жокпу, кайтаруу узундугу нөлгө барабар болот. адаптер ар бир канал үчүн 2000 кадр буферди орноткон. Өзүнүн тутумуна жана иштөө чөйрөсүнө таянып, колдонуучу 2500дөн туура массив узундугун тандай алат.
Күтүү убактысы сакталган.
Кайтаруулар:
Чынында окулган кадрлардын санын кайтарыңыз, -1 түзмөк каталарын көрсөтөт.
Мис
ҮЧҮНЧҮ БӨЛҮМ БАШКА ФУНКЦИЯЛАР ЖАНА МААЛЫМАТТАРДЫН ТҮЗҮМҮН СҮРӨТТӨМӨ
Бул бөлүмдө USB-CAN адаптер интерфейсинин китепканасында ControlCAN.dll камтылган шайкеш келбеген ZLG интерфейсинин китепканасынын башка маалымат түрлөрү жана функциялары сүрөттөлөт. Сураныч, кыл
шайкештикке таасирин тийгизбеши үчүн, экинчилик иштеп чыгуу үчүн шайкеш келген ZLG моделин колдонсоңуз, бул функцияларды чакырбаңыз.
3.1 ФУНКЦИЯНЫН СИПАТТАМАСЫ
3.1.1. VCI_UsbDeviceReset
USB-CAN адаптерин баштапкы абалга келтириңиз, VCI_OpenDevice аркылуу баштапкы абалга келтирилгенден кийин аппаратты кайра ачуу керек.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType, DWORD DevIndex, DWORD камдалган
Параметрлер:
DevType
Аппараттын түрү. Караңыз: Адаптердин түзүлүшүнүн түрүнүн аныктамасы.
DevIndex
Түзмөк индекси, мисалыample, бир гана USB-CAN адаптери болгондо, индекстин саны 0, бир нече USB-CAN адаптерлери болгондо, индекс сандары 0дөн баштап өсүү тартибинде.
Reserved Reserved.
Кайтаруулар:
Кайтаруу мааниси = 1, бул операция ийгиликтүү болгонун билдирет; = 0 операция ишке ашпай калганын билдирет; = -1 аппараттын жок экенин көрсөтүп турат.
bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 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 Adapter Interface Function Library [pdf] Instruction Manual USB-CAN автобус Интерфейсинин Адаптер интерфейсинин функцияларынын китепканасы, USB-CAN, автобустун Интерфейсинин адаптеринин интерфейсинин функцияларынын китепканасы, интерфейстин функцияларынын китепканасы, функциялардын китепканасы |