CAN-200  1.3.0
Функции
Файл can200-api.cpp

Файл содержит реализацию функций для работы с платами CAN200. Подробнее...

#include <windows.h>
#include <objbase.h>
#include <stdio.h>
#include <setupapi.h>
#include <assert.h>
#include <tchar.h>
#include "can200-api.h"

Функции

int CAN200_GetNumberDevice (int *count)
 Определение количества установленных плат Подробнее...
 
HANDLE CAN200_Open (int number)
 Открытие одной из плат для работы Подробнее...
 
int CAN200_Close (HANDLE Handle)
 Закрытие ранее открытой платы Подробнее...
 
int CAN200_SetWorkMode (HANDLE Handle, int Channel, int Mode)
 Настройка режима работы одного из каналов платы Подробнее...
 
int CAN200_GetWorkMode (HANDLE Handle, int Channel, int *Mode)
 Получение текущего режима работы одного из каналов платы Подробнее...
 
int CAN200_SetDriverMode (HANDLE Handle, int Channel, int Mode)
 Настройка выходных формирователей канала платы Подробнее...
 
int CAN200_GetConfig (HANDLE Handle, pTCAN_VPDData Buffer)
 Получение описания платы Подробнее...
 
int CAN200_GetNumChannel (HANDLE Handle, int *NumChannel)
 Получение количества каналов в плате Подробнее...
 
int CAN200_SetCANSpeed (HANDLE Handle, int Channel, unsigned int Speed)
 Настройка скорости обмена одного из каналов платы Подробнее...
 
int CAN200_GetCANSpeed (HANDLE Handle, int Channel, unsigned int *Speed)
 Получение текущей скорости обмена по CAN одного из каналов платы Подробнее...
 
int CAN200_GetStatus (HANDLE Handle, int Channel, int *Status)
 Получение статуса одного из каналов платы Подробнее...
 
int CAN200_SetInterruptSource (HANDLE Handle, int Channel, int Source)
 Настройка разрешения прерываний для одного из каналов платы Подробнее...
 
int CAN200_GetInterruptSource (HANDLE Handle, int Channel, int *Source)
 Получение маски прерываний Подробнее...
 
int CAN200_SetCommand (HANDLE Handle, int Channel, int Command)
 Выдача команды CAN контроллеру одного из каналов платы Подробнее...
 
int CAN200_SetTxBuffer (HANDLE Handle, int Channel, pRX_TX_Buffer Buffer)
 Запись кадра в буфер выдачи Подробнее...
 
int CAN200_DefEvent (HANDLE Handle, int Channel, HANDLE hEvent)
 Передача события синхронизации драйверу Подробнее...
 
int CAN200_GetEventData (HANDLE Handle, int Channel, pTEventData Buffer)
 Получение причины события (из буфера драйвера) Подробнее...
 
int CAN200_GetRxBuffer (HANDLE Handle, int Channel, pRX_TX_Buffer Buffer)
 Получение содержимого буфера приема Подробнее...
 
int CAN200_B_SetInputFilter (HANDLE Handle, int Channel, bFilter_t *filter)
 Настройка фильтра входных кадров для режима BasicCAN. Подробнее...
 
int CAN200_B_GetInputFilter (HANDLE Handle, int Channel, bFilter_t *filter)
 Получение фильтра входных кадров для режима BasicCAN. Подробнее...
 
int CAN200_P_SetInputFilter (HANDLE Handle, int Channel, pFilter_t *filter)
 Настройка фильтра входных кадров для режима PeliCAN. Подробнее...
 
int CAN200_P_GetInputFilter (HANDLE Handle, int Channel, pFilter_t *filter)
 Получение фильтра входных кадров для режима PeliCAN. Подробнее...
 
int CAN200_P_SetRxErrorCounter (HANDLE Handle, int Channel, int Counter)
 Установка счетчика ошибок приема по шине CAN (только для режима PeliCAN) Подробнее...
 
int CAN200_P_GetRxErrorCounter (HANDLE Handle, int Channel, int *Counter)
 Получение счетчика ошибок приема по шине CAN (только для режима PeliCAN) Подробнее...
 
int CAN200_P_SetTxErrorCounter (HANDLE Handle, int Channel, int Counter)
 Установка счетчика ошибок выдачи по шине CAN (только для режима PeliCAN) Подробнее...
 
int CAN200_P_GetTxErrorCounter (HANDLE Handle, int Channel, int *Counter)
 Получение счетчика ошибок выдачи по шине CAN (только для режима PeliCAN) Подробнее...
 
int CAN200_P_SetErrorWarningLimit (HANDLE Handle, int Channel, int Limit)
 Установка верхнего предела счетчика ошибок CAN (только для режима PeliCAN) Подробнее...
 
int CAN200_P_GetErrorWarningLimit (HANDLE Handle, int Channel, int *Limit)
 Получение верхнено предела счетчика ошибок CAN (только для режима PeliCAN) Подробнее...
 
int CAN200_P_GetArbitrationLostCapture (HANDLE Handle, int Channel, int *Data)
 Получение номера бита, на котором был проигран арбитраж (только для режима PeliCAN) Подробнее...
 
int CAN200_P_GetRxMessageCounter (HANDLE Handle, int Channel, int *Counter)
 Получение количества принятых (и не прочитанных) кадров в буфере приёма (только для режима PeliCAN) Подробнее...
 
int CAN200_P_GetErrorCode (HANDLE Handle, int Channel, int *Code)
 Получение типа и местоположения ошибки при обмене по шине CAN (только для режима PeliCAN) Подробнее...
 
int CAN200_GetOverCounter (HANDLE Handle, int Channel, int *Counter)
 Получение текущего кол-ва кадров отбрашенных из-за нехватки места в буфере Подробнее...
 
int CAN200_GetDriverVersion (HANDLE Handle, int *Version)
 Отмена выдачи пакетов Подробнее...
 

Подробное описание

Файл содержит реализацию функций для работы с платами CAN200.

Функции

◆ CAN200_Close()

int CAN200_Close ( HANDLE  Handle)

Закрытие ранее открытой платы

Функция позволяет закрыть ранее открытую плату

Аргументы
Handle(IN) Хэндл закрываемой платы (возвращенный функцией CAN200_Open)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_DefEvent()

int CAN200_DefEvent ( HANDLE  Handle,
int  Channel,
HANDLE  hEvent 
)

Передача события синхронизации драйверу

Функция позволяет передать событие синхронизации (созданное функцией CreateEvent) драйверу. Данное событие будет привязано в драйвере к данной плате и указанному каналу. Событие может быть использование для организации приема данных без циклического опроса статуса платы.

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
hEvent(IN) Хэндл события синхронизации
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

Функция позволяет передать событие синхронизации (созданное функцией CreateEvent) драйверу. Данное событие будет привязано в драйвере к данной плате и указанному каналу. Событие может быть использование для организации приема данных без циклического опроса статуса платы.

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
hEvent(IN) Хэндл события синхронизации
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
CAN200_ERR_MODE - режим работы канала не соответствует BasicCAN
Примеры:
test-read.cpp.

◆ CAN200_GetCANSpeed()

int CAN200_GetCANSpeed ( HANDLE  Handle,
int  Channel,
unsigned int *  Speed 
)

Получение текущей скорости обмена по CAN одного из каналов платы

Функция позволяет получить текущее значение скорости обмена по CAN одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Speed(OUT) Указатель на переменную типа int, где будет сохранено текущее значение скорости обмена по CAN
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

◆ CAN200_GetConfig()

int CAN200_GetConfig ( HANDLE  Handle,
pTCAN_VPDData  Buffer 
)

Получение описания платы

Функция возвращает описание платы (тип, серийный номер и т.д.)

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Buffer(OUT) Указатель на структуру TCAN_VPDData, где будет сохранена информация о плате
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_GetDriverVersion()

int CAN200_GetDriverVersion ( HANDLE  Handle,
int *  Version 
)

Отмена выдачи пакетов

Функция возвращает версию драйвера.

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Version(OUT) Версия драйвера (3 байта, младший - подподверсия, второй - подверсия, третий - версия)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

◆ CAN200_GetEventData()

int CAN200_GetEventData ( HANDLE  Handle,
int  Channel,
pTEventData  Buffer 
)

Получение причины события (из буфера драйвера)

Функция возвращает причину возникновения события (прием кадра, ошибка и т.д.) из буфера приема драйвера для одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Buffer(OUT) Указатель на переменную типа TEventData, где будет сохранена причина прерывания и, в случае приема кадра, принятый кадр
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-read.cpp.

◆ CAN200_GetInterruptSource()

int CAN200_GetInterruptSource ( HANDLE  Handle,
int  Channel,
int *  Source 
)

Получение маски прерываний

Функция позволяет получить маску прерываний для одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Source(OUT) Указатель на переменную типа int, где будет сохранена маска прерываний канала платы (используются младшие 8 бит, для расшифровки значений отдельных битов можно использовать структуру CAN_interrupt_t)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

◆ CAN200_GetNumberDevice()

int CAN200_GetNumberDevice ( int *  count)

Определение количества установленных плат

Функция определяет количество установленных в компьютере плат CAN-200PCI и CAN-200PCIe

Аргументы
count(OUT) Указатель на переменную типа int, где будет сохранено количество установленных плат
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_GetNumChannel()

int CAN200_GetNumChannel ( HANDLE  Handle,
int *  NumChannel 
)

Получение количества каналов в плате

Функция возвращает количество каналов в плате

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
NumChannel(OUT) Указатель на переменную, где будет сохранено количество каналов в плате
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_GetOverCounter()

int CAN200_GetOverCounter ( HANDLE  Handle,
int  Channel,
int *  Counter 
)

Получение текущего кол-ва кадров отбрашенных из-за нехватки места в буфере

Функция позволяет получить текущий режим работы одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Counter(OUT) Указатель на переменную типа int, где будет сохранено кол-во кадров отбрашенное из-за нехватки места
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

◆ CAN200_GetRxBuffer()

int CAN200_GetRxBuffer ( HANDLE  Handle,
int  Channel,
pRX_TX_Buffer  Buffer 
)

Получение содержимого буфера приема

Функция возвращает содержимое буфера приема контроллера CAN одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Buffer(OUT) Указатель на переменную типа RX_TX_Buffer, где будет сохранено содержимое буфера приема
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Предупреждения
Функция возвратит содержимое буфера приема, даже если этот буфер пустой (содержит случайные данные). Для получения принятого кадра перед вызовом этой функции необходимо использовать функцию CAN200_GetStatus.

◆ CAN200_GetStatus()

int CAN200_GetStatus ( HANDLE  Handle,
int  Channel,
int *  Status 
)

Получение статуса одного из каналов платы

Функция позволяет получить статус одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Status(OUT) Указатель на переменную типа int, где будет сохранен статус канала платы (используются младшие 8 бит, для расшифровки значений можно использовать структуру CAN_status_t)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-write.cpp.

◆ CAN200_GetWorkMode()

int CAN200_GetWorkMode ( HANDLE  Handle,
int  Channel,
int *  Mode 
)

Получение текущего режима работы одного из каналов платы

Функция позволяет получить текущий режим работы одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Mode(OUT) Указатель на переменную типа int, где будет сохранен текущий режим работы канала платы
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

◆ CAN200_Open()

HANDLE CAN200_Open ( int  number)

Открытие одной из плат для работы

Функция позволяет открыть одну из плат для работы. Номер открываемой платы определяется входным параметром

Аргументы
number(IN) Номер открываемой платы
Возвращает
INVALID_HANDLE_VALUE - ошибка открытия платы с указанным номером
иначе - хэндл для работы с платой
Предупреждения
Нумерация устройств начинается с нуля
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_SetCANSpeed()

int CAN200_SetCANSpeed ( HANDLE  Handle,
int  Channel,
unsigned int  Speed 
)

Настройка скорости обмена одного из каналов платы

Функция позволяет настроить скорость обмена по шине CAN одиного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Speed(IN) Значение скорости обмена по шине CAN (одно из значений CAN_SPEED_1000, CAN_SPEED_800, CAN_SPEED_500, CAN_SPEED_250, CAN_SPEED_125, CAN_SPEED_50, CAN_SPEED_20, CAN_SPEED_10 или CAN_SPEED_USER_DEFINED)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_SetCommand()

int CAN200_SetCommand ( HANDLE  Handle,
int  Channel,
int  Command 
)

Выдача команды CAN контроллеру одного из каналов платы

Функция позволяет выдать команду управления CAN контроллеру одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Command(IN) Команда (используются младшие 8 бит, для расшифровки можно использовать структуру CAN_command_t)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-write.cpp.

◆ CAN200_SetDriverMode()

int CAN200_SetDriverMode ( HANDLE  Handle,
int  Channel,
int  Mode 
)

Настройка выходных формирователей канала платы

Функция позволяет настроить выходные формирователи заданного канала платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Mode(IN) Параметр настройки выходных формирователей (для нормальной работы должен быть равен 0x1B)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Предупреждения
Функцию необходимо вызвать один раз при инициализации CAN-контроллера после включения питания. Без вызова этой функции прием/передача данных CAN-контроллером будет невозможна!
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_SetInterruptSource()

int CAN200_SetInterruptSource ( HANDLE  Handle,
int  Channel,
int  Source 
)

Настройка разрешения прерываний для одного из каналов платы

Функция позволяет настроить разрешение (маску) прерываний для одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Source(IN) Маска прерываний (используются младшие 8 бит, бит равный 1 разрешает соответствующее прерывание, для расшифровки значений отдельных битов можно использовать структуру CAN_interrupt_t)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Предупреждения
Бит №4 в режиме BasicCAN не маскирует соответствующую причину прерывания (выход контроллера из режима "сна"). Эта причина в режиме BasicCAN не маскируется и всегда приводит к возникновению прерывания от платы.
Примеры:
test-read.cpp и test-write.cpp.

◆ CAN200_SetTxBuffer()

int CAN200_SetTxBuffer ( HANDLE  Handle,
int  Channel,
pRX_TX_Buffer  Buffer 
)

Запись кадра в буфер выдачи

Функция позволяет записать CAN кадр в буфер выдачи одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Buffer(IN) Указатель на структуру RX_TX_Buffer, где содержится выдаваемый кадр
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_BUSY - буфер выдачи занят
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
CAN200_ERR_MODE - режим работы канала не соответствует BasicCAN

Функция позволяет записать CAN кадр в буфер выдачи одного из каналов платы

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Buffer(IN) Указатель на структуру RX_TX_Buffer, где содержится выдаваемый кадр
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_BUSY - буфер выдачи занят
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-write.cpp.

◆ CAN200_SetWorkMode()

int CAN200_SetWorkMode ( HANDLE  Handle,
int  Channel,
int  Mode 
)

Настройка режима работы одного из каналов платы

Функция позволяет настроить один из каналов платы в режим BasicCAN или PeliCAN

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Mode(IN) Режим работы канала платы (BasicCAN или PeliCAN)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

Функция позволяет настроить один из каналов платы в режим BasicCAN или PeliCAN

Аргументы
Handle(IN) Хэндл платы (возвращенный функцией CAN200_Open)
Channel(IN) Номер канала платы
Mode(IN) Режим работы канала платы (BasicCAN или PeliCAN)
Возвращает
CAN200_OK - успешное завершение
CAN200_ERR_PARM - ошибка входных параметров
CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())
Примеры:
test-read.cpp и test-write.cpp.

CAN-200 documentation. Copyright (c) 2012 - 2017 Elcus Corporation. All rights reserved.