Kiolesura cha basi cha USB-CAN
Kazi ya Kiolesura cha Adapta
Maagizo ya Mtumiaji wa Maktaba
SEHEMU YA KWANZAVIEW
Iwapo mtumiaji anatumia tu kiolesura cha kiolesura cha basi cha USB-CAN kwenda kwenye jaribio la mawasiliano ya basi la CAN, na kisha anaweza kutumia moja kwa moja programu iliyotolewa ya USB-CAN Tool kutuma na kupokea data ya jaribio.
Ikiwa mtumiaji ana nia ya kuandika programu ya programu kwa bidhaa zake mwenyewe. Tafadhali soma kwa uangalifu maagizo yafuatayo na urejee kutoka kwa sample code tunatoa:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Kuendeleza maktaba file :ControlCAN.lib, ControlCAN.DLL
tangazo la utendakazi la toleo la VC file :ControlCAN.h
Tamko la utendaji wa toleo la VB file: ControlCAN.bas
MaabaraVIEW moduli ya kifurushi cha utendaji wa maktaba ya toleo:ControlCAN.llb
Tamko la utendakazi la toleo la Delphi file: ControlCAN.pas
SEHEMU YA PILI MAKTABA YA KAZI INAYOENDANA NA MUUNDO WA DATA
2.1. UFAFANUZI WA AINA
2.1.1. Aina ya Kifaa
Ufafanuzi wa Aina | Thamani ya aina | Maelezo |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
Muundo wa VCI_BOARD_INFO una maelezo ya kifaa cha kadi ya Msururu wa USB-CAN.
Muundo utajazwa katika chaguo za kukokotoa za VCI_ReadBoardInfo.
Mwanachama:
hw_Toleo
Nambari ya toleo la maunzi, nukuu ya hexadecimal. Mfano 0x0100 inawakilisha V1.00.
Toleo_la_fw
Nambari ya toleo la maunzi, nukuu ya hexadecimal. Mfano 0x0100 inawakilisha V1.00.
Ukurasa wa 2
dr_Toleo
Nambari ya toleo la dereva, nukuu ya hexadecimal. Mfano 0x0100 inawakilisha V1.00.
katika_Toleo
Nambari ya toleo la maktaba ya kiolesura, nukuu ya heksadesimali. Mfano 0x0100 inawakilisha V1.00.
irq_Num
Mfumo umehifadhiwa.
unaweza_Hes
Inawakilisha jumla ya idadi ya kituo cha CAN.
Nambari_ya_Serial
Nambari ya serial ya kadi hii ya ubao.
str_hw_Aina
Aina ya maunzi, kama vile “USBCAN V1.00” (Kumbuka: Inajumuisha kiondoa kamba '\0').
Imehifadhiwa
Mfumo umehifadhiwa.
2.1.3. VCI_CAN_OBJ
Katika vipengele vya VCI_Transmit na VCI_Receive, muundo wa VCI_CAN_OBJ hutumiwa kusambaza fremu ya ujumbe ya CAN.
Mwanachama:
ID
Kitambulisho cha ujumbe. Umbizo la Kitambulisho cha Moja kwa moja, kilichopangiliwa kulia, tafadhali rejelea: Kiambatisho cha Kwanza: Maelezo ya Mpangilio wa Kitambulisho.
MudaStamp
Kupokea Stamp habari ya muda, anza kuweka muda wakati kidhibiti cha CAN kimeanzishwa, kitengo ni 0. 1ms.
TimeFlag
Katika suala la kama kutumia wakati stamp, 1 ni TimeStamp. TimeFlag na TimeStamp yana maana wakati tu fremu inapokelewa.
TumaAina
Aina ya kutuma. = 0 inaonyesha Aina ya Kawaida, = 1 inaonyesha Tuma Moja.
Bendera ya Mbali
Ikiwa ni bendera ya mbali. = 1 inaonyesha bendera ya mbali, = 0 inaonyesha bendera ya data.
Bendera ya Nje
Ikiwa ni bendera ya nje. = 1 inaonyesha bendera ya nje, = 0 inaonyesha bendera ya kawaida.
DataLen
Urefu wa data(<=8) ,yaani, urefu wa data.
Data
Data ya pakiti.
Imehifadhiwa
Mfumo umehifadhiwa.
2.1.4. VCI_INIT_CONFIG
Muundo wa VCI_INIT_CONFIG unafafanua usanidi wa uanzishaji wa CAN. Muundo utajazwa katika kazi ya VCI_InitCan.
Mwanachama:
AccCode
Pokea msimbo wa kukubali uliochujwa.
AccMask
Pokea kinyago cha chujio.
Imehifadhiwa
Imehifadhiwa.
Chuja
Mbinu ya kuchuja, ikiruhusu mpangilio wa anuwai 0-3, rejelea sehemu ya 2.2.3 ya jedwali la modi ya kichujio kwa maelezo.
Muda 0
Kigezo cha kiwango cha SJA1000 Baud, Muda0 (BTR0) .
Muda 1
Kigezo cha kiwango cha SJA1000 Baud, Muda1 (BTR1) .
Hali
Hali ya uendeshaji, 0 = operesheni ya kawaida, 1 = Hali ya kusikiliza tu, 2 = kuingia kwa hiari na hali ya kutuma mtihani.
Maoni:
Kuhusu mipangilio ya kichujio tafadhali rejelea: Kiambatisho II: Maagizo ya kuanzisha CANparameta.
CAN Timing0 na Timing1 hutumika kuweka kiwango cha baud, vigezo hivi viwili vinatumika tu katika uanzishaji s.tage.
Jedwali la kawaida la marejeleo la Baud:
CAN kiwango cha Baud | Muda0(BTR0) | Muda1(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 |
- Watumiaji wanahitaji tu kufuata SJA1000 (16MHz) ili kuweka kigezo cha kiwango cha Baud.
- Adapta haiauni kiwango cha Baud chini ya 10K kwa muda.
2.2. MAELEZO YA KAZI
2.2.1. VCI_OpenDevice
Kitendaji hiki kinatumika kuunganisha vifaa.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Imehifadhiwa);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
Imehifadhiwa
Vigezo vya uhifadhi, jaza 0.
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
2.2.2. VCI_CloseDevice
Chaguo hili la kukokotoa linatumika kufunga muunganisho.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
2.2.3. VCI_InitCan
Chaguo hili la kukokotoa linatumika kuanzisha CAN iliyobainishwa.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pNitConfig);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
CANIndex
Fahirisi ya kituo cha CAN, kama vile kunapokuwa na chaneli moja tu ya CAN, nambari ya faharasa ni 0, ikiwa kuna mbili, nambari ya faharasa inaweza kuwa 0 au 1.
pInitConfig
Muundo wa parameta ya uanzishaji. Orodha ya vigezo vya wanachama:
Mwanachama | Maelezo ya Utendaji |
pInitConfig->AccCode | AccCode na AccMask zinaweza kufanya kazi pamoja ili kubainisha ni pakiti zipi zinazoweza kukubalika. Rejesta hizi mbili hutumika kuweka kitambulisho kikiwa kimepangiliwa kushoto, yaani, biti ya juu zaidi (Bit31) ya AccCode na AccMask inapangiliwa na sehemu ya juu zaidi ya thamani ya kitambulisho. |
pInitConfig->AccMask | Viambatisho vya marejeleo kuhusu upatanishi wa kitambulisho: Kiambatisho I: Maelezo ya mpangilio wa kitambulisho. Mfano :Ukiweka thamani ya AccCode kama 0x24600000 (yaani 0x123 inahamishiwa kushoto kwa biti 21), thamani ya AccMask imewekwa kuwa 0x00000000, na kisha ni pakiti zilizo na Kitambulisho cha fremu ya ujumbe wa CAN tu ni 0x123 zinaweza kukubalika (Thamani ya AccMask ya 0x00000000 inaonyesha kuwa biti zote zinafaa. |
vipande). Ikiwa thamani ya AccCode imewekwa kuwa 0x24600000, thamani ya AccMask imewekwa kuwa 0x600000 (0x03 inahamishiwa kushoto kwa biti 21), na kisha ni pakiti zenye Kitambulisho cha fremu ya ujumbe wa CAN pekee ni 0x120 ~ 0x123 zinaweza kukubaliwa (Thamani ya AccMask 0x600000 inaonyesha kuwa kando na bit0 ~ bit1 biti zingine (bit2 ~ bit10) ni muhimu). Kumbuka: Mpangilio wa kichujio hiki kwa mfanoamples kwa fremu ya kawaida, kwa mfanoample, juu 11-bit ni biti halali; katika kesi ya sura iliyopanuliwa, na kisha kitambulisho halali ni 29-bit. AccCode na AccMask zimeweka 29-bit ya juu kama biti halali! |
|
pInitConfig->Imehifadhiwa | zimehifadhiwa |
pInitConfig->Chuja | Mipangilio ya hali ya uchujaji tafadhali rejelea sehemu ya jedwali la modi ya kichujio. |
pInitConfig->Timing0 | Mpangilio wa kiwango cha BaudT0 |
pInitConfig->Timing1 | Mpangilio wa kiwango cha BaudT1 |
pInitConfig->Modi | Uendeshaji mode: 0-operesheni ya kawaida Hali ya 1-Sikiliza pekee 2-ya hiari ya kuingia na kutuma hali ya majaribio (thamani hii haijajumuishwa kwenye maktaba ya utendaji ya ZLG) |
Jedwali la hali ya kichujio:
Thamani | Jina | Maelezo |
1 | Pokea aina zote | Inafaa kwa sura ya kawaida na iliyopanuliwa! |
2 | Pokea fremu ya kawaida pekee | Inafaa kwa sura ya kawaida, na kupanuliwa |
sura itaondolewa kwa kuchujwa moja kwa moja! | ||
3 | Pokea fremu iliyopanuliwa pekee | Inafaa kwa fremu iliyopanuliwa, na fremu ya kawaida itaondolewa na kuchuja moja kwa moja! . |
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
Mfano
2.2.4. VCI_ReadBoardInfo
Kitendaji hiki kinatumika kusoma maelezo ya maunzi ya adapta. Kwa ujumla, inaweza kupuuzwa.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevInfo,PVCI_BOARD_INFO pInfo);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB- CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0. pInfo
VCI_BOARD_INFO hutumika kuhifadhi kielekezi cha muundo wa maelezo ya kifaa.
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
2.2.5. VCI_GetReceiveNum
Chaguo hili la kukokotoa linatumika kubainisha fremu zilizopokewa lakini hazijasomwa katika bafa iliyoteuliwa.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB- CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
CANIndex
CAN faharasa ya kituo.
Inarudi:
Rejesha fremu ambazo bado hazijasomwa.
Mfano
#jumuisha "ControlCan.h" int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Chaguo hili la kukokotoa hutumika kufuta kipokezi na kutuma akiba cha chaneli iliyoteuliwa iliyobainishwa na
Adapta ya USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB- CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
CANIndex
CAN faharasa ya kituo.
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
2.2.7. VCI_StartCAN
Chaguo hili la kukokotoa hutumika kuanzisha kidhibiti cha CAN na kitendakazi cha mapokezi ya kukatiza kwa ndani ya adapta.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
CANIndex
CAN faharasa ya kituo.
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
2.2.8. VCI_Weka UpyaCAN
Chaguo hili la kukokotoa linatumika kuweka upya kidhibiti cha CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
CANIndex
CAN faharasa ya kituo.
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
2.2.9. VCI_Transmit
Chaguo hili la kukokotoa linatumika kutuma fremu ya ujumbe ya CAN.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
CANIndex
CAN faharasa ya kituo. pTuma
Anwani ya kwanza ya safu za fremu za data ambazo zinapaswa kutumwa.
Urefu
Idadi ya fremu za data zinazopaswa kutumwa, nambari ya juu zaidi ni 1000, thamani iliyopendekezwa ni 48 chini ya kasi ya juu.
Inarudi:
Rudisha nambari halisi ya fremu ambazo tayari zimetumwa, thamani ya kurejesha = -1 inaonyesha hitilafu ya kifaa.
Mfano
2.2.10. VCI_Pokea
Chaguo hili la kukokotoa linatumika kuomba mapokezi.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
CANIndex
CAN faharasa ya kituo.
Pokea
Ili kupokea kielekezi cha seti ya kwanza ya fremu za data.
Len
Urefu wa safu ya fremu ya data lazima uwe zaidi ya 2500 ili kurejesha ujumbe wa kawaida.
Vinginevyo, urefu wa kurudi utakuwa sufuri ikiwa ujumbe umepokelewa au la. adapta iliweka bafa ya fremu 2000 kwa kila chaneli. Kulingana na mfumo wake mwenyewe na mazingira ya kufanya kazi, mtumiaji anaweza kuchagua urefu unaofaa wa safu kutoka 2500.
Muda wa Kusubiri Umehifadhiwa.
Inarudi:
Rudisha idadi ya fremu ambazo zimesomwa, -1 inaonyesha hitilafu za kifaa.
Mfano
SEHEMU YA TATU KAZI NYINGINE NA MAELEZO YA MUUNDO WA DATA
Sura hii inaelezea aina nyingine za data na utendakazi wa maktaba ya kiolesura isiyooana ya ZLG iliyo katika maktaba ya kiolesura cha adapta ya USB-CAN ControlCAN.dll. Tafadhali fanya
usiziite vitendaji hivi ikiwa utatumia modeli inayolingana ya ZLG kwa ukuzaji wa pili ili isiathiri utangamano.
3.1 MAELEZO YA KAZI
3.1.1. VCI_UsbDeviceReset
Weka upya adapta ya USB-CAN, unahitaji kufungua tena kifaa baada ya kuweka upya kwa kutumia VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Imehifadhiwa
Vigezo:
DevType
Aina ya kifaa. Tazama: Ufafanuzi wa aina ya kifaa cha Adapta.
DevIndex
Kielezo cha Kifaa, kwa mfanoample, wakati kuna adapta moja tu ya USB-CAN, nambari ya faharasa ni 0, wakati kuna adapta nyingi za USB-CAN, nambari za faharasa katika mpangilio wa kupanda kuanzia 0.
Imehifadhiwa Imehifadhiwa.
Inarudi:
Thamani ya kurudi = 1, ambayo ina maana kwamba operesheni imefanikiwa; = 0 inaonyesha kuwa operesheni imeshindwa; = -1 inaonyesha kuwa kifaa haipo.
bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 0);
3.1.2. VCI_FindUsbDevice2
Wakati Kompyuta hiyo hiyo ikitumia USB-CAN nyingi, mtumiaji anaweza kutumia chaguo hili kupata kifaa cha sasa.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Vigezo:
pInfo
pInfo hutumika kuhifadhi vigezo vya kielekezi cha kwanza cha anwani ya akiba ya data.
Inarudi
Rudisha nambari ya adapta ya USB-CAN iliyochomekwa kwenye kompyuta.
Sehemu ya Nne Kazi za Maktaba ya Kiolesura Kwa Kutumia Mchakato
Ili kuzidisha utendakazi wa kifaa, tulitoa vitendaji vya ziada( vitendaji vilivyowasilishwa kwa mandharinyuma ya kijani), vitendaji hivi ni pamoja na: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Wakati wa usanidi wa pili, majukumu haya si lazima yatumiwe. Hata kazi hizi hazizingatiwi, kazi zote za adapta za USB-CAN zinaweza kupatikana.
www.waveshare.com
www.waveshare.com/wiki
Nyaraka / Rasilimali
![]() |
WAVESHARE USB-CAN Bus Interface Maktaba ya Kiolesura cha Adapta [pdf] Mwongozo wa Maelekezo Maktaba ya Kiolesura cha Kiolesura cha Mabasi ya USB-CAN, USB-CAN, Maktaba ya Kiolesura cha Kiolesura cha Mabasi Interface, Maktaba ya Kiolesura cha Kiolesura, Maktaba ya Kazi. |