CAN-200: Функции для работы с платой в режиме PeliCAN

CAN-200 1.3.0

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

## Функции

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) Подробнее...

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

## Функции

## ◆ CAN200_P_GetArbitrationLostCapture()

int CAN200_P_GetArbitrationLostCapture | ( | HANDLE | Handle,
|  | int | Channel,
|  | int * | Data
| ) |  |

Получение номера бита, на котором был проигран арбитраж (только для режима PeliCAN)

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

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  Data | (IN) Указатель на переменную типа int, где будет сохранено значение бита, на котором был проигран арбитраж (используются младшие 8 бит, для расшифровки значения можно использовать структуру CAN_arbitration_lost_capture_t)

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_GetErrorCode()

int CAN200_P_GetErrorCode | ( | HANDLE | Handle,
|  | int | Channel,
|  | int * | Code
| ) |  |

Получение типа и местоположения ошибки при обмене по шине CAN (только для режима PeliCAN)

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

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  Code | (IN) Указатель на переменную типа int, где будет сохранен тип и местоположение ошибки при обмене по шине CAN кадров в буфере приема (используются младшие 8 бит, для расшифровки значения можно использовать структуру CAN_error_t)

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_GetErrorWarningLimit()

int CAN200_P_GetErrorWarningLimit | ( | HANDLE | Handle,
|  | int | Channel,
|  | int * | Limit
| ) |  |

Получение верхнено предела счетчика ошибок CAN (только для режима PeliCAN)

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

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  Limit | (IN) Указатель на переменную типа int, где будет сохранено значение верхнего предела счетчика ошибок

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_GetInputFilter()

int CAN200_P_GetInputFilter | ( | HANDLE | Handle,
|  | int | Channel,
|  | pFilter_t * | filter
| ) |  |

Получение фильтра входных кадров для режима PeliCAN.

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

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  filter | (IN) Указатель на структуру pFilter_t, где будет сохранено описание фильтра

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_GetRxErrorCounter()

int CAN200_P_GetRxErrorCounter | ( | HANDLE | Handle,
|  | int | Channel,
|  | int * | Counter
| ) |  |

Получение счетчика ошибок приема по шине CAN (только для режима PeliCAN)

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

Аргументы

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

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_GetRxMessageCounter()

int CAN200_P_GetRxMessageCounter | ( | HANDLE | Handle,
|  | int | Channel,
|  | int * | Counter
| ) |  |

Получение количества принятых (и не прочитанных) кадров в буфере приёма (только для режима PeliCAN)

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

Аргументы

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

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_GetTxErrorCounter()

int CAN200_P_GetTxErrorCounter | ( | HANDLE | Handle,
|  | int | Channel,
|  | int * | Counter
| ) |  |

Получение счетчика ошибок выдачи по шине CAN (только для режима PeliCAN)

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

Аргументы

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

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_SetErrorWarningLimit()

int CAN200_P_SetErrorWarningLimit | ( | HANDLE | Handle,
|  | int | Channel,
|  | int | Limit
| ) |  |

Установка верхнего предела счетчика ошибок CAN (только для режима PeliCAN)

Функция позволяет установить значение верхнего предела счетчика ошибок CAN для одного из каналов. Если хоть один из счетчиков ошибок (при приеме или выдаче) превысит значение предела заданного этой функцией, произойдет установка бита "Наличие ошибок" (см. CAN200_GetStatus). По умолчанию верхний предел счётчиков ошибок равен 96.

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  Limit | (IN) Значение верхнего предела счетчика ошибок

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

Примеры:
  test-write.cpp.

## ◆ CAN200_P_SetInputFilter()

int CAN200_P_SetInputFilter | ( | HANDLE | Handle,
|  | int | Channel,
|  | pFilter_t * | filter
| ) |  |

Настройка фильтра входных кадров для режима PeliCAN.

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

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  filter | (IN) Указатель на структуру pFilter_t с описанием фильтра

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

Функционирование входного фильтра в режиме PeliCAN.
  Фильтр входных пакетов может функционировать в одном из двух режимов. В следующих таблицах приведено отображение битов полей Filter и Mask на биты входного кадра.

Таблица, поясняющая функционирование входного фильтра при приеме стандартного кадра (режим Single, Mode = 1);

Бит Filter[0] | Бит Filter[1] | Бит Filter[2] | Бит Filter[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | unused | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Бит Mask[0] | Бит Mask[1] | Бит Mask[2] | Бит Mask[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | unused | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Входной кадр
ID.28 | ID.27 | ID.26 | ID.25 | ID.24 | ID.23 | ID.22 | ID.21 | ID.20 | ID.19 | ID.18 | RTR |  | DB1.7 | DB1.6 | DB1.5 | DB1.4 | DB1.3 | DB1.2 | DB1.1 | DB1.0 | DB2.7 | DB2.6 | DB2.5 | DB2.4 | DB2.3 | DB2.2 | DB2.1 | DB2.0

Таблица, поясняющая функционирование входного фильтра при приеме расширенного кадра (режим Single, Mode = 1);

Бит Filter[0] | Бит Filter[1] | Бит Filter[2] | Бит Filter[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | unused
Бит Mask[0] | Бит Mask[1] | Бит Mask[2] | Бит Mask[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | unused
Входной кадр
ID.28 | ID.27 | ID.26 | ID.25 | ID.24 | ID.23 | ID.22 | ID.21 | ID.20 | ID.19 | ID.18 | ID.17 | ID.16 | ID.15 | ID.14 | ID.13 | ID.12 | ID.11 | ID.10 | ID.9 | ID.8 | ID.7 | ID.6 | ID.5 | ID.4 | ID.3 | ID.2 | ID.1 | ID.0 | RTR |

Таблица, поясняющая функционирование входного фильтра при приеме стандартного кадра (режим Dual, Mode = 0);

Бит Filter[0] | Бит Filter[1] | Бит Filter[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0
Бит Mask[0] | Бит Mask[1] | Бит Mask[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0
Входной кадр
ID.28 | ID.27 | ID.26 | ID.25 | ID.24 | ID.23 | ID.22 | ID.21 | ID.20 | ID.19 | ID.18 | RTR | DB1.7 | DB1.6 | DB1.5 | DB1.4 | DB1.3 | DB1.2 | DB1.1 | DB1.0
Бит Mask[2] | Бит Mask[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4
Бит Filter[2] | Бит Filter[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4

Таблица, поясняющая функционирование входного фильтра при приеме расширенного кадра (режим Dual, Mode = 0);

Бит Filter[0] | Бит Filter[1]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Бит Mask[0] | Бит Mask[1]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Входной кадр
ID.28 | ID.27 | ID.26 | ID.25 | ID.24 | ID.23 | ID.22 | ID.21 | ID.20 | ID.19 | ID.18 | ID.17 | ID.16 | ID.15 | ID.14 | ID.13
Бит Mask[2] | Бит Mask[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
Бит Filter[2] | Бит Filter[3]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0

Входной фильтр функционирует следующим образом: Биты кадра (приведенные в соответствующей таблице) сравниваются на идентичность (поразрядно) с идентификатором входного фильтра. Если в соответствующем разряде маски стоит логическая 1, то биты кадра и идентификатора входного фильтра в этом разряде не сравниваются и результат сравнения в данном разряде принимается равным логической 1. Кадр проходит приемный фильтр, если результат сравнения во всех разрядах содержит логические 1.

Заметки
  Для приема всех кадров необходимо установить маску равную FFh-FFh-FFh-FFh (значение идентификатора входного фильтра можно установить любое).

Примеры:
  test-read.cpp и test-write.cpp.

## ◆ CAN200_P_SetRxErrorCounter()

int CAN200_P_SetRxErrorCounter | ( | HANDLE | Handle,
|  | int | Channel,
|  | int | Counter
| ) |  |

Установка счетчика ошибок приема по шине CAN (только для режима PeliCAN)

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

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  Counter | (IN) Значение счетчика ошибок

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

## ◆ CAN200_P_SetTxErrorCounter()

int CAN200_P_SetTxErrorCounter | ( | HANDLE | Handle,
|  | int | Channel,
|  | int | Counter
| ) |  |

Установка счетчика ошибок выдачи по шине CAN (только для режима PeliCAN)

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

Аргументы

  Handle | (IN) Хэндл платы (возвращенный функцией CAN200_Open)
  Channel | (IN) Номер канала платы
  Counter | (IN) Значение счетчика ошибок

Возвращает
  CAN200_OK - успешное завершение
  CAN200_ERR_PARM - ошибка входных параметров
  CAN200_ERR_MODE - режим работы канала не соответствует PeliCAN
  CAN200_ERR_SYS - системная ошибка (для определения причины используйте (GetLastError())

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