Interfaccia bus USB-CAN
Funzione interfaccia adattatore
Istruzioni per l'utente della biblioteca
PARTE PRIMA FINITAVIEW
Se l'utente utilizza semplicemente l'adattatore di interfaccia bus USB-CAN per eseguire il test di comunicazione del bus CAN, può utilizzare direttamente il software USB-CAN Tool in dotazione per inviare e ricevere i dati del test.
Se l'utente intende scrivere un programma software per i propri prodotti. Si prega di leggere attentamente le seguenti istruzioni e di fare riferimento agli sample codice che forniamo:
⑴ C++Builder ⑵C# ⑶VC ⑷VB ⑸VB.NET ⑹Delphi ⑺LabVIEW ⑻ LabWindows/CVI ⑼Matlab ⑽QT ⑾Python/Python-can.
Sviluppa la libreria file :ControlCAN.lib, ControlCAN.DLL
Dichiarazione della funzione della versione VC file :ControlCAN.h
Dichiarazione della funzione della versione VB file: ControlCAN.bas
LaboratorioVIEW modulo del pacchetto di funzioni della libreria di versione :ControlCAN.llb
Dichiarazione della funzione della versione Delphi file: ControlCAN.pas
PARTE SECONDA BIBLIOTECA DELLE FUNZIONI COMPATIBILI E STRUTTURA DEI DATI
2.1. DEFINIZIONE DEL TIPO
2.1.1. Tipo di dispositivo
Tipo Definizione | Digitare value | Descrizione |
DEV_USBCAN2 | 4 | USBCAN-2A/USBCAN-2C/CANalyst-II MiniPCIe-CAN |
2.1.2. VCI_BOARD_INFO
La struttura VCI_BOARD_INFO contiene informazioni sul dispositivo della scheda di interfaccia della serie USB-CAN.
La struttura verrà compilata nella funzione VCI_ReadBoardInfo.
Membro:
hw_Versione
Numero di versione hardware, notazione esadecimale. Ad esempio, 0x0100 rappresenta V1.00.
fw_Versione
Numero di versione hardware, notazione esadecimale. Ad esempio, 0x0100 rappresenta V1.00.
Pagina 2
dr_Versione
Numero di versione del driver, notazione esadecimale. Ad esempio, 0x0100 rappresenta V1.00.
in_Versione
Numero di versione della libreria dell'interfaccia, notazione esadecimale. Ad esempio, 0x0100 rappresenta V1.00.
irq_Num
Sistema riservato.
can_Num
Rappresenta il numero totale di canali CAN.
str_Serial_Num
Il numero di serie di questa scheda.
str_hw_Type
Tipo di hardware, ad esempio "USBCAN V1.00" (Nota: include il terminatore di stringa '\0').
Prenotato
Sistema riservato.
2.1.3. VCI_CAN_OBJ
Nelle funzioni VCI_Transmit e VCI_Receive, la struttura VCI_CAN_OBJ viene utilizzata per trasmettere il telegramma CAN.
Membro:
ID
Identificatore del messaggio. Formato ID diretto, allineato a destra, fare riferimento a: Allegato Uno: Dettagli allineamento ID.
Ora Stamp
Ricevere il stamp informazioni sull'intervallo di tempo, avviare la temporizzazione quando il controller CAN viene inizializzato, l'unità è 0 ms.
TimeFlag
In termini di utilizzo del tempo stamp, 1è l'effettivo TimeStamp. TimeFlag e TimeStamp hanno senso solo quando viene ricevuto il frame .
Tipo di invio
Tipo di invio. = 0 indica il tipo normale, = 1 indica l'invio singolo.
RemoteFlag
Se si tratta di un flag remoto. = 1 indica flag remoto, = 0 indica flag dati.
ExternFlag
Se si tratta di un flag esterno. = 1 indica flag esterno, = 0 indica flag standard.
DataLen
Data length(<=8) ,ovvero la lunghezza dei dati.
Dati
Dati a pacchetto.
Prenotato
Sistema riservato.
2.1.4. VCI_INIT_CONFIG
La struttura VCI_INIT_CONFIG definisce la configurazione di inizializzazione del CAN. La struttura verrà compilata nella funzione VCI_InitCan.
Membro:
Codice Acc
Ricevi il codice di accettazione filtrato.
Maschera acc
Ricevi la maschera del filtro.
Prenotato
Prenotato.
Filtro
Metodo di filtraggio, che consente l'intervallo di impostazione 0-3, fare riferimento alla sezione 2.2.3 della tabella delle modalità di filtraggio per i dettagli.
Tempismo0
SJA1000 Parametro baud rate, Timing0 (BTR0) .
Tempismo1
SJA1000 Parametro baud rate, Timing1 (BTR1) .
Modalità
Modalità di funzionamento, 0 = funzionamento normale, 1 = modalità di solo ascolto, 2 = ammissione spontanea e modalità di test di invio.
Osservazioni:
Per quanto riguarda le impostazioni del filtro, fare riferimento a: Allegato II: Istruzioni per l'impostazione dei parametri CAN.
CAN Timing0 e Timing1 sono usati per impostare il baud rate, questi due parametri sono usati solo all'inizializzazione stage.
Tabella di riferimento Baud convenzionale:
CAN Velocità di trasmissione | Temporizzazione0(BTR0) | Temporizzazione1(BTR1) |
10kbps | 0x31 | 0x1C |
20kbps | 0x18 | 0x1C |
40kbps | 0x87 | 0xFF |
50kbps | 0x09 | 0x1C |
80kbps | 0x83 | 0xFF |
100kbps | 0x04 | 0x1C |
125kbps | 0x03 | 0x1C |
200kbps | 0x81 | 0xFA |
250kbps | 0x01 | 0x1C |
400kbps | 0x80 | 0xFA |
500kbps | 0x00 | 0x1C |
666kbps | 0x80 | 0xB6 |
800kbps | 0x00 | 0x16 |
1000kbps | 0x00 | 0x14 |
33.33 Kbps | 0x09 | 0x6F |
66.66 Kbps | 0x04 | 0x6F |
83.33 Kbps | 0x03 | 0x6F |
- Gli utenti devono solo seguire SJA1000 (16 MHz) per impostare il parametro Baud rate.
- L'adattatore non supporta temporaneamente velocità in baud inferiori a 10K.
2.2. DESCRIZIONE DELLA FUNZIONE
2.2.1. VCI_OpenDevice
Questa funzione viene utilizzata per collegare i dispositivi.
DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD riservato);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
Prenotato
Parametri di conservazione, inserire 0.
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
2.2.2. VCI_ChiudiDispositivo
Questa funzione viene utilizzata per chiudere la connessione.
DWORD __stdcall VCI_CloseDevice(DWORD DevType,DWORD DevIndex);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
2.2.3. VCI_InitCan
Questa funzione viene utilizzata per inizializzare il CAN specificato.
DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
CANIndice
Indice del canale CAN, ad esempio quando c'è un solo canale CAN, il numero di indice è 0, se ce ne sono due, il numero di indice può essere 0 o 1.
pinitConfig
Struttura dei parametri di inizializzazione. Elenco dei parametri dei membri:
Membro | Descrizione funzionale |
pInitConfig->AccCode | AccCode e AccMask possono collaborare per determinare quali pacchetti possono essere accettati. Questi due registri vengono utilizzati per impostare l'ID allineato a sinistra, ovvero il bit più alto (Bit31) di AccCode e AccMask è allineato con il bit più alto del valore ID. |
pInitConfig->AccMask | Per quanto riguarda l'allineamento ID fare riferimento agli allegati: Allegato I: Dettagli sull'allineamento dell'ID. Ad esempio: se si imposta il valore di AccCode come 0x24600000 (ovvero 0x123 viene spostato a sinistra di 21 bit), il valore di AccMask è impostato su 0x00000000, quindi possono essere accettati solo i pacchetti con ID frame messaggio CAN 0x123 (il valore AccMask di 0x00000000 indica che tutti i bit sono rilevanti |
bit). Se il valore AccCode è impostato su 0x24600000, il valore AccMask è impostato su 0x600000 (0x03 viene spostato a sinistra di 21 bit), quindi possono essere accettati solo i pacchetti con ID frame messaggio CAN 0x120 ~ 0x123 (valore AccMask 0x600000 indica che oltre a bit0 ~ bit1 altri bit (bit2 ~ bit10) sono bit rilevanti). Nota: Questa impostazione del filtro esample al telaio standard, ad esample, alto 11 bit è il bit valido; nel caso del frame esteso, quindi l'ID valido è a 29 bit. AccCode e AccMask impostano alto 29 bit come bit valido! |
|
pInitConfig->Riservato | prenotato |
pInitConfig->Filtro | Per le impostazioni della modalità di filtraggio fare riferimento alla sezione della tabella delle modalità di filtraggio. |
pInitConfig->Timing0 | Impostazione della velocità di trasmissione T0 |
pInitConfig->Timing1 | Impostazione della velocità di trasmissione T1 |
pInitConfig->Modalità | Modalità di funzionamento: 0-funzionamento normale 1-Modalità di solo ascolto 2-ammissione spontanea e modalità test di invio (questo valore è escluso dalla libreria delle funzioni ZLG) |
Tabella delle modalità di filtro:
Valore | Nome | Descrizione |
1 | Ricevi tutti i tipi | Adatto sia al telaio standard che a quello esteso! |
2 | Ricevi solo telaio standard | Adatto a telaio standard ed esteso |
il telaio verrà rimosso direttamente dalla filtrazione! | ||
3 | Ricevi solo frame esteso | Adatto al telaio esteso e il telaio standard verrà rimosso da filtrazione direttamente! 。 |
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
Per esempio
2.2.4. VCI_ReadBoardInfo
Questa funzione viene utilizzata per leggere le informazioni sull'hardware dell'adattatore. In generale, può essere ignorato.
DWORD __stdcall VCI_ReadBoardInfo(DWORD DevType,DWORD
DevIndex,PVCI_BOARD_INFO pInfo);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0. pInfo
VCI_BOARD_INFO viene utilizzato per memorizzare il puntatore della struttura delle informazioni sul dispositivo.
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
2.2.5. VCI_GetReceiveNum
Questa funzione viene utilizzata per specificare i frame ricevuti ma non letti nel buffer di ricezione designato.
DWORD __stdcall VCI_GetReceiveNum(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
CANIndice
Indice canale CAN.
Resi:
Restituisce i frame che non sono stati ancora letti.
Per esempio
#include “ControlCan.h” int ret=VCI_GetReceiveNum(2,0,0);
2.2.6. VCI_ClearBuffer
Questa funzione viene utilizzata per cancellare il buffer di ricezione e invio del canale designato specificato da
Adattatore USB CAN.
DWORD __stdcall VCI_ClearBuffer(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
CANIndice
Indice canale CAN.
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
2.2.7. VCI_StartCAN
Questa funzione viene utilizzata per avviare il controller CAN e la funzione di ricezione degli interrupt interni dell'adattatore.
DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
CANIndice
Indice canale CAN.
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
2.2.8. VCI_ResetCAN
Questa funzione viene utilizzata per ripristinare il controller CAN.
DWORD __stdcall VCI_ResetCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
CANIndice
Indice canale CAN.
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
2.2.9. VCI_Trasmissione
Questa funzione viene utilizzata per inviare telegrammi CAN.
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Lunghezza);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
CANIndice
Indice canale CAN. pInvia
Il primo indirizzo degli array di frame di dati che devono essere inviati.
Lunghezza
Il numero dei frame di dati che devono essere inviati, il numero massimo è 1000, il valore consigliato è 48 ad alta velocità.
Resi:
Restituisce il numero effettivo di frame già inviati, il valore restituito = -1 indica un errore del dispositivo.
Per esempio
2.2.10. VCI_Ricezione
Questa funzione serve per richiedere la ricezione.
DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
CANIndice
Indice canale CAN.
pRicevi
Per ricevere il primo puntatore impostato dei frame di dati.
Len
La lunghezza dell'array del frame di dati deve essere superiore a 2500 per restituire un messaggio normale.
In caso contrario, la lunghezza di ritorno sarà zero indipendentemente dal fatto che il messaggio venga ricevuto o meno. l'adattatore ha impostato un buffer di 2000 frame per ogni canale. In base al proprio sistema e ambiente di lavoro, l'utente può scegliere una lunghezza di array appropriata da 2500.
WaitTime Riservato.
Resi:
Restituisce il numero di frame effettivamente letti, -1 indica errori del dispositivo.
Per esempio
PARTE TERZA ALTRE FUNZIONI E DESCRIZIONE DELLA STRUTTURA DEI DATI
Questo capitolo descrive altri tipi di dati e funzioni della libreria di interfaccia ZLG incompatibile contenuta nella libreria di interfaccia dell'adattatore USB-CAN ControlCAN.dll. Per favore fallo
non chiamare queste funzioni se si utilizza un modello ZLG compatibile per lo sviluppo secondario in modo da non influire sulla compatibilità.
3.1 DESCRIZIONE FUNZIONE
3.1.1. VCI_UsbDeviceReset
Ripristina l'adattatore USB-CAN, è necessario riaprire il dispositivo dopo il ripristino utilizzando VCI_OpenDevice.
DWORD __stdcall VCI_UsbDeviceReset(DWORD DevType,DWORD DevIndex,DWORD riservato
Parametri:
Tipo di sviluppo
Tipo di dispositivo. Vedere: Definizione del tipo di dispositivo dell'adattatore.
DevIndex
Indice dispositivo, ad esample, quando è presente un solo adattatore USB-CAN, il numero di indice è 0, quando sono presenti più adattatori USB-CAN, i numeri di indice in ordine crescente a partire da 0.
Riservato Riservato.
Resi:
Valore restituito = 1, il che significa che l'operazione è andata a buon fine; = 0 indica che l'operazione non è riuscita; = -1 indica che il dispositivo non esiste.
bRel = VCI_UsbDeviceReset(nDeviceType, Indipendenza, 0);
3.1.2. VCI_FindUsbDevice2
Quando lo stesso PC utilizza più USB-CAN, l'utente può utilizzare questa funzione per trovare il dispositivo corrente.
DWORD __stdcall VCI_FindUsbDevice2(PVCI_BOARD_INFO pInfo);
Parametri:
pInfo
pInfo viene utilizzato per memorizzare i parametri del primo puntatore dell'indirizzo del buffer di dati.
Resi
Restituisce il numero dell'adattatore USB-CAN collegato al computer.
Parte quarta Interfaccia Funzioni della libreria che utilizzano il processo
Per moltiplicare la funzione del dispositivo, abbiamo fornito funzioni aggiuntive (funzioni presentate con uno sfondo verde), queste funzioni includono: VCI_FindUsbDevice2 VCI_UsbDeviceReset. Durante il secondo sviluppo, queste funzioni non devono necessariamente essere richiamate. Anche queste funzioni vengono ignorate, è possibile ottenere tutte le funzioni dell'adattatore USB-CAN.
www.waveshare.com
www.waveshare.com/wiki
Documenti / Risorse
![]() |
Libreria delle funzioni dell'interfaccia dell'adattatore di interfaccia bus USB-CAN WAVESHARE [pdf] Manuale di istruzioni USB-CAN Bus Interface Adapter Interface Library Function Library, USB-CAN, Bus Interface Adapter Interface Library Function, Interface Function Library, Function Library |