USB-CAN Veriyolu Arayüzü
Adaptör Arayüzü İşlevi
Kütüphane Kullanıcı Talimatı
BİRİNCİ BÖLÜM BİTTİVIEW
Kullanıcı, CAN veri yolu iletişim testine gitmek için yalnızca USB-CAN veri yolu arayüz adaptörünü kullanıyorsa, daha sonra test verilerini göndermek ve almak için doğrudan verilen USB-CAN Tool yazılımını kullanabilir.
Kullanıcı kendi ürünleri için yazılım programı yazmayı planlıyorsa lütfen aşağıdaki talimatları dikkatlice okuyun ve s'den referans alın.ampSağladığımız kod:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Kütüphaneyi geliştir file :ControlCAN.lib, ControlCAN.DLL
VC sürüm fonksiyon bildirimi file :KontrolCAN.h
VB sürüm fonksiyon bildirimi file: KontrolCAN.bas
LaboratuvarVIEW sürüm kütüphanesi fonksiyon paketi modülü :ControlCAN.llb
Delphi sürüm fonksiyon bildirimi file: KontrolCAN.pas
İKİNCİ BÖLÜM UYUMLU FONKSİYON KÜTÜPHANESİ VE VERİ YAPISI
2.1. TİP TANIMI
2.1.1. Aygıt Türü
Tür Tanımı | Tip değeri | Tanım |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_PANO_BİLGİLERİ
VCI_BOARD_INFO yapısı USB-CAN Serisi arayüz kartı aygıt bilgilerini içerir.
Yapı VCI_ReadBoardInfo fonksiyonu ile doldurulacaktır.
Üye:
hw_Sürümü
Donanım sürüm numarası, onaltılık gösterim. Örn. 0x0100, V1.00'ı temsil eder.
fw_Sürümü
Donanım sürüm numarası, onaltılık gösterim. Örn. 0x0100, V1.00'ı temsil eder.
Sayfa 2
dr_Sürümü
Sürücü sürüm numarası, onaltılık gösterim. Örn. 0x0100, V1.00'ı temsil eder.
in_Version
Arayüz kütüphanesi sürüm numarası, onaltılık gösterim. Örn. 0x0100, V1.00'ı temsil eder.
irq_Num
Sistem saklıdır.
can_Num
Toplam CAN kanalı sayısını temsil eder.
str_Seri_Numarası
Bu anakartın seri numarası.
str_hw_Türü
“USBCAN V1.00” gibi donanım türü (Not: Dize sonlandırıcı '\0' içerir).
Rezerve
Sistem saklıdır.
2.1.3. VCI_CAN_OBJ
VCI_Transmit ve VCI_Receive fonksiyonlarında CAN mesaj çerçevesini iletmek için VCI_CAN_OBJ yapısı kullanılmaktadır.
Üye:
ID
Mesaj tanımlayıcısı. Doğrudan kimlik biçimi, sağa hizalanmış, lütfen şuraya bakın: Ek Bir: Kimlik Hizalama Ayrıntıları.
TimeStamp
St'yi almakamp zaman dilimi bilgisi, CAN kontrolörü başlatıldığında zamanlamanın başlaması, birim 0. 1ms'dir.
ZamanBayrağı
Zaman diliminin kullanılıp kullanılmayacağı konusundaamp, 1etkili ZamanSt'diramp. TimeFlag ve TimeStamp yalnızca çerçeve alındığında anlamlıdır.
Gönderme Türü
Gönderme türü. = 0 Normal türü, = 1 Tekli Gönderimi belirtir.
UzaktanBayrak
Uzak bayrak mı. = 1 uzak bayrağı, = 0 veri bayrağını gösterir.
Dış Bayrak
Harici bir bayrak olup olmadığını. = 1 harici bayrağı, = 0 ise standart bayrağı belirtir.
VeriUzunluğu
Veri uzunluğu(<=8) ,yani verinin uzunluğu.
Veri
Paket veri.
Rezerve
Sistem saklıdır.
2.1.4. VCI_INIT_CONFIG
VCI_INIT_CONFIG yapısı CAN'ın başlatma yapılandırmasını tanımlar. Yapı VCI_InitCan fonksiyonunda doldurulacaktır.
Üye:
Hesap Kodu
Filtrelenmiş kabul kodunu alın.
AccMask
Filtre maskesini al.
Rezerve
Rezerve.
Filtre
Filtreleme yöntemi, 0-3 ayar aralığına izin verir, ayrıntılar için filtre modu tablosunun 2.2.3 bölümüne bakın.
Zamanlama0
SJA1000 Baud hızı parametresi, Zamanlama0 (BTR0).
Zamanlama1
SJA1000 Baud hızı parametresi, Zamanlama1 (BTR1).
Mod
Çalışma modu, 0 = normal çalışma, 1 = Sadece dinleme modu, 2 = kendiliğinden kabul ve test gönderme modu.
Notlar:
Filtre ayarları hakkında daha fazla bilgi için lütfen şu kaynağa bakın: Ek II: CANparametre kurulum talimatları.
CAN Timing0 ve Timing1 baud hızını ayarlamak için kullanılır, bu iki parametre yalnızca başlatma sırasında kullanılırtage.
Geleneksel Baud referans tablosu:
CAN Baud hızı | Zamanlama0(BTR0) | Zamanlama1(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 |
- Kullanıcıların Baud hızı parametresini ayarlamak için yalnızca SJA1000 (16MHz)'i takip etmeleri yeterlidir.
- Adaptör geçici olarak 10K'nın altındaki Baud hızını desteklemiyor.
2.2. FONKSİYON AÇIKLAMASI
2.2.1. VCI_AçıkAygıt
Bu fonksiyon cihazları bağlamak için kullanılır.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Ayrılmış);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
Rezerve
Tutma parametreleri 0 olarak doldurulur.
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
2.2.2. VCI_Cihazı Kapat
Bu fonksiyon bağlantıyı kapatmak için kullanılır.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
2.2.3. VCI_InitCan
Bu fonksiyon belirtilen CAN'ı başlatmak için kullanılır.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
CANindeksi
CAN kanal indeksi, örneğin yalnızca bir CAN kanalı varsa indeks numarası 0'dır, iki tane varsa indeks numarası 0 veya 1 olabilir.
pInitConfig
Başlatma parametre yapısı. Üyelerin parametre listesi:
Üye | İşlevsel Açıklama |
pInitConfig->AcCode | AccCode ve AccMask hangi paketlerin kabul edilebileceğini belirlemek için birlikte çalışabilir. Bu iki kayıt, ID'yi sola hizalanmış olarak ayarlamak için kullanılır, yani AccCode ve AccMask'ın en yüksek biti (Bit31) ID değerinin en yüksek bitiyle hizalanır. |
pInitConfig->AccMask | Kimlik uyumu hakkında eklere bakın: Ek I: Kimlik hizalama detayları. Örn: AccCode değerini 0x24600000 olarak ayarlarsanız (yani 0x123 21 bit sola kaydırılır), AccMask değeri 0x00000000 olarak ayarlanır ve ardından yalnızca CAN ileti çerçevesi kimliği 0x123 olan paketler kabul edilebilir (AccMask değeri 0x00000000, tüm bitlerin alakalı olduğunu gösterir) |
bit). AccCode değeri 0x24600000 olarak ayarlanırsa, AccMask değeri 0x600000 olarak ayarlanır (0x03 21 bit sola kaydırılır) ve ardından yalnızca CAN ileti çerçeve kimliği 0x120 ~ 0x123 olan paketler kabul edilebilir (AccMask değeri 0x600000, bit0 ~ bit1 haricindeki diğer bitlerin (bit2 ~ bit10) ilgili bit olduğunu belirtir. Not: Bu filtre ayarı örneğinampstandart çerçeveye göre, örneğinample, yüksek 11 bit geçerli bittir; genişletilmiş çerçeve durumunda ise geçerli ID 29 bittir. AccCode ve AccMask geçerli bit olarak yüksek 29 biti ayarlar! |
|
pInitConfig->Ayrılmış | rezerve |
pInitConfig->Filtre | Filtreleme modu ayarları için lütfen filtre modu tablosunun bölümüne bakınız. |
pInitConfig->Zamanlama0 | Baud hızıT0 ayarı |
pInitConfig->Zamanlama1 | Baud hızıT1 ayarı |
pInitConfig->Mod | Çalışma modu: 0-normal çalışma 1-Yalnızca dinleme modu 2-Spontan kabul ve test gönderme modu (bu değer ZLG fonksiyon kütüphanesinden hariç tutulmuştur) |
Filtre modu tablosu:
Değer | İsim | Tanım |
1 | Her türlü türü al | Hem standart hem de uzun çerçeveye uygundur! |
2 | Sadece standart çerçeveyi al | Standart çerçeveye ve uzatılmış çerçeveye uygundur |
çerçeve doğrudan filtreleme yoluyla kaldırılacak! | ||
3 | Sadece genişletilmiş çerçeveyi al | Genişletilmiş çerçeveye uygundur ve standart çerçeve kaldırılacaktır. doğrudan filtreleme! |
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
Örneğin
2.2.4. VCI_ReadBoardInfo
Bu fonksiyon adaptör donanım bilgilerini okumak için kullanılır. Genel olarak, göz ardı edilebilir.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir USB-CAN adaptörü olduğunda endeks numarası 0'dır, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan sıradadır.
VCI_BOARD_INFO, cihaz bilgi yapı işaretçisini depolamak için kullanılır.
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
2.2.5. VCI_AlınanNumarası
Bu fonksiyon, belirlenen alma tamponunda bulunan alınan ancak okunmayan çerçeveleri belirtmek için kullanılır.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
CANindeksi
CAN kanal indeksi.
İade:
Henüz okunmamış çerçeveleri döndür.
Örneğin
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Bu fonksiyon, belirtilen kanalın alma ve gönderme tamponunu temizlemek için kullanılır.
USB-CAN adaptörü.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
CANindeksi
CAN kanal indeksi.
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
2.2.7. VCI_BaşlatCAN
Bu fonksiyon CAN kontrolcüsünü ve adaptörün dahili kesme alım fonksiyonunu başlatmak için kullanılır.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
CANindeksi
CAN kanal indeksi.
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
2.2.8. VCI_SıfırlaCAN
Bu fonksiyon CAN kontrolcüsünü sıfırlamak için kullanılır.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
CANindeksi
CAN kanal indeksi.
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
2.2.9. VCI_İletimi
Bu fonksiyon CAN mesaj çerçevesini göndermek için kullanılır.
DWORD __stdcall VCI_Transmit(DWORD Aygıt Türü,DWORD Aygıt Girişi,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Uzunluğu);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
CANindeksi
CAN kanal dizini. pSend
Gönderilmesi gereken veri çerçevesi dizilerinin ilk adresi.
Uzunluk
Gönderilmesi gereken veri çerçevelerinin sayısı maksimum 1000'dir, yüksek hızlarda önerilen değer 48'dir.
İade:
Zaten gönderilmiş olan çerçevelerin gerçek sayısını döndürür, dönüş değeri = -1 bir cihaz hatasını gösterir.
Örneğin
2.2.10. VCI_Alımı
Bu fonksiyon alım talebinde bulunmak için kullanılır.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT Bekleme Süresi);
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
CANindeksi
CAN kanal indeksi.
önAlmak
Veri çerçevelerinin ilk küme işaretçisini almak için.
Len
Normal mesaj döndürmek için veri çerçevesinin dizi uzunluğunun 2500'den fazla olması gerekir.
Aksi takdirde, mesaj alınsın veya alınmasın, dönüş uzunluğu sıfır olacaktır. Bağdaştırıcı her kanal için 2000 karelik bir tampon ayarlamıştır. Kullanıcı kendi sistemine ve çalışma ortamına bağlı olarak 2500'den uygun bir dizi uzunluğu seçebilir.
Bekleme Süresi Ayrıldı.
İade:
Gerçekten okunan kare sayısını döndürür, -1 cihaz hatalarını belirtir.
Örneğin
ÜÇÜNCÜ BÖLÜM DİĞER İŞLEVLER VE VERİ YAPISI AÇIKLAMASI
Bu bölüm, USB-CAN bağdaştırıcısı arabirim kitaplığı ControlCAN.dll'de bulunan uyumsuz ZLG arabirim kitaplığının diğer veri türlerini ve işlevlerini açıklar. Lütfen
Uyumluluğu etkilememek için ikincil geliştirme için uyumlu bir ZLG modeli kullanıyorsanız bu fonksiyonları çağırmayın.
3.1 FONKSİYON AÇIKLAMASI
3.1.1. VCI_UsbDeviceSıfırlama
USB-CAN adaptörünü sıfırlayın, sıfırlamadan sonra VCI_OpenDevice kullanarak cihazı yeniden açmanız gerekir.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD Ayrılmış
Parametreler:
Dev Türü
Aygıt türü. Bkz: Bağdaştırıcı aygıt türü tanımı.
DevIndex
Cihaz Endeksi, örneğinampÖrneğin, yalnızca bir adet USB-CAN adaptörü olduğunda endeks numarası 0 olurken, birden fazla USB-CAN adaptörü olduğunda endeks numaraları 0'dan başlayarak artan şekilde sıralanır.
Ayrılmıştır Ayrılmıştır.
İade:
Dönüş değeri = 1, işlemin başarılı olduğu anlamına gelir; = 0, işlemin başarısız olduğunu gösterir; = -1, aygıtın mevcut olmadığını gösterir.
bRel = VCI_UsbDeviceReset(nCihazTipi, Bağımsızlık, 0);
3.1.2. VCI_FindUsbDevice2
Aynı PC'de birden fazla USB-CAN kullanıldığında, kullanıcı bu fonksiyonu kullanarak mevcut cihazı bulabilir.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametreler:
pBilgi
pInfo, ilk veri arabelleği adres işaretçisinin parametrelerini depolamak için kullanılır.
İade
Bilgisayara takılı USB-CAN adaptörünün numarasını döndürür.
Bölüm Dört İşlem Kullanarak Arayüz Kütüphanesi Fonksiyonları
Cihaz işlevini çoğaltmak için ek işlevler sağladık (yeşil arka planla sunulan işlevler), bu işlevler şunları içerir: VCI_FindUsbDevice2 VCI_UsbDeviceReset. İkinci geliştirme sırasında, bu işlevlerin mutlaka çağrılması gerekmez. Bu işlevler göz ardı edilse bile, tüm USB-CAN adaptör işlevleri gerçekleştirilebilir.
www.waveshare.com
www.waveshare.com/wiki
Belgeler / Kaynaklar
![]() |
WAVESHARE USB-CAN Veriyolu Arabirimi Adaptörü Arabirim Fonksiyon Kütüphanesi [pdf] Kullanım Kılavuzu USB-CAN Veri Yolu Arabirimi Adaptörü Arabirim İşlev Kütüphanesi, USB-CAN, Veri Yolu Arabirimi Adaptörü Arabirim İşlev Kütüphanesi, Arabirim İşlev Kütüphanesi, İşlev Kütüphanesi |