لوگو WAVESHARرابط باس USB-CAN
عملکرد رابط آداپتور
دستورالعمل استفاده از کتابخانهWAVESHARE USB CAN Bus Inter face Adapter Interface Interface Library

قسمت اول به پایان رسیدVIEW

اگر کاربر فقط از آداپتور رابط باس USB-CAN برای انجام تست ارتباطی CAN bus استفاده کند و سپس می تواند مستقیماً از نرم افزار 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 ماژول بسته تابع کتابخانه نسخه :ControlCAN.llb
اعلان تابع نسخه دلفی file: ControlCAN.pas

بخش دوم: کتابخانه و ساختار داده با عملکرد سازگار

2.1. تعریف نوع
2.1.1. نوع وسیله

نوع تعریف مقدار را تایپ کنید توضیحات
DEV_USBCAN2 4 USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN

2.1.2. VCI_BOARD_INFO
ساختار VCI_BOARD_INFO حاوی اطلاعات دستگاه کارت رابط سری USB-CAN است.
ساختار در تابع VCI_ReadBoardInfo پر می شود.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 1

عضو:
نسخه hw
شماره نسخه سخت افزار، نماد هگزادسیمال. به عنوان مثال 0x0100 نشان دهنده V1.00 است.
fw_نسخه
شماره نسخه سخت افزار، نماد هگزادسیمال. به عنوان مثال 0x0100 نشان دهنده V1.00 است.
صفحه 2
dr_Version

شماره نسخه درایور، نماد هگزادسیمال. به عنوان مثال 0x0100 نشان دهنده V1.00 است.
in_Version
شماره نسخه کتابخانه رابط، نماد هگزادسیمال. به عنوان مثال 0x0100 نشان دهنده V1.00 است.
irq_Num
سیستم رزرو شده است.
can_Num
تعداد کل کانال CAN را نشان می دهد.
str_Serial_Num
شماره سریال این کارت برد.
str_hw_Type
نوع سخت افزار، مانند "USBCAN V1.00" (توجه: شامل پایان دهنده رشته '\0').
رزرو شده است
سیستم رزرو شده است.
2.1.3. VCI_CAN_OBJ
در توابع VCI_Transmit و VCI_Receive، ساختار VCI_CAN_OBJ برای انتقال فریم پیام CAN استفاده می شود.

WAVESHARE USB CAN Bus Interface Adapter Interface Interface Library - شکل

عضو:
ID
شناسه پیام فرمت شناسه مستقیم، تراز راست، لطفاً به: پیوست یک: جزئیات تراز شناسه مراجعه کنید.
TimeStamp
دریافت خیابانamp اطلاعات بازه زمانی، زمان شروع زمانی که کنترل کننده CAN مقدار دهی اولیه می شود، واحد 0. 1 میلی ثانیه است.
پرچم زمان
از نظر اینکه آیا از زمان stamp، 1 TimeSt موثر استamp. TimeFlag و TimeStamp فقط زمانی معنی دار هستند که فریم دریافت شود.
SendType
نوع ارسال = 0 نشان دهنده نوع عادی، = 1 نشان دهنده ارسال تک است.
RemoteFlag
خواه این پرچم از راه دور باشد. = 1 نشان دهنده پرچم راه دور، = 0 نشان دهنده پرچم داده است.
پرچم خارجی
چه پرچم خارجی باشد. = 1 نشان دهنده پرچم خارجی، = 0 نشان دهنده پرچم استاندارد است.
دیتالن
طول داده (<=8) یعنی طول داده.
داده ها
داده های بسته
رزرو شده است
سیستم رزرو شده است.
2.1.4. VCI_INIT_CONFIG
ساختار VCI_INIT_CONFIG پیکربندی اولیه CAN را تعریف می کند. ساختار در تابع VCI_InitCan پر می شود.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 2

عضو:
AcCode
کد پذیرش فیلتر شده را دریافت کنید.
AccMask
ماسک فیلتر را دریافت کنید.
رزرو شده است
رزرو شده است.
فیلتر کنید
روش فیلتر کردن، اجازه تنظیم محدوده 0-3 را می دهد، برای جزئیات به بخش 2.2.3 جدول حالت فیلتر مراجعه کنید.
زمان 0
پارامتر نرخ باود SJA1000، زمان 0 (BTR0).
زمان 1
پارامتر نرخ باود SJA1000، زمان 1 (BTR1).
حالت
حالت عملیاتی، 0 = عملکرد عادی، 1 = حالت فقط گوش دادن، 2 = پذیرش خود به خود و حالت آزمون ارسال.
اظهارات:
درباره تنظیمات فیلتر لطفاً به: پیوست II: دستورالعمل های تنظیم پارامتر CAN مراجعه کنید.
CAN Timing0 و Timing1 برای تنظیم نرخ باود استفاده می شوند، این دو پارامتر فقط در مقدار اولیه s استفاده می شوند.tage.
جدول مرجع Baud معمولی:

نرخ باود CAN زمان 0 (BTR0) زمان 1 (BTR1)
10 هزار bps 0x31 0x1C
20 هزار bps 0x18 0x1C
40 هزار bps 0x87 0xFF
50 هزار bps 0x09 0x1C
80 هزار bps 0x83 0xFF
100 هزار bps 0x04 0x1C
125 هزار bps 0x03 0x1C
200 هزار bps 0x81 0xFA
250 هزار bps 0x01 0x1C
400 هزار bps 0x80 0xFA
500 هزار bps 0x00 0x1C
666 هزار bps 0x80 0xB6
800 هزار bps 0x00 0x16
1000 هزار bps 0x00 0x14
33.33 کیلوبیت بر ثانیه 0x09 0x6F
66.66 کیلوبیت بر ثانیه 0x04 0x6F
83.33 کیلوبیت بر ثانیه 0x03 0x6F
  1. کاربران فقط باید SJA1000 (16 مگاهرتز) را دنبال کنند تا پارامتر نرخ Baud را تنظیم کنند.
  2. آداپتور به طور موقت از نرخ Baud زیر 10K پشتیبانی نمی کند.

2.2. شرح تابع
2.2.1. VCI_OpenDevice
این عملکرد برای اتصال دستگاه ها استفاده می شود.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
رزرو شده است
پارامترهای حفظ، 0 را پر کنید.
برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.

WAVESHARE USB CAN Bus Interface Adapter Interface Interface Library - Fig3

2.2.2. VCI_CloseDevice
این تابع برای بستن اتصال استفاده می شود.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex)؛
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 4

2.2.3. VCI_InitCan
این تابع برای مقداردهی اولیه CAN مشخص شده استفاده می شود.
DWORD __stdcall VCI_InitCAN(DWORD DevType، DWORD DevIndex، DWORD CANIndex،
PVCI_INIT_CONFIG pInitConfig)؛

پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
CANIindex
شاخص کانال CAN، مانند زمانی که تنها یک کانال CAN وجود دارد، عدد ایندکس 0 است، اگر دو کانال وجود داشته باشد، عدد شاخص می تواند 0 یا 1 باشد.
pInitConfig
ساختار پارامتر مقداردهی اولیه لیست پارامترهای اعضا:

عضو توضیحات عملکردی
pInitConfig->AccCode AccCode و AccMask می توانند با هم کار کنند تا مشخص کنند کدام بسته ها را می توان پذیرفت. از این دو رجیستر برای تنظیم شناسه در تراز چپ استفاده می شود، یعنی بالاترین بیت (Bit31) AccCode و AccMask با بالاترین بیت از مقدار ID تراز می شود.
pInitConfig->AccMask درباره تراز شناسه به پیوست ها مراجعه کنید: پیوست I:
جزئیات تراز شناسه
به عنوان مثال: اگر مقدار AccCode را 0x24600000 تنظیم کنید (یعنی 0x123 با 21 بیت به چپ منتقل می شود)، مقدار AccMask
روی 0x00000000 تنظیم شده است، و سپس فقط بسته هایی با شناسه قاب پیام CAN 0x123 می توانند پذیرفته شوند (مقدار AcMask 0x00000000 نشان می دهد که همه بیت ها مرتبط هستند
بیت). اگر مقدار AccCode روی 0x24600000 تنظیم شود، مقدار AccMask روی 0x600000 تنظیم می شود (0x03 با 21 بیت به چپ منتقل می شود) و سپس فقط بسته هایی با شناسه قاب پیام CAN 0x120 ~ 0x123 می توانند پذیرفته شوند (مقدار AccMask
0x600000 نشان می دهد که به غیر از bit0 ~ bit1 بیت های دیگر (bit2 ~ bit10) بیت های مرتبط هستند.
توجه: این تنظیمات فیلتر سابقampبه قاب استاندارد، برای مثالample، 11 بیتی بالا بیت معتبر است. در مورد فریم توسعه یافته، و سپس شناسه معتبر 29 بیتی است. AccCode و AccMask 29 بیتی بالا را به عنوان بیت معتبر تنظیم می کنند!
pInitConfig->Reserved رزرو شده است
pInitConfig->Filter تنظیمات حالت فیلتر لطفا به بخش جدول حالت فیلتر مراجعه کنید.
pInitConfig->Timing0 تنظیم Baud rateT0
pInitConfig->Timing1 تنظیم Baud rateT1
pInitConfig->Mode حالت عامل:
0-عملکرد عادی
1-حالت فقط گوش دادن
2- حالت آزمون پذیرش و ارسال خود به خود (این مقدار از کتابخانه تابع ZLG حذف شده است)

جدول حالت فیلتر:

ارزش نام توضیحات
1 دریافت انواع مناسب برای هر دو قاب استاندارد و توسعه یافته!
2 فقط قاب استاندارد را دریافت کنید مناسب برای قاب استاندارد، و گسترش یافته است
قاب به طور مستقیم با فیلتر کردن حذف می شود!
3 فقط فریم توسعه یافته را دریافت کنید مناسب برای قاب توسعه یافته، و قاب استاندارد توسط حذف خواهد شد
فیلتراسیون مستقیم! .

برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.
به عنوان مثال

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 4

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 6

2.2.4. VCI_ReadBoardInfo
این تابع برای خواندن اطلاعات سخت افزار آداپتور استفاده می شود. به طور کلی، می توان آن را نادیده گرفت.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex، PVCI_BOARD_INFO pInfo)؛
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، هنگامی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود. pInfo
VCI_BOARD_INFO برای ذخیره نشانگر ساختار اطلاعات دستگاه استفاده می شود.
برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 7

2.2.5. VCI_GetReceiveNum
این تابع برای تعیین فریم های دریافتی اما خوانده نشده در بافر دریافتی تعیین شده استفاده می شود.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
CANIindex
فهرست کانال CAN.
برمی گرداند:
فریم هایی را که هنوز خوانده نشده اند برگردانید.
به عنوان مثال
#include "ControlCan.h" int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
این تابع برای پاک کردن بافر دریافت و ارسال کانال تعیین شده توسط
آداپتور USB-CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
CANIindex
فهرست کانال CAN.
برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 8

2.2.7. VCI_StartCAN
این تابع برای راه اندازی کنترلر CAN و عملکرد دریافت وقفه داخلی آداپتور استفاده می شود.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
CANIindex
فهرست کانال CAN.
برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 9

2.2.8. VCI_ResetCAN
این تابع برای تنظیم مجدد کنترلر CAN استفاده می شود.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
CANIindex
فهرست کانال CAN.
برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 10

2.2.9. VCI_Transmit
این تابع برای ارسال فریم پیام CAN استفاده می شود.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
CANIindex
فهرست کانال CAN. pSend
اولین آدرس آرایه های قاب داده ای که باید ارسال شوند.
طول
تعداد فریم های داده ای که باید ارسال شوند، حداکثر 1000 است، مقدار توصیه شده 48 در سرعت بالا است.
برمی گرداند:
تعداد واقعی فریم هایی که قبلا ارسال شده را برگردانید، مقدار بازگشتی = -1 نشان دهنده یک خطای دستگاه است.
به عنوان مثال
WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 11

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 12

2.2.10. VCI_Receive
این تابع برای درخواست دریافت استفاده می شود.
DWORD __stdcall VCI_Receive(DWORD DevType، DWORD DevIndex، DWORD CANIndex، PVCI_CAN_OBJ pReceive، ULONG Len، INT Waittime);
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
CANIindex
فهرست کانال CAN.
دریافت کنید
برای دریافت اولین نشانگر مجموعه فریم های داده.
لن
طول آرایه قاب داده باید بیشتر از 2500 باشد تا پیام عادی را برگرداند.
در غیر این صورت، چه پیام دریافت شود چه نشود، طول بازگشت صفر خواهد بود. آداپتور یک بافر 2000 فریمی برای هر کانال تنظیم می کند. بر اساس سیستم و محیط کاری خود، کاربر می تواند طول آرایه مناسب را از 2500 انتخاب کند.
زمان انتظار رزرو شده است.
برمی گرداند:
تعداد فریم هایی که واقعا خوانده شده اند را برگردانید، -1 نشان دهنده خطاهای دستگاه است.
به عنوان مثال
WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 13

بخش سوم توابع دیگر و شرح ساختار داده

این فصل سایر انواع داده ها و عملکردهای کتابخانه رابط ZLG ناسازگار موجود در کتابخانه رابط آداپتور USB-CAN ControlCAN.dll را شرح می دهد. لطفا انجام بدهید
اگر از یک مدل ZLG سازگار برای توسعه ثانویه استفاده کنید، این توابع را فراخوانی نکنید تا بر سازگاری تأثیر نگذارد.
3.1 شرح عملکرد
3.1.1. VCI_UsbDeviceReset
آداپتور USB-CAN را بازنشانی کنید، پس از تنظیم مجدد باید با استفاده از VCI_OpenDevice دستگاه را دوباره باز کنید.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Reserved
پارامترها:
DevType
نوع وسیله. ببینید: تعریف نوع دستگاه آداپتور.
DevIndex
نمایه دستگاه، برای مثالampهنگامی که فقط یک آداپتور USB-CAN وجود دارد، عدد شاخص 0 است، زمانی که چندین آداپتور USB-CAN وجود دارد، اعداد فهرست به ترتیب صعودی از 0 شروع می شود.
رزرو شده رزرو شده است.
برمی گرداند:
مقدار بازگشتی = 1، که به معنی موفقیت آمیز بودن عملیات است. = 0 نشان می دهد که عملیات شکست خورده است. = -1 نشان می دهد که دستگاه وجود ندارد.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 14

bRel = VCI_UsbDeviceReset(nDeviceType، Independence، 0);
3.1.2. VCI_FindUsbDevice2
هنگامی که همان رایانه از چندین USB-CAN استفاده می کند، کاربر می تواند از این عملکرد برای یافتن دستگاه فعلی استفاده کند.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
پارامترها:
pInfo
pInfo برای ذخیره پارامترهای اولین نشانگر آدرس بافر داده استفاده می شود.
برمی گرداند
شماره آداپتور USB-CAN متصل به رایانه را برگردانید.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 15

بخش چهارم توابع کتابخانه رابط با استفاده از فرآیند
به منظور ضرب عملکرد دستگاه، توابع اضافی (توابع ارائه شده با پس زمینه سبز) را ارائه کردیم، این توابع عبارتند از: VCI_FindUsbDevice2 VCI_UsbDeviceReset. در طول توسعه دوم، این توابع لزوماً نباید فراخوانی شوند. حتی این عملکردها نادیده گرفته می شوند، همه عملکردهای آداپتور USB-CAN قابل دستیابی هستند.

WAVESHARE USB CAN Bus Interface Adapter Interface Library Function - شکل 16

www.waveshare.com
www.waveshare.com/wiki

اسناد / منابع

کتابخانه عملکرد رابط آداپتور بین چهره اتوبوس WAVESHARE USB-CAN [pdfدفترچه راهنما
کتابخانه عملکرد رابط آداپتور USB-CAN Bus Interface، USB-CAN، کتابخانه عملکرد رابط آداپتور بین چهره اتوبوس، کتابخانه عملکرد رابط، کتابخانه عملکرد

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *