USB-CAN Bus Interface
Adapter Interface Function
Tagubilin sa Gumagamit ng Aklatan
TAPOS ANG UNANG BAHAGIVIEW
Kung ang gumagamit ay gumagamit lamang ng USB-CAN bus interface adapter upang pumunta sa CAN bus communication test, at pagkatapos ay maaari niyang direktang gamitin ang ibinigay na USB-CAN Tool software para sa pagpapadala at pagtanggap ng data ng pagsubok.
Kung ang gumagamit ay nagnanais na magsulat ng software program para sa kanyang sariling mga produkto. Mangyaring maingat na basahin ang sumusunod na mga tagubilin at kumuha ng sanggunian mula sa sampang code na ibinibigay namin:
⑴ C++ Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Bumuo ng library file :ControlCAN.lib, ControlCAN.DLL
Deklarasyon ng function ng bersyon ng VC file :ControlCAN.h
Deklarasyon ng function ng bersyon ng VB file: ControlCAN.bas
LabVIEW bersyon library function package module:ControlCAN.llb
Deklarasyon ng function ng bersyon ng Delphi file: ControlCAN.pas
IKALAWANG BAHAGI KASAMA NA FUNCTION LIBRARY AT DATA STRUCTURE
2.1. URI NG KAHULUGAN
2.1.1. Uri ng Device
Uri ng Kahulugan | Uri ng halaga | Paglalarawan |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Ang istraktura ng VCI_BOARD_INFO ay naglalaman ng impormasyon ng device ng USB-CAN Series na interface card.
Ang istraktura ay mapupunan sa VCI_ReadBoardInfo function.
Miyembro:
hw_Bersyon
Numero ng bersyon ng hardware, hexadecimal notation. Hal. 0x0100 ay kumakatawan sa V1.00.
fw_Bersyon
Numero ng bersyon ng hardware, hexadecimal notation. Hal. 0x0100 ay kumakatawan sa V1.00.
Pahina 2
dr_Bersyon
Numero ng bersyon ng driver, hexadecimal notation. Hal. 0x0100 ay kumakatawan sa V1.00.
sa_Bersyon
Numero ng bersyon ng library ng interface, hexadecimal notation. Hal. 0x0100 ay kumakatawan sa V1.00.
irq_Num
Nakareserba ang system.
maaari_Bilang
Kinakatawan ang kabuuang bilang ng CAN channel.
str_Serial_Num
Ang serial number ng board card na ito.
str_hw_Type
Uri ng hardware, gaya ng “USBCAN V1.00” (Tandaan: May kasamang string terminator '\0').
Nakareserba
Nakareserba ang system.
2.1.3. VCI_CAN_OBJ
Sa mga function na VCI_Transmit at VCI_Receive, ang istraktura ng VCI_CAN_OBJ ay ginagamit upang magpadala ng CAN message frame.
Miyembro:
ID
Tagatukoy ng mensahe. Direktang format ng ID, nakahanay sa kanan, mangyaring sumangguni sa: Annex One: Mga Detalye ng Alignment ng ID.
Ang TimeStamp
Pagtanggap ng stamp impormasyon ng time frame, simulan ang timing kapag ang CAN controller ay nasimulan, ang unit ay 0. 1ms.
TimeFlag
Sa mga tuntunin ng kung gagamitin ang oras stamp, 1ay ang epektibong TimeStamp. TimeFlag at TimeStamp ay makabuluhan lamang kapag natanggap ang frame.
SendType
Uri ng pagpapadala. Ang = 0 ay nagpapahiwatig ng Normal na uri, = 1 ay nagpapahiwatig ng Single Send.
RemoteFlag
Kung ito ay isang remote na bandila. = 1 ay nagpapahiwatig ng malayuang flag, = 0 ay nagpapahiwatig ng data flag.
ExternFlag
Kahit na ito ay isang panlabas na bandila. = 1 ay nagpapahiwatig ng panlabas na bandila, = 0 ay nagpapahiwatig ng karaniwang bandila.
DataLen
Haba ng data(<=8) , iyon ay, ang haba ng data.
Data
Packet data.
Nakareserba
Nakareserba ang system.
2.1.4. VCI_INIT_CONFIG
Tinutukoy ng istraktura ng VCI_INIT_CONFIG ang configuration ng initialization ng CAN. Ang istraktura ay mapupunan sa VCI_InitCan function.
Miyembro:
AccCode
Tumanggap ng na-filter na code ng pagtanggap.
AccMask
Tumanggap ng filter mask.
Nakareserba
Nakareserba.
Salain
Paraan ng pag-filter, na nagpapahintulot sa hanay ng setting na 0-3, sumangguni sa seksyon 2.2.3 ng talahanayan ng mode ng filter para sa mga detalye.
Timing0
Parameter ng SJA1000 Baud rate, Timing0 (BTR0) .
Timing1
Parameter ng SJA1000 Baud rate, Timing1 (BTR1) .
Mode
Operating mode, 0 = normal na operasyon, 1 = Listen-only mode, 2 = spontaneous admission at sending test mode.
Remarks:
Tungkol sa mga setting ng filter mangyaring sumangguni sa: Annex II: CANparameter setup ng mga tagubilin.
CAN Timing0 at Timing1 ay ginagamit upang itakda ang baud rate, ang dalawang parameter na ito ay ginagamit lamang sa pagsisimula stage.
Maginoo Baud reference table:
CAN Baud rate | Timing0(BTR0) | Timing1(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 |
- Kailangan lang sundin ng mga user ang SJA1000 (16MHz) para itakda ang parameter ng Baud rate.
- Hindi sinusuportahan ng adapter ang pansamantalang Baud rate na mas mababa sa 10K.
2.2. DESCRIPTION NG FUNCTION
2.2.1. VCI_OpenDevice
Ginagamit ang function na ito upang ikonekta ang mga device.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
Nakareserba
Mga parameter ng pagpapanatili, punan ang 0.
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
2.2.2. VCI_CloseDevice
Ang function na ito ay ginagamit upang isara ang koneksyon.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
2.2.3. VCI_InitCan
Ang function na ito ay ginagamit upang simulan ang tinukoy na CAN.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
CANIindex
CAN channel index, tulad ng kapag mayroon lamang isang CAN channel, ang index number ay 0, kung mayroong dalawa, ang index number ay maaaring 0 o 1.
pInitConfig
Istruktura ng parameter ng pagsisimula. Listahan ng parameter ng mga miyembro:
Miyembro | Functional na Paglalarawan |
pInitConfig->AccCode | Maaaring magtulungan ang AccCode at AccMask upang matukoy kung aling mga packet ang maaaring tanggapin. Ang dalawang register na ito ay ginagamit upang itakda ang ID na naka-left-align, ibig sabihin, ang pinakamataas na bit (Bit31) ng AccCode at AccMask ay nakahanay sa pinakamataas na bit ng ID value. |
pInitConfig->AccMask | Tungkol sa pagkakahanay ng ID ay sumangguni sa mga annexes: Annex I: Mga detalye ng pagkakahanay ng ID. Hal: Kung itinakda mo ang halaga ng AccCode bilang 0x24600000 (ibig sabihin, ang 0x123 ay inilipat sa kaliwa ng 21 bits), ang halaga ng AccMask ay nakatakda sa 0x00000000, at pagkatapos lamang ang mga packet na may CAN message frame ID ay 0x123 ang maaaring tanggapin (Ang halaga ng AccMask na 0x00000000 ay nagpapahiwatig na ang lahat ng mga bit ay may kaugnayan |
bits). Kung ang AccCode value ay nakatakda sa 0x24600000, ang AccMask value ay nakatakda sa 0x600000 (0x03 ay inilipat sa kaliwa ng 21 bits), at pagkatapos ay ang mga packet lamang na may CAN message frame ID ang 0x120 ~ 0x123 ay maaaring tanggapin (AccMask value 0x600000 ay nagpapahiwatig na bukod sa bit0 ~ bit1 iba pang mga bit (bit2 ~ bit10) ay may-katuturang bit). Tandaan: Ang setting ng filter na ito halamples sa karaniwang frame, halimbawaample, high 11-bit ang valid bit; sa kaso ng pinalawak na frame, at pagkatapos ay ang wastong ID ay 29-bit. Itinakda ng AccCode at AccMask ang mataas na 29-bit bilang wastong bit! |
|
pInitConfig->Nakareserba | nakalaan |
pInitConfig->I-filter | Mga setting ng filtering mode mangyaring sumangguni sa seksyon ng talahanayan ng mode ng filter. |
pInitConfig->Timing0 | Setting ng baud rateT0 |
pInitConfig->Timing1 | Setting ng baud rateT1 |
pInitConfig->Mode | Operating mode: 0-normal na operasyon 1-Listen-only na mode 2-spontaneous admission at sending test mode (ang value na ito ay hindi kasama sa ZLG function library) |
Talahanayan ng filter mode:
Halaga | Pangalan | Paglalarawan |
1 | Tumanggap ng lahat ng uri | Angkop sa parehong karaniwan at pinahabang frame! |
2 | Makatanggap lamang ng karaniwang frame | Angkop sa karaniwang frame, at pinahaba |
ang frame ay aalisin sa pamamagitan ng direktang pagsasala! | ||
3 | Makatanggap lamang ng pinahabang frame | Angkop sa pinalawak na frame, at ang karaniwang frame ay aalisin ng direktang pagsasala! . |
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
Hal
2.2.4. VCI_ReadBoardInfo
Ginagamit ang function na ito upang basahin ang impormasyon ng adapter hardware. Sa pangkalahatan, maaari itong balewalain.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0. pInfo
Ang VCI_BOARD_INFO ay ginagamit upang mag-imbak ng pointer ng istraktura ng impormasyon ng device.
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
2.2.5. VCI_GetReceiveNum
Ang function na ito ay ginagamit upang tukuyin ang natanggap ngunit hindi pa nabasa na mga frame sa itinalagang receiving buffer.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
CANIindex
CAN channel index.
Ibinabalik:
Ibalik ang mga frame na hindi pa nababasa.
Hal
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Ang function na ito ay ginagamit upang i-clear ang tumanggap at magpadala ng buffer ng itinalagang channel na tinukoy ng
USB-CAN adapter.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
CANIindex
CAN channel index.
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
2.2.7. VCI_StartCAN
Ginagamit ang function na ito upang simulan ang CAN controller at ang internal interrupt reception function ng adapter.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANINdex);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
CANIindex
CAN channel index.
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
2.2.8. VCI_ResetCAN
Ang function na ito ay ginagamit upang i-reset ang CAN controller.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANindex);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
CANIindex
CAN channel index.
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
2.2.9. VCI_Transmit
Ginagamit ang function na ito upang magpadala ng CAN message frame.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
CANIindex
CAN channel index. pSend
Ang unang address ng mga array ng data frame na kailangang ipadala.
Ang haba
Ang bilang ng mga frame ng data na kailangang ipadala, ang maximum na bilang ay 1000, ang inirerekomendang halaga ay 48 sa ilalim ng mataas na bilis.
Ibinabalik:
Ibalik ang aktwal na bilang ng mga frame na naipadala na, ang return value = -1 ay nagpapahiwatig ng error sa device.
Hal
2.2.10. VCI_Receive
Ang function na ito ay ginagamit upang humiling ng pagtanggap.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
CANIindex
CAN channel index.
pReceive
Upang matanggap ang unang set pointer ng mga frame ng data.
Len
Ang haba ng array ng data frame ay dapat na higit sa 2500 upang maibalik ang normal na mensahe.
Kung hindi, magiging zero ang haba ng pagbabalik kung natanggap man o hindi ang mensahe. nagtakda ang adaptor ng 2000-frame buffer para sa bawat channel. Batay sa kanyang sariling sistema at kapaligiran sa pagtatrabaho, maaaring pumili ang user ng naaangkop na haba ng array mula 2500.
Nakalaan ang WaitTime.
Ibinabalik:
Ibalik ang bilang ng mga frame na aktwal na nabasa, -1 ay nagpapahiwatig ng mga error sa device.
Hal
IKATLONG BAHAGI IBA PANG MGA FUNCTION AT DESCRIPTION NG DATA STRUCTURE
Inilalarawan ng kabanatang ito ang iba pang mga uri ng data at mga function ng hindi tugmang ZLG interface library na nasa USB-CAN adapter interface library ControlCAN.dll. Mangyaring gawin
huwag tawagan ang mga function na ito kung gumamit ng isang katugmang modelo ng ZLG para sa pangalawang pag-unlad upang hindi makaapekto sa pagiging tugma.
3.1 PAGLALARAWAN NG FUNCTION
3.1.1. VCI_UsbDeviceReset
I-reset ang USB-CAN adapter, kailangang muling buksan ang device pagkatapos i-reset gamit ang VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reserved
Mga Parameter:
DevType
Uri ng device. Tingnan ang: Depinisyon ng uri ng device ng adapter.
DevIndex
Index ng Device, halample, kapag mayroon lamang isang USB-CAN adapter, ang index number ay 0, kapag mayroong maramihang USB-CAN adapters, ang mga index number sa isang pataas na pagkakasunod-sunod simula sa 0.
Nakareserba Nakalaan.
Ibinabalik:
Return value = 1, na nangangahulugang matagumpay ang operasyon; = 0 ay nagpapahiwatig na ang operasyon ay nabigo; = -1 ay nagpapahiwatig na ang aparato ay hindi umiiral.
bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 0);
3.1.2. VCI_FindUsbDevice2
Kapag ang parehong PC ay gumagamit ng maramihang USB-CAN, magagamit ng user ang function na ito upang mahanap ang kasalukuyang device.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Mga Parameter:
pInfo
Ang pInfo ay ginagamit upang iimbak ang mga parameter ng unang data buffer address pointer.
Nagbabalik
Ibalik ang numero ng USB-CAN adapter na nakasaksak sa computer.
Ikaapat na Bahagi ng Interface Library Function Gamit ang Proseso
Upang ma-multiply ang function ng device, nagbigay kami ng mga karagdagang function (mga function na ipinakita na may berdeng background), kasama sa mga function na ito ang: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Sa panahon ng pangalawang pag-unlad, ang mga function na ito ay hindi kinakailangang gamitin. Kahit na ang mga function na ito ay binabalewala, lahat ng USB-CAN adapter function ay maaaring makamit.
www.waveshare.com
www.waveshare.com/wiki
Mga Dokumento / Mga Mapagkukunan
![]() |
WAVESHARE USB-CAN Bus Inter face Adapter Interface Function Library [pdf] Manwal ng Pagtuturo USB-CAN Bus Inter face Adapter Interface Function Library, USB-CAN, Bus Inter face Adapter Interface Function Library, Interface Function Library, Function Library |