USB-CAN Bus Interface
Adapter Interface Function
စာကြည့်တိုက်အသုံးပြုသူညွှန်ကြားချက်
အပိုင်းတစ်ပိုင်းပြီးပါပြီ။VIEW
အကယ်၍ အသုံးပြုသူသည် CAN bus ဆက်သွယ်မှုစမ်းသပ်မှုတွင် USB-CAN bus interface adapter ကိုအသုံးပြုပါက၊ ထို့နောက် စမ်းသပ်မှု၏ဒေတာပေးပို့ခြင်းနှင့်လက်ခံခြင်းအတွက် ထောက်ပံ့ပေးထားသော USB-CAN Tool ဆော့ဖ်ဝဲလ်ကို တိုက်ရိုက်အသုံးပြုနိုင်ပါသည်။
အကယ်၍ အသုံးပြုသူသည် ၎င်း၏ကိုယ်ပိုင်ထုတ်ကုန်များအတွက် ဆော့ဖ်ဝဲလ်ပရိုဂရမ်ရေးရန် ရည်ရွယ်ထားလျှင်။ ကျေးဇူးပြု၍ အောက်ပါညွှန်ကြားချက်များကို ဂရုတစိုက်ဖတ်ပြီး s မှကိုးကားပါ။ampကျွန်ုပ်တို့ပေးသော le ကုဒ်
⑴ 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 ဗားရှင်းစာကြည့်တိုက် လုပ်ဆောင်ချက် ပက်ကေ့ဂျ် module :ControlCAN.llb
Delphi ဗားရှင်းလုပ်ဆောင်ချက် ကြေငြာချက် file: ControlCAN.pas
အပိုင်းနှစ်တွင် တွဲဖက်လုပ်ဆောင်နိုင်သော စာကြည့်တိုက်နှင့် ဒေတာဖွဲ့စည်းပုံ
၂.၁။ အမျိုးအစား သတ်မှတ်ချက်
၂.၁.၁။ စက်အမျိုးအစား
အဓိပ္ပာယ်ဖွင့်ဆိုချက် | တန်ဖိုးကို ရိုက်ထည့်ပါ။ | ဖော်ပြချက် |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
၂.၁.၂။ VCI_BOARD_INFO
VCI_BOARD_INFO ဖွဲ့စည်းပုံတွင် USB-CAN စီးရီး အင်တာဖေ့စ်ကတ် ကိရိယာ အချက်အလက် ပါရှိသည်။
ဖွဲ့စည်းပုံကို VCI_ReadBoardInfo လုပ်ဆောင်ချက်တွင် ဖြည့်သွင်းမည်ဖြစ်သည်။
အဖွဲ့ဝင်-
hw_ဗားရှင်း
ဟာ့ဒ်ဝဲဗားရှင်းနံပါတ်၊ ဆဋ္ဌမကိန်းဂဏန်းအမှတ်အသား။ ဥပမာ 0x0100 သည် V1.00 ကိုကိုယ်စားပြုသည်။
fw_ဗားရှင်း
ဟာ့ဒ်ဝဲဗားရှင်းနံပါတ်၊ ဆဋ္ဌမကိန်းဂဏန်းအမှတ်အသား။ ဥပမာ 0x0100 သည် V1.00 ကိုကိုယ်စားပြုသည်။
စာမျက်နှာ ၂၃
dr_ဗားရှင်း
Driver ဗားရှင်းနံပါတ်၊ hexadecimal သင်္ကေတ။ ဥပမာ 0x0100 သည် V1.00 ကိုကိုယ်စားပြုသည်။
in_Version
အင်တာဖေ့စ်ဒစ်ဂျစ်တိုက် ဗားရှင်းနံပါတ်၊ ဆဋ္ဌမတန်အမှတ်အသား။ ဥပမာ 0x0100 သည် V1.00 ကိုကိုယ်စားပြုသည်။
irq_Num
စနစ်တို့ ဘာတို့ပေါ့။
can_Num
CAN ချန်နယ် စုစုပေါင်း အရေအတွက်ကို ကိုယ်စားပြုသည်။
str_Serial_Num
ဤဘုတ်ကတ်၏ အမှတ်စဉ်နံပါတ်။
str_hw_အမျိုးအစား
“USBCAN V1.00” ကဲ့သို့သော ဟာ့ဒ်ဝဲအမျိုးအစား (မှတ်ချက်- string terminator '\0' ပါ၀င်သည်)။
လက်ဝယ်ရှိတယ်။
စနစ်တို့ ဘာတို့ပေါ့။
၂.၁.၃။ VCI_CAN_OBJ
VCI_Transmit နှင့် VCI_Receive လုပ်ဆောင်ချက်များတွင် CAN မက်ဆေ့ချ်ဘောင်ကို ပေးပို့ရန်အတွက် VCI_CAN_OBJ ဖွဲ့စည်းပုံကို အသုံးပြုသည်။
အဖွဲ့ဝင်-
ID
မက်ဆေ့ဂျ် သတ်မှတ်စနစ်။ Direct ID ဖော်မတ်၊ ညာဘက်ညှိထားသော၊ ကျေးဇူးပြု၍ နောက်ဆက်တွဲ ၁- ID ချိန်ညှိမှု အသေးစိတ်ကို ကိုးကားပါ။
အချိန်amp
စတုံကိုလက်ခံခြင်း။amp အချိန်ဘောင်၏ အချက်အလက်၊ CAN ထိန်းချုပ်ကိရိယာကို စတင်သည့်အခါ စတင်ချိန်၊ ယူနစ်သည် 0. 1ms ဖြစ်သည်။
TimeFlag
စည်းကမ်းချက်များ၌ အချိန်ကို အသုံးပြုရန်ရှိမရှိ၊amp1 သည် ထိရောက်သော TimeStamp. TimeFlag နှင့် TimeStamp frame ကို လက်ခံရရှိမှသာ အဓိပ္ပါယ်ရှိမှာ ဖြစ်ပါတယ်။
SendType
ပေးပို့ခြင်းအမျိုးအစား။ = 0 သည် ပုံမှန်အမျိုးအစားကို ညွှန်ပြသည်၊ = 1 သည် Single Send ကို ညွှန်ပြသည်။
အဝေးထိန်းအလံ
အဝေး အလံပဲဖြစ်ဖြစ်၊ = 1 သည် အဝေးမှ အလံကို ညွှန်ပြသည်၊ = 0 သည် ဒေတာအလံကို ညွှန်ပြသည်။
ExternFlag
ပြင်ပအလံပဲဖြစ်ဖြစ်၊ = 1 သည် ပြင်ပအလံကို ညွှန်ပြသည်၊ = 0 သည် စံအလံကို ညွှန်ပြသည်။
DataLen
Data length(<=8)၊ ဆိုလိုသည်မှာ ဒေတာအရှည်။
ဒေ
ထုပ်ပိုးဒေတာ။
လက်ဝယ်ရှိတယ်။
စနစ်တို့ ဘာတို့ပေါ့။
၂.၁.၄။ VCI_INIT_CONFIG
VCI_INIT_CONFIG ဖွဲ့စည်းတည်ဆောက်ပုံသည် CAN ၏ ကနဦးဖွဲ့စည်းမှုပုံစံကို သတ်မှတ်သည်။ ဖွဲ့စည်းပုံကို VCI_InitCan လုပ်ဆောင်ချက်တွင် ဖြည့်သွင်းမည်ဖြစ်သည်။
အဖွဲ့ဝင်-
AccCode
စစ်ထုတ်ထားသော လက်ခံကုဒ်ကို ရယူပါ။
AccMask
စစ်ထုတ်သည့်မျက်နှာဖုံးကို လက်ခံပါ။
လက်ဝယ်ရှိတယ်။
လက်ဝယ်ရှိတယ်။
ဇကာ
အပိုင်းအခြား 0-3 ကို ချိန်ညှိခြင်းအား ခွင့်ပြုသော စစ်ထုတ်ခြင်းနည်းလမ်း၊ အသေးစိတ်အတွက် filter မုဒ်ဇယား၏ အပိုင်း 2.2.3 ကို ကိုးကားပါ။
အချိန်ကိုက်0
SJA1000 Baud နှုန်းသတ်မှတ်ချက်၊ Timing0 (BTR0)။
အချိန်ကိုက်1
SJA1000 Baud နှုန်းသတ်မှတ်ချက်၊ Timing1 (BTR1)။
မုဒ်
လည်ပတ်မှုမုဒ်၊ 0 = ပုံမှန် လည်ပတ်မှု၊ 1 = နားထောင်ရန် သီးသန့်မုဒ်၊ 2 = အလိုအလျောက် ဝန်ခံချက် ပေးပို့ခြင်း စမ်းသပ်မုဒ်။
မှတ်ချက်-
စစ်ထုတ်ခြင်း ဆက်တင်များအကြောင်း ကျေးဇူးပြု၍ ကျေးဇူးပြု၍- နောက်ဆက်တွဲ II- CANparameter စနစ်ထည့်သွင်းမှု ညွှန်ကြားချက်များကို ဖတ်ရှုပါ။
CAN Timing0 နှင့် Timing1 ကို baud နှုန်းသတ်မှတ်ရန်အသုံးပြုသည်၊ ဤဘောင်နှစ်ခုကို အစပြုခြင်း s တွင်သာအသုံးပြုသည်tage.
သမားရိုးကျ Baud ရည်ညွှန်းဇယား-
Baud နှုန်းကို လုပ်နိုင်သလား | Timing0(BTR0) | Timing1(BTR1) |
10k bps | က0x31 | ၃၂x၄၁C |
20k bps | က0x18 | ၃၂x၄၁C |
40k bps | က0x87 | 0xFF |
50k bps | က0x09 | ၃၂x၄၁C |
80k bps | က0x83 | 0xFF |
100k bps | က0x04 | ၃၂x၄၁C |
125k bps | က0x03 | ၃၂x၄၁C |
200k bps | က0x81 | 0xfa |
250k bps | က0x01 | ၃၂x၄၁C |
400k bps | က0x80 | 0xfa |
500k bps | က0x00 | ၃၂x၄၁C |
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 |
- Baud နှုန်းသတ်မှတ်ချက်ကိုသတ်မှတ်ရန်အသုံးပြုသူများသည် SJA1000 (16MHz) ကိုလိုက်နာရန်သာလိုအပ်သည်။
- အဒက်တာသည် 10K အောက်ရှိ Baud နှုန်းကို ယာယီမပံ့ပိုးပါ။
2.2. လုပ်ဆောင်ချက်ဖော်ပြချက်
၂.၂.၁။ VCI_OpenDevice
စက်ပစ္စည်းများကို ချိတ်ဆက်ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုပါသည်။
DWORD __stdcall VCI_OpenDevice(DWORD DevType၊DWORD DevIndex၊DWORD Reserved);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
လက်ဝယ်ရှိတယ်။
ထိန်းသိမ်းမှုဘောင်များကို 0 တွင်ဖြည့်ပါ။
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
၂.၂.၂။ VCI_ပိတ်ကိရိယာ
ချိတ်ဆက်မှုကို ပိတ်ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုသည်။
DWORD __stdcall VCI_CloseDevice(DWORD DevType၊DWORD DevIndex);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
၂.၂.၃။ VCI_InitCan
သတ်မှတ်ထားသော CAN ကို စတင်ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုပါသည်။
DWORD __stdcall VCI_InitCAN(DWORD DevType၊ DWORD DevIndex၊ DWORD CANIdex၊
PVCI_INIT_CONFIG pInitConfig);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
CANIdex
CAN ချန်နယ်တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0၊ နှစ်ခုရှိလျှင် အညွှန်းကိန်းနံပါတ်သည် 0 သို့မဟုတ် 1 ဖြစ်နိုင်သည်။
pInitConfig
စတင်ခြင်း ကန့်သတ်ဖွဲ့စည်းပုံ။ အဖွဲ့ဝင်များ၏ ကန့်သတ်ချက်များစာရင်း-
အဖွဲ့ဝင် | Functional Description |
pInitConfig->AccCode | AccCode နှင့် AccMask သည် မည်သည့် Packet ကို လက်ခံနိုင်သည်ကို ဆုံးဖြတ်ရန် အတူတကွ လုပ်ဆောင်နိုင်သည်။ ဤမှတ်ပုံတင်ခြင်းနှစ်ခုကို ID ၏ဘယ်ဘက်သို့ညှိထားသည်၊ ဆိုလိုသည်မှာ AccCode ၏အမြင့်ဆုံးဘစ် (Bit31) နှင့် AccMask သည် ID တန်ဖိုး၏အမြင့်ဆုံးဘစ်နှင့် ချိန်ညှိရန်အတွက်အသုံးပြုသည်။ |
pInitConfig->AccMask | ID ချိန်ညှိခြင်းအကြောင်း နောက်ဆက်တွဲများကို ကိုးကားပါ- နောက်ဆက်တွဲ I- ID ချိန်ညှိမှုအသေးစိတ်။ ဥပမာ- AccCode ၏တန်ဖိုးကို 0x24600000 (ဆိုလိုသည်မှာ 0x123 ကို 21 bits ဖြင့် ဘယ်ဘက်သို့ပြောင်းသည်)၊ AccMask တန်ဖိုး၊ 0x00000000 ဟုသတ်မှတ်ထားပြီး CAN မက်ဆေ့ချ်ဘောင် ID ပါသည့် ပက်ကေ့ဂျ်များကိုသာ 0x123 လက်ခံနိုင်သည် (AccMask တန်ဖိုး 0x00000000 သည် ဘစ်အားလုံးနှင့် သက်ဆိုင်ကြောင်း ဖော်ပြသည် |
bits) AccCode တန်ဖိုးကို 0x24600000 သို့ သတ်မှတ်ထားပါက AccMask တန်ဖိုးကို 0x600000 (0x03 ကို 21 bits ဖြင့် ဘယ်ဘက်သို့ ရွှေ့ထားသည်)၊ ထို့နောက် CAN မက်ဆေ့ချ်ဘောင် ID ပါသည့် အစုံလိုက်များကိုသာ 0x120 ~ 0x123 လက်ခံနိုင်သည် (AccMask တန်ဖိုး 0x600000 သည် bit0 ~ bit1 မှလွဲ၍ အခြား bits (bit2 ~ bit10) တို့သည် သက်ဆိုင်ရာ bit ဖြစ်သည်)။ မှတ်ချက် - ဒီ filter setting exampဥပမာ၊ စံဘောင်သို့ lesample, high 11-bit သည် မှန်ကန်သော bit ဖြစ်သည်။ တိုးချဲ့ဘောင်အတွက်၊ ထို့နောက် တရားဝင် ID သည် 29-bit ဖြစ်သည်။ AccCode နှင့် AccMask သည် မြင့်မားသော 29-bit ကို တရားဝင်ဘစ်အဖြစ် သတ်မှတ်သည်။ |
|
pInitConfig->သီးသန့် | လက်ဝယ်ရှိသည်။ |
pInitConfig->စစ်ထုတ်မှု | စစ်ထုတ်ခြင်းမုဒ် ဆက်တင်များ ကျေးဇူးပြု၍ စစ်ထုတ်ခြင်းမုဒ်ဇယား၏ ကဏ္ဍကို ကိုးကားပါ။ |
pInitConfig->Timing0 | Baud rateT0 ဆက်တင် |
pInitConfig->Timing1 | Baud rateT1 ဆက်တင် |
pInitConfig->မုဒ် | operating mode: 0 - ပုံမှန်လည်ပတ်မှု 1- နားထောင်ရန်သီးသန့်မုဒ် 2- သူ့အလိုလို ဝင်ခွင့်နှင့် စာမေးပွဲမုဒ် (ဤတန်ဖိုးကို ZLG လုပ်ဆောင်ချက်စာကြည့်တိုက်မှ ဖယ်ထုတ်ထားသည်) |
စစ်ထုတ်မှုမုဒ် ဇယား-
တန်ဖိုး | နာမည် | ဖော်ပြချက် |
1 | အမျိုးအစားအားလုံးကို လက်ခံပါ။ | စံနှုန်းနှင့် တိုးချဲ့ဘောင်နှစ်ခုလုံးအတွက် သင့်လျော်သည်။ |
2 | စံဘောင်တွေပဲ လက်ခံတယ်။ | စံဘောင်နှင့် တိုးချဲ့ရန် သင့်လျော်သည်။ |
ဘောင်ကို စစ်ထုတ်ခြင်းဖြင့် တိုက်ရိုက်ဖယ်ရှားပါမည်။ | ||
3 | တိုးချဲ့ဘောင်ကိုသာ လက်ခံပါ။ | တိုးချဲ့ဘောင်အတွက် သင့်လျော်ပြီး စံဘောင်ဖြင့် ဖယ်ရှားပါမည်။ တိုက်ရိုက်စစ်ထုတ်ခြင်း။ . |
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
ဥပမာ
၂.၂.၄။ VCI_ReadBoardInfo
အဒက်တာ ဟာ့ဒ်ဝဲ အချက်အလက်ကို ဖတ်ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုသည်။ ယေဘူယျအားဖြင့် လျစ်လျူရှုလို့ရတယ်။
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType၊DWORD
DevIndex၊PVCI_BOARD_INFO pInfo);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN အဒက်တာတစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာအများအပြားရှိသည့်အခါ၊ အညွှန်းကိန်းဂဏန်းများသည် 0 မှစတင်၍ ငယ်စဉ်ကြီးလိုက်၊ pInfo
VCI_BOARD_INFO ကို စက်ပစ္စည်းအချက်အလက် ဖွဲ့စည်းပုံ ညွှန်ပြချက်ကို သိမ်းဆည်းရန် အသုံးပြုသည်။
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
၂.၂.၅။ VCI_GetReceiveNum
လက်ခံရရှိမှုကို သတ်မှတ်ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုသော်လည်း သတ်မှတ်ထားသော လက်ခံရရှိသည့်ကြားခံတွင် ဖရိမ်များကို မဖတ်ရသေးပါ။
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType၊DWORD DevIndex၊DWORD CANIndex);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်၍ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
CANIdex
ချန်နယ်အညွှန်းကို လုပ်နိုင်သလား။
ပြန်ပို့သည်-
မဖတ်ရသေးသောဘောင်များကို ပြန်ပေးပါ။
ဥပမာ
#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
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်၍ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
CANIdex
ချန်နယ်အညွှန်းကို လုပ်နိုင်သလား။
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
၂.၂.၇။ VCI_StartCAN
CAN controller နှင့် adapter ၏အတွင်းပိုင်းကြားဖြတ်လက်ခံမှုလုပ်ဆောင်ချက်ကိုစတင်ရန် ဤလုပ်ဆောင်ချက်ကိုအသုံးပြုသည်။
DWORD __stdcall VCI_StartCAN(DWORD DevType၊DWORD DevIndex၊DWORD CANIdex);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
CANIdex
ချန်နယ်အညွှန်းကို လုပ်နိုင်သလား။
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
၂.၂.၈။ VCI_ResetCAN
CAN ထိန်းချုပ်ကိရိယာကို ပြန်လည်သတ်မှတ်ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုသည်။
DWORD __stdcall VCI_ResetCAN(DWORD DevType၊DWORD DevIndex၊DWORD CANIdex);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
CANIdex
ချန်နယ်အညွှန်းကို လုပ်နိုင်သလား။
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
၂.၂.၉။ VCI_Transmit
CAN မက်ဆေ့ခ်ျဘောင်ကို ပေးပို့ရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုသည်။
DWORD __stdcall VCI_Transmit(DWORD ကိရိယာအမျိုးအစား၊ DWORD ကိရိယာInd၊ DWORD CANInd၊ PVCI_CAN_OBJ pSend၊DWORD အရှည်);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
CANIdex
ချန်နယ်အညွှန်းကို လုပ်နိုင်သလား။ pSend
ပေးပို့ရမည့် data frame array ၏ ပထမလိပ်စာ။
အရှည်
ပေးပို့ရမည့် ဒေတာဘောင်များ၏ အရေအတွက်၊ အများဆုံး နံပါတ်မှာ 1000 ဖြစ်ပြီး အကြံပြုထားသော တန်ဖိုးမှာ မြန်နှုန်းမြင့် 48 ဖြစ်သည်။
ပြန်ပို့သည်-
ပေးပို့ပြီးသော ဘောင်များ၏ အမှန်တကယ် အရေအတွက်ကို ပြန်ပေးပါ၊ ပြန်တန်ဖိုး = -1 သည် စက်ပစ္စည်းအမှားအယွင်းကို ညွှန်ပြသည်။
ဥပမာ
၂.၂.၁၀။ VCI_ လက်ခံသည်။
ဤလုပ်ဆောင်ချက်ကို ဧည့်ခံတောင်းဆိုရန်အတွက် အသုံးပြုသည်။
DWORD __stdcall VCI_Receive(DWORD DevType၊ DWORD DevIndex၊ DWORD CANIndex၊ PVCI_CAN_OBJ pReceive၊ ULONG Len၊ INT WaitTime);
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
CANIdex
ချန်နယ်အညွှန်းကို လုပ်နိုင်သလား။
ကြိုတင်လက်ခံပါ။
ဒေတာဘောင်များ၏ ပထမဆုံး set pointer ကို လက်ခံရယူရန်။
Len
ပုံမှန်မက်ဆေ့ဂျ်ပြန်ပို့ရန် ဒေတာဘောင်၏ အခင်းအကျင်းအရှည်သည် 2500 ထက်ပိုရပါမည်။
မဟုတ်ပါက၊ မက်ဆေ့ချ်လက်ခံသည်ဖြစ်စေ မလက်ခံသည်ဖြစ်စေ ပြန်ပို့သည့်အရှည်သည် သုညဖြစ်လိမ့်မည်။ အဒက်တာသည် ချန်နယ်တိုင်းအတွက် 2000-frame ကြားခံတစ်ခု သတ်မှတ်ပေးသည်။ ၎င်း၏ကိုယ်ပိုင်စနစ်နှင့် လုပ်ငန်းခွင်ပတ်ဝန်းကျင်အပေါ် အခြေခံ၍ အသုံးပြုသူသည် သင့်လျော်သော ခင်းကျင်းအရှည် 2500 မှ ရွေးချယ်နိုင်သည်။
WaitTime သီးသန့်။
ပြန်ပို့သည်-
အမှန်တကယ်ဖတ်ပြီးသော ဖရိမ်အရေအတွက်ကို ပြန်ပေးပါ၊ -1 သည် စက်အမှားများကို ဖော်ပြသည်။
ဥပမာ
အခြားလုပ်ဆောင်ချက်သုံးခုနှင့် ဒေတာဖွဲ့စည်းပုံဖော်ပြချက် အပိုင်း
ဤအခန်းတွင် USB-CAN အဒက်တာ အင်တာဖေ့စ်စာကြည့်တိုက် ControlCAN.dll တွင်ပါရှိသော ZLG အင်တာဖေ့စ်စာကြည့်တိုက်၏ မကိုက်ညီသော အခြားဒေတာအမျိုးအစားများနှင့် လုပ်ဆောင်ချက်များကို ဖော်ပြထားပါသည်။ ကျေးဇူးပြု၍ လုပ်ပါ။
တွဲဖက်အသုံးပြုနိုင်သော ZLG မော်ဒယ်ကို ဆင့်ပွားဖွံ့ဖြိုးတိုးတက်မှုအတွက် အသုံးပြုပါက ဤလုပ်ဆောင်ချက်များကို မခေါ်ဆိုပါနှင့်။
3.1 လုပ်ဆောင်ချက်ဖော်ပြချက်
၃.၁.၁။ VCI_UsbDevice ပြန်လည်သတ်မှတ်ခြင်း။
USB-CAN adapter ကို ပြန်လည်သတ်မှတ်ပါ၊ VCI_OpenDevice ကို အသုံးပြု၍ ပြန်လည်သတ်မှတ်ပြီးနောက် စက်ပစ္စည်းကို ပြန်လည်ဖွင့်ရန် လိုအပ်ပါသည်။
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType၊DWORD DevIndex၊DWORD ကြိုတင်မှာထားသည်
ကန့်သတ်ချက်များ-
DevType
စက်အမျိုးအစား။ Adapter ကိရိယာ အမျိုးအစား အဓိပ္ပါယ်ကို ကြည့်ပါ။
DevIndex
ဥပမာ စက်ပစ္စည်းအညွှန်းample၊ USB-CAN adapter တစ်ခုသာရှိသောအခါ၊ အညွှန်းကိန်းနံပါတ်သည် 0 ဖြစ်ပြီး၊ USB-CAN အဒက်တာများစွာရှိသောအခါ၊ အညွှန်းကိန်းများသည် 0 မှစတင်ကာ ကြီးလိုက်ကြီးလိုက်ဖြစ်နေသည်။
သီးသန့် သီးသန့်။
ပြန်ပို့သည်-
Return value = 1၊ ဆိုလိုသည်မှာ လုပ်ဆောင်ချက် အောင်မြင်သည်; = 0 သည် လည်ပတ်မှု မအောင်မြင်ကြောင်း ညွှန်ပြသည်။ = -1 သည် စက်မရှိဟု ညွှန်ပြသည်။
bRel = VCI_UsbDeviceReset(nDeviceType၊ လွတ်လပ်မှု၊ 0);
၃.၁.၂။ VCI_FindUsbDevice3.1.2
တူညီသော PC သည် USB-CAN အများအပြားကို အသုံးပြုသောအခါ၊ အသုံးပြုသူသည် လက်ရှိစက်ပစ္စည်းကို ရှာဖွေရန် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်သည်။
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
ကန့်သတ်ချက်များ-
pInfo
pInfo ကို ပထမဒေတာကြားခံလိပ်စာညွှန်ပြမှု၏ ကန့်သတ်ဘောင်များကို သိမ်းဆည်းရန် အသုံးပြုသည်။
ပြန်လာသည်
ကွန်ပျူတာသို့ ပလပ်ထိုးထားသော USB-CAN အဒက်တာ၏ နံပါတ်ကို ပြန်ပေးပါ။
အပိုင်းလေးတွင် Interface Library Functions Process ကိုအသုံးပြုခြင်း။
စက်၏လုပ်ဆောင်ချက်ကို များပြားစေရန်အတွက်၊ ကျွန်ုပ်တို့သည် နောက်ထပ်လုပ်ဆောင်ချက်များ (အစိမ်းရောင်နောက်ခံဖြင့်ပြသထားသည့် လုပ်ဆောင်ချက်များ) ကို ပေးဆောင်ထားပြီး၊ ဤလုပ်ဆောင်ချက်များတွင်- VCI_FindUsbDevice2 VCI_UsbDeviceReset ဖြစ်သည်။ ဒုတိယဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်း၊ ဤလုပ်ဆောင်ချက်များကို ခေါ်ဆိုရန်မလိုအပ်ပါ။ ဤလုပ်ဆောင်ချက်များကိုပင် လျစ်လျူရှုထားသော်လည်း USB-CAN အဒက်တာ လုပ်ဆောင်ချက်အားလုံးကို အောင်မြင်နိုင်ပါသည်။
www.waveshare.com ဖြစ်သည်
www.waveshare.com/wiki
စာရွက်စာတမ်းများ / အရင်းအမြစ်များ
![]() |
WAVESHARE USB-CAN Bus Interface Adapter Interface Function Library [pdf] ညွှန်ကြားချက်လက်စွဲ USB-CAN Bus Interface Adapter Interface Function Library၊ USB-CAN၊ Bus Interface Adapter Interface Function Library၊ Interface Function Library၊ Function Library |