ចំណុចប្រទាក់ឡានក្រុង USB-CAN
មុខងារចំណុចប្រទាក់អាដាប់ធ័រ
ការណែនាំអ្នកប្រើប្រាស់បណ្ណាល័យ
ភាគមួយចប់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 ។
សមាជិក៖
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 ។
សមាជិក៖
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 ។
សមាជិក៖
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 |
- អ្នកប្រើប្រាស់គ្រាន់តែធ្វើតាម SJA1000 (16MHz) ដើម្បីកំណត់ប៉ារ៉ាម៉ែត្រអត្រា Baud ។
- អាដាប់ទ័រមិនគាំទ្រអត្រា 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
២.២.២. VCI_បិទឧបករណ៍
មុខងារនេះត្រូវបានប្រើដើម្បីបិទការតភ្ជាប់។
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
ប៉ារ៉ាម៉ែត្រ៖
ប្រភេទ DevType
ប្រភេទឧបករណ៍។ សូមមើល៖ និយមន័យប្រភេទឧបករណ៍អាដាប់ទ័រ។
DevIndex
សន្ទស្សន៍ឧបករណ៍ ឧample នៅពេលដែលមានអាដាប់ទ័រ USB-CAN តែមួយ លេខលិបិក្រមគឺ 0 នៅពេលដែលមានអាដាប់ទ័រ USB-CAN ច្រើន លេខលិបិក្រមក្នុងលំដាប់ឡើងដោយចាប់ផ្តើមពី 0 ។
ត្រឡប់៖
តម្លៃត្រឡប់ = 1 ដែលមានន័យថាប្រតិបត្តិការបានជោគជ័យ; = 0 បង្ហាញថាប្រតិបត្តិការបានបរាជ័យ; = -1 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
២.២.៣. 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
ឧ
២.២.៤. 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
២.២.៥. 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
២.២.៧. 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
២.២.៨. 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
២.២.៩. 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 បង្ហាញពីកំហុសឧបករណ៍។
ឧ
២.២.១០. 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 បង្ហាញពីកំហុសឧបករណ៍។
ឧ
ផ្នែកទី 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 បង្ហាញថាឧបករណ៍នេះមិនមានទេ។
bRel = VCI_UsbDeviceReset(nDeviceType, Independence, 0);
៣.១.២. VCI_FindUsbDevice3.1.2
នៅពេលដែលកុំព្យូទ័រដូចគ្នាដោយប្រើ USB-CAN ច្រើន អ្នកប្រើប្រាស់អាចប្រើមុខងារនេះដើម្បីស្វែងរកឧបករណ៍បច្ចុប្បន្ន។
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
ប៉ារ៉ាម៉ែត្រ៖
pInfo
pInfo ត្រូវបានប្រើដើម្បីរក្សាទុកប៉ារ៉ាម៉ែត្រនៃទ្រនិចអាសយដ្ឋានសតិបណ្ដោះអាសន្នទិន្នន័យដំបូង។
ត្រឡប់មកវិញ
ត្រឡប់លេខអាដាប់ទ័រ USB-CAN ដែលបានដោតចូលទៅក្នុងកុំព្យូទ័រ។
ផ្នែកទីបួន មុខងារបណ្ណាល័យចំណុចប្រទាក់ដោយប្រើដំណើរការ
ដើម្បីគុណមុខងារឧបករណ៍ យើងបានផ្តល់មុខងារបន្ថែម (មុខងារដែលបង្ហាញដោយផ្ទៃខាងក្រោយពណ៌បៃតង) មុខងារទាំងនេះរួមមាន៖ VCI_FindUsbDevice2 VCI_UsbDeviceReset។ ក្នុងអំឡុងពេលនៃការអភិវឌ្ឍន៍ទីពីរ មុខងារទាំងនេះមិនចាំបាច់ត្រូវបានហៅនោះទេ។ សូម្បីតែមុខងារទាំងនេះមិនត្រូវបានអើពើ មុខងារអាដាប់ទ័រ USB-CAN ទាំងអស់អាចសម្រេចបាន។
គេហទំព័រ 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 |