និមិត្តសញ្ញា WAVESHAREចំណុចប្រទាក់ឡានក្រុង USB-CAN
មុខងារចំណុចប្រទាក់អាដាប់ធ័រ
ការណែនាំអ្នកប្រើប្រាស់បណ្ណាល័យWAVESHARE USB CAN Bus Inter face Adapter Interface បណ្ណាល័យមុខងារ

ភាគមួយចប់VIEW

ប្រសិនបើអ្នកប្រើគ្រាន់តែប្រើអាដាប់ទ័រចំណុចប្រទាក់ឡានក្រុង USB-CAN ដើម្បីបន្តការធ្វើតេស្តទំនាក់ទំនងរថយន្តក្រុង CAN ហើយបន្ទាប់មកគាត់អាចប្រើកម្មវិធីឧបករណ៍ USB-CAN ដែលត្រូវបានផ្គត់ផ្គង់ដោយផ្ទាល់សម្រាប់ការផ្ញើ និងទទួលទិន្នន័យនៃការធ្វើតេស្ត។
ប្រសិនបើអ្នកប្រើមានបំណងសរសេរកម្មវិធីសូហ្វវែរសម្រាប់ផលិតផលផ្ទាល់ខ្លួនរបស់គាត់។ សូមអានដោយប្រុងប្រយ័ត្ននូវការណែនាំខាងក្រោម ហើយយកឯកសារយោងពី សampលេខកូដដែលយើងផ្តល់ជូន៖
⑴ 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 បណ្ណាល័យមុខងារដែលត្រូវគ្នា និងរចនាសម្ព័ន្ធទិន្នន័យ

២.១. ប្រភេទនិយមន័យ
២.១.១. ប្រភេទឧបករណ៍

ប្រភេទនិយមន័យ វាយតំលៃ ការពិពណ៌នា
DEV_USBCAN2 4 USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN

២.១.២. VCI_BOARD_INFO
រចនាសម្ព័ន្ធ VCI_BOARD_INFO មានព័ត៌មានឧបករណ៍ចំណុចប្រទាក់ USB-CAN Series ។
រចនាសម្ព័ន្ធនឹងត្រូវបានបំពេញនៅក្នុងមុខងារ VCI_ReadBoardInfo ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 1

សមាជិក៖
hw_កំណែ
លេខកំណែផ្នែករឹង សញ្ញាគោលដប់ប្រាំមួយ។ ឧទាហរណ៍ 0x0100 តំណាងឱ្យ V1.00 ។
fw_កំណែ
លេខកំណែផ្នែករឹង សញ្ញាគោលដប់ប្រាំមួយ។ ឧទាហរណ៍ 0x0100 តំណាងឱ្យ V1.00 ។
ទំព័រ 2
dr_Version

លេខកំណែកម្មវិធីបញ្ជា សញ្ញាគោលដប់ប្រាំមួយ។ ឧទាហរណ៍ 0x0100 តំណាងឱ្យ V1.00 ។
ក្នុង_កំណែ
លេខកំណែបណ្ណាល័យចំណុចប្រទាក់ សញ្ញាគោលដប់ប្រាំមួយ។ ឧទាហរណ៍ 0x0100 តំណាងឱ្យ V1.00 ។
irq_Num
ប្រព័ន្ធបម្រុងទុក។
can_Num
តំណាងឱ្យចំនួនសរុបនៃឆានែល CAN ។
str_Serial_Num
លេខសៀរៀលនៃកាតក្តារនេះ។
str_hw_ប្រភេទ
ប្រភេទ Hardware ដូចជា “USBCAN V1.00” (ចំណាំ៖ រួមបញ្ចូល string terminator '\0')។
កក់ទុក
ប្រព័ន្ធបម្រុងទុក។
២.១.៣. VCI_CAN_OBJ
នៅក្នុងមុខងារ VCI_Transmit និង VCI_Receive រចនាសម្ព័ន្ធ VCI_CAN_OBJ ត្រូវបានប្រើដើម្បីបញ្ជូនស៊ុមសារ CAN ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាព

សមាជិក៖
ID
ការកំណត់អត្តសញ្ញាណសារ។ ទម្រង់ ID ផ្ទាល់ តម្រឹមស្តាំ សូមយោងទៅ៖ ឧបសម្ព័ន្ធទី ១៖ ព័ត៌មានលម្អិតអំពីការតម្រឹមលេខសម្គាល់។
ពេលវេលាamp
ការទទួល stamp ព័ត៌មាននៃស៊ុមពេលវេលា ចាប់ផ្តើមពេលវេលានៅពេលដែលឧបករណ៍បញ្ជា CAN ត្រូវបានចាប់ផ្តើម ឯកតាគឺ 0. 1ms ។
TimeFlag
នៅក្នុងលក្ខខណ្ឌនៃថាតើត្រូវប្រើពេលវេលា stamp, 1 គឺជា TimeStamp. TimeFlag និង TimeStamp មានអត្ថន័យតែនៅពេលដែលស៊ុមត្រូវបានទទួល។
ផ្ញើប្រភេទ
ប្រភេទបញ្ជូន។ = 0 បង្ហាញពីប្រភេទធម្មតា = 1 បង្ហាញពីការបញ្ជូនតែមួយ។
ទង់ពីចម្ងាយ
ថាតើវាជាទង់ពីចម្ងាយ។ = 1 បង្ហាញទង់ពីចម្ងាយ = 0 បង្ហាញពីទង់ទិន្នន័យ។
ទង់ជាតិខាងក្រៅ
ថាតើវាជាទង់ជាតិខាងក្រៅ។ = 1 បង្ហាញពីទង់ខាងក្រៅ = 0 បង្ហាញពីទង់ស្តង់ដារ។
ទិន្នន័យលេន
Data length(<=8) នោះគឺជាប្រវែងនៃទិន្នន័យ។
ទិន្នន័យ
ទិន្នន័យកញ្ចប់។
កក់ទុក
ប្រព័ន្ធបម្រុងទុក។
២.១.៤. VCI_INIT_CONFIG
រចនាសម្ព័ន្ធ VCI_INIT_CONFIG កំណត់ការកំណត់រចនាសម្ព័ន្ធការចាប់ផ្តើមនៃ CAN ។ រចនាសម្ព័ន្ធនឹងត្រូវបានបំពេញនៅក្នុងមុខងារ VCI_InitCan ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 2

សមាជិក៖
AccCode
ទទួលបានលេខកូដទទួលយកដែលបានត្រង។
AccMask
ទទួលរបាំងតម្រង។
កក់ទុក
កក់ទុក។
តម្រង
វិធីសាស្ត្រតម្រង ដែលអនុញ្ញាតឱ្យកំណត់ជួរ 0-3 យោងទៅផ្នែក 2.2.3 នៃតារាងរបៀបតម្រង សម្រាប់ព័ត៌មានលម្អិត។
ពេលវេលា0
ប៉ារ៉ាម៉ែត្រអត្រា SJA1000 Baud, Timing0 (BTR0) ។
ពេលវេលា1
ប៉ារ៉ាម៉ែត្រអត្រា SJA1000 Baud, Timing1 (BTR1) ។
របៀប
របៀបប្រតិបត្តិការ, 0 = ប្រតិបត្តិការធម្មតា, 1 = របៀបស្តាប់បានតែ, 2 = ការចូលដោយឯកឯង និងការបញ្ជូនរបៀបសាកល្បង។
កំណត់សម្គាល់៖
អំពីការកំណត់តម្រង សូមយោងទៅលើ៖ ឧបសម្ព័ន្ធទី II៖ ការណែនាំអំពីការដំឡើងប៉ារ៉ាម៉ែត្រ CAN ។
CAN Timing0 និង Timing1 ត្រូវបានប្រើដើម្បីកំណត់អត្រា baud ប៉ារ៉ាម៉ែត្រទាំងពីរនេះត្រូវបានប្រើតែនៅពេលចាប់ផ្តើម s ប៉ុណ្ណោះ។tage.
តារាងយោង Baud សាមញ្ញ៖

CAN Baud អត្រា ពេលវេលា0(BTR0) ពេលវេលា1(BTR1)
10k bps 0x31 ០x៤ ស៊ី
20k bps 0x18 ០x៤ ស៊ី
40k bps 0x87 0xFF
50k bps 0x09 ០x៤ ស៊ី
80k bps 0x83 0xFF
100k bps 0x04 ០x៤ ស៊ី
125k bps 0x03 ០x៤ ស៊ី
200k bps 0x81 0xFA
250k bps 0x01 ០x៤ ស៊ី
400k bps 0x80 0xFA
500k bps 0x00 ០x៤ ស៊ី
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
  1. អ្នកប្រើប្រាស់គ្រាន់តែធ្វើតាម SJA1000 (16MHz) ដើម្បីកំណត់ប៉ារ៉ាម៉ែត្រអត្រា Baud ។
  2. អាដាប់ទ័រមិនគាំទ្រអត្រា Baud ជាបណ្តោះអាសន្នក្រោម 10K ទេ។

៥.២. ការពិពណ៌នាមុខងារ
២.២.១. 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - Fig3

២.២.២. VCI_បិទឧបករណ៍
មុខងារនេះត្រូវបានប្រើដើម្បីបិទការតភ្ជាប់។
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
ត្រឡប់៖
តម្លៃត្រឡប់ = 1 ដែលមានន័យថាប្រតិបត្តិការបានជោគជ័យ; = 0 បង្ហាញថាប្រតិបត្តិការបានបរាជ័យ; = -1 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 4

២.២.៣. VCI_InitCan
មុខងារនេះត្រូវបានប្រើដើម្បីចាប់ផ្តើម CAN ដែលបានបញ្ជាក់។
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIdex,
PVCI_INIT_CONFIG pInitConfig);

ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
CANIdex
សន្ទស្សន៍ឆានែល CAN ដូចជានៅពេលដែលមានឆានែល CAN តែមួយ លេខលិបិក្រមគឺ 0 ប្រសិនបើមានពីរ លេខសន្ទស្សន៍អាចជា 0 ឬ 1 ។
pInitConfig
រចនាសម្ព័ន្ធប៉ារ៉ាម៉ែត្រចាប់ផ្តើម។ បញ្ជីប៉ារ៉ាម៉ែត្រនៃសមាជិក៖

សមាជិក ការពិពណ៌នាមុខងារ
pInitConfig-> AccCode AccCode និង AccMask អាចធ្វើការជាមួយគ្នាដើម្បីកំណត់ថាតើកញ្ចប់ព័ត៌មានណាមួយដែលអាចទទួលយកបាន។ ការចុះឈ្មោះទាំងពីរនេះត្រូវបានប្រើដើម្បីកំណត់ ID តម្រឹមឆ្វេង ពោលគឺប៊ីតខ្ពស់បំផុត (Bit31) នៃ AccCode និង AccMask ត្រូវបានតម្រឹមជាមួយប៊ីតខ្ពស់បំផុតនៃតម្លៃលេខសម្គាល់។
pInitConfig-> AccMask អំពីការតម្រឹមលេខសម្គាល់ យោងឧបសម្ព័ន្ធ៖ ឧបសម្ព័ន្ធ I៖
ព័ត៌មានលម្អិតនៃការតម្រឹមលេខសម្គាល់។
ឧទាហរណ៍៖ ប្រសិនបើអ្នកកំណត់តម្លៃនៃ AccCode ជា 0x24600000 (ឧទាហរណ៍ 0x123 ត្រូវបានប្តូរទៅខាងឆ្វេងដោយ 21 ប៊ីត) តម្លៃ AccMask
ត្រូវបានកំណត់ទៅ 0x00000000 ហើយបន្ទាប់មកមានតែកញ្ចប់ព័ត៌មានដែលមានលេខសម្គាល់ស៊ុមសារ CAN គឺ 0x123 ប៉ុណ្ណោះដែលអាចទទួលយកបាន (តម្លៃ AccMask នៃ 0x00000000 បង្ហាញថាប៊ីតទាំងអស់ពាក់ព័ន្ធ
ប៊ីត) ។ ប្រសិនបើតម្លៃ AccCode ត្រូវបានកំណត់ទៅ 0x24600000 តម្លៃ AccMask ត្រូវបានកំណត់ទៅ 0x600000 (0x03 ត្រូវបានប្តូរទៅខាងឆ្វេងដោយ 21 ប៊ីត) ហើយបន្ទាប់មកមានតែកញ្ចប់ព័ត៌មានដែលមានលេខសម្គាល់ស៊ុមសារ CAN គឺ 0x120 ~ 0x123 ប៉ុណ្ណោះដែលអាចទទួលយកបាន (តម្លៃ AccMask
0x600000 បង្ហាញថាក្រៅពី bit0 ~ bit1 ប៊ីតផ្សេងទៀត (bit2 ~ bit10) គឺពាក់ព័ន្ធប៊ីត)។
ចំណាំ៖ ការកំណត់តម្រងនេះ ឧamples ទៅស៊ុមស្តង់ដារឧទាហរណ៍ample, ខ្ពស់ 11-bit គឺជាប៊ីតត្រឹមត្រូវ; នៅក្នុងករណីនៃស៊ុមពង្រីក ហើយបន្ទាប់មកលេខសម្គាល់ដែលមានសុពលភាពគឺ 29 ប៊ីត។ AccCode និង AccMask កំណត់កម្រិតខ្ពស់ 29-bit ជាប៊ីតត្រឹមត្រូវ!
pInitConfig-> បម្រុងទុក បម្រុង
pInitConfig-> តម្រង ការកំណត់របៀបតម្រង សូមយោងទៅផ្នែកនៃតារាងរបៀបតម្រង។
pInitConfig->ពេលវេលា 0 ការកំណត់ Baud rateT0
pInitConfig->ពេលវេលា 1 ការកំណត់ Baud rateT1
pInitConfig-> របៀប របៀបប្រតិបត្តិការ៖
0- ដំណើរការធម្មតា។
1- របៀបស្តាប់តែប៉ុណ្ណោះ
2- របៀបចូលរៀន និងបញ្ជូនដោយឯកឯង (តម្លៃនេះត្រូវបានដកចេញពីបណ្ណាល័យមុខងារ ZLG)

តារាងរបៀបតម្រង៖

តម្លៃ ឈ្មោះ ការពិពណ៌នា
1 ទទួលគ្រប់ប្រភេទ សាកសមទាំងស៊ុមស្តង់ដារ និងពង្រីក!
2 ទទួលបានតែស៊ុមស្តង់ដារប៉ុណ្ណោះ។ សាកសមនឹងស៊ុមស្តង់ដារ និងពង្រីក
ស៊ុមនឹងត្រូវបានយកចេញដោយការច្រោះដោយផ្ទាល់!
3 ទទួលបានតែស៊ុមពង្រីកប៉ុណ្ណោះ។ សមស្របទៅនឹងស៊ុមពង្រីក ហើយស៊ុមស្តង់ដារនឹងត្រូវបានយកចេញដោយ
តម្រងដោយផ្ទាល់! .

ត្រឡប់៖
តម្លៃត្រឡប់ = 1 ដែលមានន័យថាប្រតិបត្តិការបានជោគជ័យ; = 0 បង្ហាញថាប្រតិបត្តិការបានបរាជ័យ; = -1 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 4

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 6

២.២.៤. 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 7

២.២.៥. VCI_GetReceiveNum
អនុគមន៍​នេះ​ត្រូវ​បាន​ប្រើ​ដើម្បី​បញ្ជាក់​ស៊ុម​ដែល​បាន​ទទួល ប៉ុន្តែ​មិន​ត្រូវ​បាន​អាន​ក្នុង​សតិបណ្ដោះ​អាសន្ន​ទទួល​ដែល​បាន​កំណត់។
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
CANIdex
សន្ទស្សន៍ឆានែល CAN ។
ត្រឡប់៖
ត្រឡប់ស៊ុមដែលមិនទាន់បានអាន។

#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
២.២.៦. VCI_ClearBuffer
មុខងារនេះត្រូវបានប្រើដើម្បីសម្អាតការទទួល និងផ្ញើសតិបណ្ដោះអាសន្ននៃឆានែលដែលបានកំណត់ដែលបានបញ្ជាក់ដោយ
អាដាប់ទ័រ USB-CAN ។
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIdex);
ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
CANIdex
សន្ទស្សន៍ឆានែល CAN ។
ត្រឡប់៖
តម្លៃត្រឡប់ = 1 ដែលមានន័យថាប្រតិបត្តិការបានជោគជ័យ; = 0 បង្ហាញថាប្រតិបត្តិការបានបរាជ័យ; = -1 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 8

២.២.៧. VCI_StartCAN
មុខងារនេះត្រូវបានប្រើដើម្បីចាប់ផ្តើមឧបករណ៍បញ្ជា CAN និងមុខងារទទួលការរំខានខាងក្នុងរបស់អាដាប់ទ័រ។
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIdex);
ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
CANIdex
សន្ទស្សន៍ឆានែល CAN ។
ត្រឡប់៖
តម្លៃត្រឡប់ = 1 ដែលមានន័យថាប្រតិបត្តិការបានជោគជ័យ; = 0 បង្ហាញថាប្រតិបត្តិការបានបរាជ័យ; = -1 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 9

២.២.៨. VCI_ResetCAN
មុខងារនេះត្រូវបានប្រើដើម្បីកំណត់ឧបករណ៍បញ្ជា CAN ឡើងវិញ។
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIdex);
ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
CANIdex
សន្ទស្សន៍ឆានែល CAN ។
ត្រឡប់៖
តម្លៃត្រឡប់ = 1 ដែលមានន័យថាប្រតិបត្តិការបានជោគជ័យ; = 0 បង្ហាញថាប្រតិបត្តិការបានបរាជ័យ; = -1 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 10

២.២.៩. VCI_បញ្ជូន
មុខងារនេះត្រូវបានប្រើដើម្បីផ្ញើស៊ុមសារ CAN ។
DWORD __stdcall VCI_Transmit(ប្រភេទឧបករណ៍ DWORD, DWORD DeviceInd, DWORD CANInd, PVCI_CAN_OBJ pSend, DWORD Length);
ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
CANIdex
សន្ទស្សន៍ឆានែល CAN ។ pSend
អាសយដ្ឋានដំបូងនៃអារេស៊ុមទិន្នន័យដែលត្រូវផ្ញើ។
ប្រវែង
ចំនួននៃស៊ុមទិន្នន័យដែលត្រូវផ្ញើ ចំនួនអតិបរមាគឺ 1000 តម្លៃដែលបានណែនាំគឺ 48 ក្រោមល្បឿនលឿន។
ត្រឡប់៖
ត្រឡប់ចំនួនពិតនៃស៊ុមដែលបានផ្ញើរួចហើយ តម្លៃត្រឡប់ = -1 បង្ហាញពីកំហុសឧបករណ៍។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 11

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 12

២.២.១០. VCI_ទទួល
មុខងារនេះត្រូវបានប្រើដើម្បីស្នើសុំការទទួល។
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 ។
CANIdex
សន្ទស្សន៍ឆានែល CAN ។
ទទួល
ដើម្បីទទួលបានទ្រនិចកំណត់ដំបូងនៃស៊ុមទិន្នន័យ។
លេន
ប្រវែងអារេនៃស៊ុមទិន្នន័យត្រូវតែលើសពី 2500 ដើម្បីត្រឡប់សារធម្មតា។
បើមិនដូច្នេះទេ ប្រវែងត្រឡប់មកវិញនឹងសូន្យ ថាតើសារត្រូវបានទទួលឬអត់។ អាដាប់ទ័រកំណត់ 2000-frame buffer សម្រាប់រាល់ប៉ុស្តិ៍។ ដោយផ្អែកលើប្រព័ន្ធ និងបរិយាកាសការងារផ្ទាល់ខ្លួន អ្នកប្រើប្រាស់អាចជ្រើសរើសប្រវែងអារេសមស្របចាប់ពី 2500។
WaitTime បានបម្រុងទុក។
ត្រឡប់៖
ត្រឡប់ចំនួនស៊ុមដែលបានអានពិតប្រាកដ -1 បង្ហាញពីកំហុសឧបករណ៍។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 13

ផ្នែកទី 3 មុខងារផ្សេងទៀត និងការពិពណ៌នារចនាសម្ព័ន្ធទិន្នន័យ

ជំពូកនេះពិពណ៌នាអំពីប្រភេទទិន្នន័យ និងមុខងារផ្សេងទៀតនៃបណ្ណាល័យចំណុចប្រទាក់ ZLG ដែលមិនត្រូវគ្នាដែលមាននៅក្នុងបណ្ណាល័យចំណុចប្រទាក់អាដាប់ធ័រ USB-CAN ControlCAN.dll ។ សូមធ្វើ
កុំហៅមុខងារទាំងនេះ ប្រសិនបើប្រើគំរូ ZLG ដែលត្រូវគ្នាសម្រាប់ការអភិវឌ្ឍន៍បន្ទាប់បន្សំ ដើម្បីកុំឱ្យប៉ះពាល់ដល់ភាពឆបគ្នា។
3.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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 14

bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 0);
៣.១.២. VCI_FindUsbDevice3.1.2
នៅពេលដែលកុំព្យូទ័រដូចគ្នាដោយប្រើ USB-CAN ច្រើន អ្នកប្រើប្រាស់អាចប្រើមុខងារនេះដើម្បីស្វែងរកឧបករណ៍បច្ចុប្បន្ន។
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
ប៉ារ៉ាម៉ែត្រ៖
pInfo
pInfo ត្រូវបានប្រើដើម្បីរក្សាទុកប៉ារ៉ាម៉ែត្រនៃទ្រនិចអាសយដ្ឋានសតិបណ្ដោះអាសន្នទិន្នន័យដំបូង។
ត្រឡប់មកវិញ
ត្រឡប់លេខអាដាប់ទ័រ USB-CAN ដែលបានដោតចូលទៅក្នុងកុំព្យូទ័រ។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 15

ផ្នែកទីបួន មុខងារបណ្ណាល័យចំណុចប្រទាក់ដោយប្រើដំណើរការ
ដើម្បីគុណមុខងារឧបករណ៍ យើងបានផ្តល់មុខងារបន្ថែម (មុខងារដែលបង្ហាញដោយផ្ទៃខាងក្រោយពណ៌បៃតង) មុខងារទាំងនេះរួមមាន៖ VCI_FindUsbDevice2 VCI_UsbDeviceReset។ ក្នុងអំឡុងពេលនៃការអភិវឌ្ឍន៍ទីពីរ មុខងារទាំងនេះមិនចាំបាច់ត្រូវបានហៅនោះទេ។ សូម្បីតែមុខងារទាំងនេះមិនត្រូវបានអើពើ មុខងារអាដាប់ទ័រ USB-CAN ទាំងអស់អាចសម្រេចបាន។

WAVESHARE USB CAN Bus Inter face Adapter Interface Function Library - រូបភាពទី 16

គេហទំព័រ www.waveshare.com
www.waveshare.com/wiki

ឯកសារ/ធនធាន

WAVESHARE USB-CAN Bus Inter face បណ្ណាល័យមុខងារចំណុចប្រទាក់អាដាប់ទ័រ [pdf] សៀវភៅណែនាំ
USB-CAN Bus Interface Adapter Interface Function Library, USB-CAN, Bus Inter face Adapter Interface Function Library, Interface Function Library, Function Library

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *