Інтэрфейс шыны USB-CAN
Функцыя інтэрфейсу адаптара
Інструкцыя карыстальніка бібліятэкі
ЧАСТКА ПЕРШАЯ СКОНЕНАVIEW
Калі карыстальнік проста выкарыстоўвае адаптар інтэрфейсу шыны USB-CAN для праверкі сувязі шыны CAN, то ён можа непасрэдна выкарыстоўваць праграмнае забеспячэнне USB-CAN Tool, якое ўваходзіць у камплект, для адпраўкі і атрымання даных тэсту.
Калі карыстальнік мае намер напісаць праграму для ўласных прадуктаў. Калі ласка, уважліва прачытайце наступныя інструкцыі і спасылайцеся на sampкод, які мы прапануем:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Развіваць бібліятэку 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. Тып прылады
Вызначэнне тыпу | Тып значэння | Апісанне |
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_Версія
Нумар версіі апаратнага забеспячэння, шаснаццатковае злічэнне. Напрыклад, 0x0100 прадстаўляе V1.00.
fw_Версія
Нумар версіі апаратнага забеспячэння, шаснаццатковае злічэнне. Напрыклад, 0x0100 прадстаўляе V1.00.
Старонка 2
dr_Версія
Нумар версіі драйвера, шаснаццатковае злічэнне. Напрыклад, 0x0100 прадстаўляе V1.00.
in_Version
Нумар версіі бібліятэкі інтэрфейсу, шаснаццатковы запіс. Напрыклад, 0x0100 прадстаўляе V1.00.
Нумар_ірачэння
Сістэма зарэзервавана.
можа_Num
Уяўляе агульную колькасць каналаў CAN.
str_Serial_Num
Серыйны нумар платы карты.
str_hw_Тып
Тып апаратнага забеспячэння, напрыклад «USBCAN V1.00» (Заўвага: уключае канец радка '\0').
Зарэзерваваны
Сістэма зарэзервавана.
2.1.3. VCI_CAN_OBJ
У функцыях VCI_Transmit і VCI_Receive структура VCI_CAN_OBJ выкарыстоўваецца для перадачы кадра паведамлення CAN.
Член:
ID
Ідэнтыфікатар паведамлення. Прамы фармат ідэнтыфікатара, выраўнаваны па правым краі, глядзіце: Дадатак XNUMX: Падрабязнасці выраўноўвання ідэнтыфікатара.
ЧасСтamp
Прыняцце свamp інфармацыя пра часовыя рамкі, час пачатку пры ініцыялізацыі кантролера CAN, адзінка 0 мс.
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.
Член:
Код рахунку
Атрымаць адфільтраваны код прыняцця.
AccMask
Атрымаеце фільтруючую маску.
Зарэзерваваны
Зарэзерваваны.
Фільтраваць
Метад фільтрацыі, які дазваляе наладзіць дыяпазон 0-3, падрабязную інфармацыю глядзіце ў раздзеле 2.2.3 табліцы рэжымаў фільтра.
Час0
SJA1000 Параметр хуткасці перадачы дадзеных, Timing0 (BTR0).
Час1
SJA1000 Параметр хуткасці перадачы дадзеных, Timing1 (BTR1).
Рэжым
Рэжым працы, 0 = нармальная праца, 1 = рэжым толькі праслухоўвання, 2 = самаадвольны прыём і тэставы рэжым адпраўкі.
Заўвагі:
Пра налады фільтра, калі ласка, звярніцеся да: Дадатак II: Інструкцыі па наладзе параметраў CAN.
CAN Timing0 і Timing1 выкарыстоўваюцца для ўстаноўкі хуткасці перадачы дадзеных, гэтыя два параметры выкарыстоўваюцца толькі пры ініцыялізацыі stage.
Табліца звычайнай перадачы дадзеных у бодах:
Хуткасць перадачы CAN | Час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 (16 МГц), каб усталяваць параметр хуткасці перадачы дадзеных.
- Адаптар часова не падтрымлівае хуткасць перадачы дадзеных ніжэй за 10K.
2.2. АПІСАННЕ ФУНКЦЫІ
2.2.1. VCI_OpenDevice
Гэтая функцыя выкарыстоўваецца для падлучэння прылад.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);
Параметры:
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 могуць працаваць разам, каб вызначыць, якія пакеты можна прымаць. Гэтыя два рэгістры выкарыстоўваюцца для ўстаноўкі ідэнтыфікатара па левым краі, гэта значыць, што старэйшы біт (Bit31) AccCode і AccMask супадае з самым высокім бітам значэння ID. |
pInitConfig->AccMask | Аб выраўноўванні ідэнтыфікатараў глядзіце дадаткі: Дадатак I: Дэталі выраўноўвання ID. Напрыклад: калі вы задалі значэнне AccCode як 0x24600000 (г.зн. 0x123 зрушваецца ўлева на 21 біт), значэнне AccMask усталявана ў 0x00000000, і тады могуць быць прыняты толькі пакеты з ідэнтыфікатарам кадра паведамлення CAN 0x123 (значэнне AccMask 0x00000000 паказвае, што ўсе біты актуальныя |
біты). Калі значэнне AccCode усталявана ў 0x24600000, значэнне AccMask усталявана ў 0x600000 (0x03 зрушваецца ўлева на 21 біт), і тады могуць быць прыняты толькі пакеты з ідэнтыфікатарам кадра паведамлення CAN 0x120 ~ 0x123 (значэнне AccMask 0x600000 паказвае, што акрамя біт0 ~ біт1 іншыя біты (біт2 ~ біт10) з'яўляюцца адпаведнымі бітамі). Заўвага: Гэтая налада фільтра напрampда стандартнай рамы, напрample, высокі 11-біт - сапраўдны біт; у выпадку пашыранага кадра, і тады сапраўдны ідэнтыфікатар 29-бітны. AccCode і AccMask усталёўваюць высокі 29-біт як сапраўдны біт! |
|
pInitConfig->Зарэзервавана | зарэзерваваны |
pInitConfig->Фільтр | Налады рэжыму фільтрацыі глядзіце ў раздзеле табліцы рэжымаў фільтрацыі. |
pInitConfig->Timing0 | Налада хуткасці перадачы дадзеных T0 |
pInitConfig->Timing1 | Налада хуткасці перадачы дадзеных T1 |
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
Індэкс прылад, напрыклад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. 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
Індэкс прылад, напрыкладample, калі ёсць толькі адзін адаптар USB-CAN, нумар індэкса роўны 0, калі ёсць некалькі адаптараў USB-CAN, нумары індэксаў у парадку ўзрастання, пачынаючы з 0.
CANIndex
Індэкс канала CAN.
pReceive
Каб атрымаць першы набор паказальнікаў кадраў дадзеных.
Лён
Даўжыня масіва кадра даных павінна быць больш за 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
Індэкс прылад, напрыкладample, калі ёсць толькі адзін адаптар USB-CAN, нумар індэкса роўны 0, калі ёсць некалькі адаптараў USB-CAN, нумары індэксаў у парадку ўзрастання, пачынаючы з 0.
Зарэзерваваны Зарэзерваваны.
Вяртае:
Вяртаецца значэнне = 1, што азначае, што аперацыя прайшла паспяхова; = 0 паказвае, што аперацыя не ўдалася; = -1 паказвае, што прылада не існуе.
bRel = VCI_UsbDeviceReset(nDeviceType, незалежнасць, 0);
3.1.2. VCI_FindUsbDevice2
Калі адзін і той жа ПК выкарыстоўвае некалькі USB-CAN, карыстальнік можа выкарыстоўваць гэтую функцыю, каб знайсці бягучую прыладу.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Параметры:
pІнфармацыя
pInfo выкарыстоўваецца для захоўвання параметраў паказальніка адраса першага буфера дадзеных.
Вяртае
Вярніце нумар адаптара USB-CAN, падлучанага да кампутара.
Частка чацвёртая Функцыі бібліятэкі інтэрфейсу з выкарыстаннем працэсу
Для таго, каб памножыць функцыі прылады, мы прадаставілі дадатковыя функцыі (функцыі, прадстаўленыя на зялёным фоне), гэтыя функцыі ўключаюць у сябе: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Падчас другой распрацоўкі гэтыя функцыі неабавязкова выклікаць. Нават гэтыя функцыі ігнаруюцца, усе функцыі адаптара USB-CAN могуць быць дасягнуты.
www.waveshare.com
www.waveshare.com/wiki
Дакументы / Рэсурсы
![]() |
WAVESHARE USB-CAN Bus Interface Adapter Interface Бібліятэка функцый [pdfІнструкцыя па эксплуатацыі Бібліятэка функцый адаптара інтэрфейсу USB-CAN, USB-CAN, Бібліятэка функцый інтэрфейсу адаптара шыны, Бібліятэка функцый інтэрфейсу, Бібліятэка функцый |