CAN-200: Файл can200-api.h

CAN-200 1.3.0

Функции
Файл can200-api.h

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

`#include <objbase.h>`
`#include <winioctl.h>`
`#include "public.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())

## ◆ 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

## ◆ 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())

## ◆ 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())

## ◆ 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())

## ◆ CAN200_GetNumChannel()

int CAN200_GetNumChannel | ( | HANDLE | Handle,
|  | int * | NumChannel
| ) |  |

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

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

Аргументы

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

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

## ◆ 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())

## ◆ 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 - ошибка открытия платы с указанным номером
  иначе - хэндл для работы с платой

Предупреждения
  Нумерация устройств начинается с нуля

## ◆ 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())

## ◆ 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())

## ◆ 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-контроллером будет невозможна!

## ◆ 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 не маскируется и всегда приводит к возникновению прерывания от платы.

## ◆ 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())

## ◆ 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())

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