USB-CAN Busa Interfaco
Adaptila Interfaco Funkcio
Biblioteko Uzanto-Instruo
UNUA PARTO FINITAVIEW
Se la uzanto nur uzas USB-CAN-busan interfacadaptilon por daŭrigi CAN-busan komunikadteston, kaj tiam li povas rekte uzi la provizitan USB-CAN Ilan programaron por sendi kaj ricevi datumojn de la testo.
Se la uzanto intencas skribi programon por siaj propraj produktoj. Bonvolu atente legi la sekvajn instrukciojn kaj preni referencon de la sampla kodon ni provizas:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LaboratorioVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Disvolvu bibliotekon file : ControlCAN.lib, ControlCAN.DLL
VC-versia funkcio-deklaro file : ControlCAN.h
Deklaro pri funkcio de VB-versio file: ControlCAN.bas
LaboratorioVIEW versio de biblioteko funkcio pako modulo: ControlCAN.llb
Deklaro pri funkcio de la versio Delphi file: ControlCAN.pas
DUA PARTO KONgrua FUNKCIO-BIBLIOKOKO KAJ DATUMO-STRUKTURO
2.1. TIPO DIFINO
2.1.1. Aparato Tipo
Tipo Difino | Tajpu valoron | Priskribo |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
VCI_BOARD_INFO-strukturo enhavas informojn pri aparato de interfaco de la Serio USB-CAN.
La strukturo estos plenigita en la funkcio VCI_ReadBoardInfo.
Membro:
hw_Versio
Aparataro versio numero, deksesuma notacio. Ekz. 0x0100 reprezentas V1.00.
fw_Versio
Aparataro versio numero, deksesuma notacio. Ekz. 0x0100 reprezentas V1.00.
Paĝo 2
dr_Version
Ŝoforo versio numero, deksesuma notacio. Ekz. 0x0100 reprezentas V1.00.
en_Versio
Interfaca bibliotekversionumero, deksesuma notacio. Ekz. 0x0100 reprezentas V1.00.
irq_Num
Sistemo rezervita.
povas_Num
Reprezentas la tutsumon de CAN-kanalo.
str_Serial_Num
La seria numero de ĉi tiu tabulo.
str_hw_Tipo
Aparataro tipo, kiel "USBCAN V1.00" (Noto: Inkluzivas ĉenterminilon '\0').
Rezervita
Sistemo rezervita.
2.1.3. VCI_CAN_OBJ
En la funkcioj VCI_Transmit kaj VCI_Receive, VCI_CAN_OBJ-strukturo estas uzata por transdoni CAN-mesaĝokadron.
Membro:
ID
Mesaĝidentigilo. Rekta ID-formato, dekstre vicigita, bonvolu raporti al: Aneksaĵo Unu: ID-Alig-Detaloj.
Tempo St.amp
Ricevante la stamp informoj de la tempokadro, komenci tempigon kiam la CAN regilo estas pravigita, la unuo estas 0. 1ms.
TimeFlag
Koncerne ĉu uzi la tempon stamp, 1estas la efika TimeStamp. TimeFlag kaj TimeStamp estas signifaj nur kiam la kadro estas ricevita.
SendType
Sendanta tipo. = 0 indikas Normalan tipon, = 1 indikas Single Send.
RemoteFlag
Ĉu ĝi estas fora flago. = 1 indikas foran flagon, = 0 indikas datuman flagon.
EksteraFlago
Ĉu ĝi estas ekstera flago. = 1 indikas eksteran flagon, = 0 indikas norman flagon.
DataLen
Datumlongo (<=8) ,t.e. la longo de datumoj.
Datumoj
Pakaj datumoj.
Rezervita
Sistemo rezervita.
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG-strukturo difinas la inicialigkonfiguracion de la CAN. La strukturo estos plenigita en la funkcio VCI_InitCan.
Membro:
AccCode
Ricevu filtritan akceptkodon.
AccMask
Ricevu filtrilan maskon.
Rezervita
Rezervita.
Filtrilo
Filtrila metodo, permesanta agordan gamon 0-3, konsultu sekcion 2.2.3 de la filtrila reĝimo-tabelo por detaloj.
Tempigo0
SJA1000 Baudrapida parametro, Timing0 (BTR0) .
Tempigo1
SJA1000 Baudrapida parametro, Timing1 (BTR1) .
Reĝimo
Funkcia reĝimo, 0 = normala funkciado, 1 = Aŭskultebla reĝimo, 2 = spontanea akcepto kaj senda testreĝimo.
Rimarkoj:
Pri la filtrilaj agordoj bonvolu raporti al: Anekso II: Instrukcioj pri agordo de CANparametroj.
CAN Timing0 kaj Timing1 estas uzataj por agordi baudrapidecon, ĉi tiuj du parametroj estas uzataj nur ĉe la inicialigo s.tage.
Konvencia Baud-referenca tablo:
CAN Baudrapideco | Tempo0(BTR0) | Tempo1(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 |
- Uzantoj nur devas sekvi SJA1000 (16MHz) por agordi la Baudrapidan parametron.
- La adaptilo ne subtenas provizore Baud-rapidecon sub 10K.
2.2. PRIKRIBO DE FUNKCIO
2.2.1. VCI_OpenDevice
Ĉi tiu funkcio estas uzata por konekti aparatojn.
DWORD __stdcall VCI_OpenDevice (DWORD DevType, DWORD DevIndex, DWORD Rezervita);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
Rezervita
Retenaj parametroj, plenigu 0.
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
2.2.2. VCI_CloseDevice
Ĉi tiu funkcio estas uzata por fermi la konekton.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
2.2.3. VCI_InitCan
Ĉi tiu funkcio estas uzata por pravalorigi la specifitan CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
CANIndekso
CAN-kanala indekso, kiel kiam ekzistas nur unu CAN-kanalo, la indeksa nombro estas 0, se estas du, la indeksa nombro povas esti 0 aŭ 1.
pInitConfig
Inicialiga parametrostrukturo. Parametrolisto de membroj:
Membro | Funkcia Priskribo |
pInitConfig->AccCode | AccCode kaj AccMask povas labori kune por determini kiuj pakaĵetoj povas esti akceptitaj. Ĉi tiuj du registroj estas uzataj por agordi la ID-maldekstre vicigitan, tio estas, la plej alta bito (Bit31) de la AccCode kaj AccMask estas vicigita kun la plej alta bito de la ID-valoro. |
pInitConfig->AccMask | Pri ID-alineado konsultu aneksojn: Aneksaĵo I: Detaloj de alineado de ID. Ekz.: Se vi fiksas la valoron de la AccCode kiel 0x24600000 (t.e. 0x123 estas movita maldekstren je 21 bitoj), AccMask-valoro estas agordita al 0x00000000, kaj tiam nur la pakaĵoj kun CAN mesaĝkadra ID estas 0x123 povas esti akceptitaj (AccMask-valoro de 0x00000000 indikas, ke ĉiuj bitoj estas gravaj. |
pecoj). Se la AccCode-valoro estas agordita al 0x24600000, AccMask-valoro estas agordita al 0x600000 (0x03 estas movita maldekstren je 21 bitoj), kaj tiam nur la pakaĵoj kun la CAN mesaĝkadra ID estas 0x120 ~ 0x123 povas esti akceptita (AccMask-valoro). 0x600000 indikas, ke krom bit0 ~ bit1 aliaj bitoj (bit2 ~ bit10) estas koncernaj bitoj). Notu: Ĉi tiu filtrila agordo ekzamples al la norma kadro, ekzample, alta 11-bita estas la valida bito; en la kazo de la plilongigita kadro, kaj tiam la valida ID estas 29-bita. AccCode kaj AccMask starigis altan 29-bitan kiel la validan biton! |
|
pInitConfig-> Rezervita | rezervita |
pInitConfig-> Filtrilo | Agordoj de filtrila reĝimo bonvolu raporti al la sekcio de la tabelo de filtrila reĝimo. |
pInitConfig-> Timing0 | Agordo de baudrapideco T0 |
pInitConfig-> Timing1 | Agordo de baudrapideco T1 |
pInitConfig->Reĝimo | Funkcia reĝimo: 0-normala operacio 1-Aŭskultebla reĝimo 2-spontanea akcepto kaj senda testreĝimo (ĉi tiu valoro estas ekskludita de la ZLG-funkcia biblioteko) |
Tabelo de filtrila reĝimo:
Valoro | Nomo | Priskribo |
1 | Ricevu ĉiujn tipojn | Taŭga por kaj norma kaj plilongigita kadro! |
2 | Ricevu nur norman kadron | Taŭga al norma kadro, kaj etendita |
kadro estos forigita per filtrado rekte! | ||
3 | Nur ricevu plilongigitan kadron | Taŭga por plilongigita kadro, kaj norma kadro estos forigita per filtrado rekte! 。 |
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
Ekz
2.2.4. VCI_ReadBoardInfo
Ĉi tiu funkcio estas uzata por legi la informojn pri adaptila aparataro. Ĝenerale, ĝi povas esti ignorita.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0. pInfo
VCI_BOARD_INFO estas uzata por konservi aparaton pri strukturo-indikilo.
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
2.2.5. VCI_GetReceiveNum
Ĉi tiu funkcio estas uzata por specifi la ricevitajn sed ne legitajn kadrojn en la elektita riceva bufro.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
CANIndekso
CAN-kanala indekso.
Revenoj:
Redonu kadrojn, kiuj ankoraŭ ne estis legitaj.
Ekz
#include "ControlCan.h" int ret=VCI_GetReceiveNum (2,0,0);
2.2.6. VCI_ClearBuffer
Ĉi tiu funkcio estas uzata por forigi la ricevon kaj sendi bufron de la elektita kanalo specifita de
USB-CAN adaptilo.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
CANIndekso
CAN-kanala indekso.
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
2.2.7. VCI_StartCAN
Ĉi tiu funkcio estas uzata por komenci la CAN-regilon kaj la internan interrompan ricevan funkcion de la adaptilo.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
CANIndekso
CAN-kanala indekso.
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
2.2.8. VCI_Restarigi CAN
Ĉi tiu funkcio estas uzata por restarigi la CAN-regilon.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
CANIndekso
CAN-kanala indekso.
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
2.2.9. VCI_Transmit
Ĉi tiu funkcio estas uzata por sendi CAN-mesaĝokadron.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
CANIndekso
CAN-kanala indekso. pSendu
La unua adreso de la datumkadraj tabeloj kiuj devas esti senditaj.
Longo
La nombro de la datumkadroj kiuj devas esti senditaj, la maksimuma nombro estas 1000, la rekomendita valoro estas 48 sub alta rapido.
Revenoj:
Redonu la realan nombron da kadroj jam senditaj, la revena valoro = -1 indikas aparato-eraron.
Ekz
2.2.10. VCI_Ricevu
Ĉi tiu funkcio estas uzata por peti ricevon.
DWORD __stdcall VCI_Receive (DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT Atendotempo);
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
CANIndekso
CAN-kanala indekso.
prericevi
Por ricevi la unuan fiksitan montrilon de la datumkadroj.
Len
La tabellongo de la datumkadro devas esti pli ol 2500 por resendi normalan mesaĝon.
Alie, la revenlongo estos nula ĉu la mesaĝo estas ricevita aŭ ne. la adaptilo starigis 2000-kadran bufron por ĉiu kanalo. Surbaze de sia propra sistemo kaj labormedio, la uzanto povas elekti taŭgan tabellongon de 2500.
Atendtempo Rezervita.
Revenoj:
Redonu la nombron da kadroj kiuj efektive estis legitaj, -1 indikas aparatajn erarojn.
Ekz
TRIA PARTO ALIAJ FUNKCIOJ KAJ DATUJ STRUKTURA PRIKRIBO
Ĉi tiu ĉapitro priskribas aliajn datumtipojn kaj funkciojn de la nekongrua ZLG-interfacbiblioteko enhavita en USB-CAN-adaptila interfacbiblioteko ControlCAN.dll. Bonvolu fari
ne voku ĉi tiujn funkciojn se uzu kongruan ZLG-modelon por malĉefa disvolviĝo por ne influi kongruecon.
3.1 PRIKRIBO DE FUNKCIO
3.1.1. VCI_UsbDeviceReset
Restarigi USB-CAN-adaptilon, bezonas remalfermi la aparaton post rekomencigo uzante VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset (DWORD DevType, DWORD DevIndex, DWORD Rezervita
Parametroj:
DevType
Aparato tipo. Vidu: Difino de tipo de adaptilo.
DevIndex
Aparato-Indekso, ekzample, kiam ekzistas nur unu USB-CAN-adaptilo, la indeksa nombro estas 0, kiam estas pluraj USB-CAN-adaptiloj, la indeksaj nombroj en kreskanta ordo ekde 0.
Rezervita Rezervita.
Revenoj:
Revena valoro = 1, kio signifas, ke la operacio estas sukcesa; = 0 indikas ke la operacio malsukcesis; = -1 indikas ke la aparato ne ekzistas.
bRel = VCI_UsbDeviceReset (nDeviceType, Sendependeco, 0);
3.1.2. VCI_FindUsbDevice2
Kiam la sama komputilo uzas plurajn USB-CAN, uzanto povas uzi ĉi tiun funkcion por trovi la nunan aparaton.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametroj:
pInfo
pInfo estas uzata por konservi la parametrojn de la unua datuma bufro-adresmontrilo.
Revenoj
Redonu la numeron de la USB-CAN-adaptilo konektita al la komputilo.
Parto Kvar Interfaco Biblioteko Funkcioj Uzante Procezo
Por multobligi la aparaton, ni provizis pliajn funkciojn (funkcioj prezentitaj kun verda fono), ĉi tiuj funkcioj inkluzivas: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Dum la dua evoluo, ĉi tiuj funkcioj ne estas nepre alvokeblaj. Eĉ ĉi tiuj funkcioj estas ignoritaj, ĉiuj USB-CAN adaptilo funkcioj povas esti atingita.
www.waveshare.com
www.waveshare.com/wiki
Dokumentoj/Rimedoj
![]() |
WAVESHARE USB-CAN Bus Interface Adaptilo Interfaco Funkcia Biblioteko [pdf] Instrukcia Manlibro USB-CAN Bus Interface Adaptilo Interfaco Funkcio-Biblioteko, USB-CAN, Bus Interface Adaptilo Interface Funkcio-Biblioteko, Interfaca Funkcio-Biblioteko, Funkcia Biblioteko |