![]() |
PIP 5.5.3
Platform-Independent Primitives
|
Базовый класс утройств ввода/вывода. Подробнее...
#include <piiodevice.h>
Открытые типы | |
| enum | DeviceMode { ReadOnly = 0x01 , WriteOnly = 0x02 , ReadWrite = 0x03 } |
| Режимы открытия для PIIODevice. Подробнее... | |
| enum | DeviceOption { BlockingRead = 0x01 , BlockingWrite = 0x02 } |
| Опции для PIIODevice, работает для некоторых устройств Подробнее... | |
| enum | DeviceInfoFlag { Sequential = 0x01 , Reliable = 0x02 } |
| Характеристики канала PIIODevice. Подробнее... | |
Открытые члены | |
| PIIODevice () | |
| Создает пустой PIIODevice. | |
| PIIODevice (const PIString &path, DeviceMode mode=ReadWrite) | |
| Создает PIIODevice с путём "path" и режимом открытия "mode". | |
| DeviceMode | mode () const |
| Возвращает текущий режим открытия устройства | |
| void | setMode (DeviceMode m) |
| Устанавливает режим открытия устройства. Не переоткрывает устройство | |
| DeviceOptions | options () const |
| Возвращает текущие опции устройства | |
| bool | isOptionSet (DeviceOption o) const |
| Возвращает текущее состояние опции "o". | |
| void | setOptions (DeviceOptions o) |
| Устанавливает опции устройства | |
| bool | setOption (DeviceOption o, bool yes=true) |
| Устанавливает опцию "o" устройства в "yes" и возвращает предыдущее состояние опции | |
| DeviceInfoFlags | infoFlags () const |
| Возвращает характеристики канала | |
| PIString | path () const |
| Возвращает текущий путь устройства | |
| void | setPath (const PIString &path) |
| Устанавливает путь устройства. Не переоткрывает устройство | |
| bool | isReadable () const |
| Возвращает равен ли режим открытия ReadOnly или ReadWrite. | |
| bool | isWriteable () const |
| Возвращает равен ли режим открытия WriteOnly или ReadWrite. | |
| bool | isOpened () const |
| Возвращает успешно ли открыто устройство | |
| bool | isClosed () const |
| Возвращает закрыто ли устройство | |
| virtual bool | canRead () const |
| Возвращает может ли устройство читать сейчас | |
| virtual bool | canWrite () const |
| Возвращает может ли устройство писать сейчас | |
| void | setReopenEnabled (bool yes=true) |
| Устанавливает возможность вызова open() при потоковом чтении на закрытом устройстве | |
| void | setReopenTimeout (PISystemTime timeout) |
| Устанавливает задержку между вызовами open() если переоткрытие активно | |
| bool | isReopenEnabled () const |
| Возвращает активно ли переоткрытие | |
| PISystemTime | reopenTimeout () |
| Возвращает задержку переоткрытия | |
| void | setThreadedReadSlot (ReadRetFunc func) |
| Устанавливает callback потокового чтения Подробнее... | |
| void | setThreadedReadData (void *d) |
| Устанавливает произвольный указатель, который будет передан в callback потокового чтения | |
| void | setThreadedReadBufferSize (int new_size) |
| Устанавливает размер буфера потокового чтения Подробнее... | |
| int | threadedReadBufferSize () const |
| Возвращает размер буфера потокового чтения | |
| const uchar * | threadedReadBuffer () const |
| Возвращает содержимое буфера потокового чтения | |
| void * | threadedReadData () const |
| Возвращает произвольный указатель, который будет передан в callback потокового чтения | |
| bool | isThreadedRead () const |
| Возвращает запущен ли поток чтения | |
| bool | isThreadedReadStopping () const |
| Возвращает останавливается ли поток чтения | |
| void | startThreadedRead () |
| Запускает потоковое чтение | |
| void | startThreadedRead (ReadRetFunc func) |
| Запускает потоковое чтение и устанавливает callback потокового чтения в "func". | |
| void | stopThreadedRead () |
| Останавливает потоковое чтение. | |
| void | terminateThreadedRead () |
| Прерывает потоковое чтение. Подробнее... | |
| bool | waitThreadedReadFinished (PISystemTime timeout={}) |
| Ожидает завершения потокового чтения в течении не более "timeout". | |
| bool | isThreadedWrite () const |
| Возвращает запущен ли поток записи | |
| void | startThreadedWrite () |
| Запускает потоковую запись | |
| void | stopThreadedWrite () |
| Останавливает потоковую запись. | |
| void | terminateThreadedWrite () |
| Прерывает потоковую запись. Подробнее... | |
| bool | waitThreadedWriteFinished (PISystemTime timeout={}) |
| Ожидает завершения потоковой записи в течении не более "timeout". | |
| void | clearThreadedWriteQueue () |
| Очищает очередь потоковой записи | |
| void | start () |
| Запускает потоковое чтение и запись | |
| void | stop () |
| Останавливает потоковое чтение и запись. | |
| void | stopAndWait (PISystemTime timeout={}) |
| Останавливает потоковое чтение и запись и ожидает завершения. | |
| virtual void | interrupt () |
| Прерывает блокирующую операцию. | |
| ssize_t | read (void *read_to, ssize_t max_size) |
| Читает из устройства не более "max_size" байт в "read_to". | |
| ssize_t | read (PIMemoryBlock mb) |
| Читает из устройства в блок памяти "mb". | |
| PIByteArray | read (ssize_t max_size) |
| Читает из устройства не более "max_size" байт и возвращает данные как PIByteArray. | |
| virtual ssize_t | bytesAvailable () const |
| Возвращает количество байт доступных для чтения Подробнее... | |
| ssize_t | write (const void *data, ssize_t max_size) |
| Пишет в устройство не более "max_size" байт из "data". | |
| PIByteArray | readForTime (PISystemTime timeout) |
| Читает из устройства в течении "timeout" и возвращает данные как PIByteArray. | |
| ullong | writeThreaded (const void *data, ssize_t max_size) |
| Добавляет данные в очередь на потоковую запись и возвращает ID задания | |
| ullong | writeThreaded (const PIByteArray &data) |
| Добавляет данные в очередь на потоковую запись и возвращает ID задания | |
| virtual PIConstChars | fullPathPrefix () const |
| Возвращает префикс устройства. Creating devices by unambiguous string. | |
| PIString | constructFullPath () const |
| Возвращает строку полного описания для этого устройства, fullPathPrefix() + "://" + ... | |
| void | configureFromFullPath (const PIString &full_path) |
| Настраивает устройство из параметров строки полного описания | |
| PIVariantTypes::IODevice | constructVariant () const |
| Возвращает PIVariantTypes::IODevice, описывающий это устройство | |
| void | configureFromVariant (const PIVariantTypes::IODevice &d) |
| Настраивает устройство из PIVariantTypes::IODevice. | |
| ssize_t | write (const PIMemoryBlock &mb) |
| Пишет в устройство блок памяти "mb". | |
Открытые члены унаследованные от PIObject | |
| PIObject (const PIString &name=PIString()) | |
| Создает PIObject с именем "name". | |
| PIString | name () const |
| Возвращает имя объекта | |
| virtual const char * | className () const |
| Возвращает имя класса объекта | |
| virtual const char * | parentClassName () const |
| Возвращает имя родительского класса | |
| bool | debug () const |
| Возвращает включен ли вывод piCoutObj для этого объекта | |
| void | setName (const PIString &name) |
| Устанавливает имя объекта | |
| void | setDebug (bool debug) |
| Включает или отключает вывод piCoutObj для этого объекта | |
| PIVariant | property (const char *name) const |
| Возвращает свойство объекта по имени "name". | |
| void | setProperty (const char *name, const PIVariant &value) |
| Устанавливает у объекта свойство по имени "name" в "value". Если такого свойства нет, оно добавляется | |
| bool | isPropertyExists (const char *name) const |
| Возвращает присутствует ли свойство по имени "name". | |
| PIStringList | scopeList () const |
| Возвращает цепочку наследования объекта (вместе с классом самого объекта) | |
| void | piDisconnect (const PIString &sig, PIObject *dest, void *ev_h) |
| Разрывает все соединения от события "sig" к объекту "dest" и обработчику "ev_h". | |
| void | piDisconnect (const PIString &sig, PIObject *dest) |
| Разрывает все соединения от события "sig" к объекту "dest". | |
| void | piDisconnect (const PIString &sig) |
| Разрывает все соединения от события "sig". | |
| bool | isPIObject () const |
| Возвращает действительный ли это PIObject (проверяет подпись) | |
| template<typename T > | |
| bool | isTypeOf () const |
| Возвращает действительный ли это наследник PIObject типа "T" (проверяет подпись и имя класса) | |
| template<typename T > | |
| T * | cast () const |
| Возвращает преобразование к типу T если это действительный наследник типа "T" (проверяет через isTypeOf()), или "nullptr". | |
| void | callQueuedEvents () |
| Выполнить все отложенные события от CONNECTU_QUEUED соединений | |
| bool | maybeCallQueuedEvents () |
| Если было хотя бы одно CONNECTU_QUEUED соединение с исполнителем this, то выполнить события Подробнее... | |
| void | deleteLater () |
| Пометить объект на удаление Подробнее... | |
| void | deleted (PIObject *o) |
| Вызывается перед удалением объекта Подробнее... | |
Открытые статические члены | |
| static PIIODevice * | createFromFullPath (const PIString &full_path) |
| Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвращает его Подробнее... | |
| static PIIODevice * | createFromVariant (const PIVariantTypes::IODevice &d) |
| Пытается создать новое устройство по префиксу, настраивает с помощью configureFromVariant() и возвращает его | |
| static PIStringList | availablePrefixes () |
| Возвращает префиксы всех зарегистрированных устройств | |
| static PIStringList | availableClasses () |
| Возвращает имена классов всех зарегистрированных устройств | |
Открытые статические члены унаследованные от PIObject | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h) |
| Разрывает все соединения от события "sig" объекта "src" к объекту "dest" и обработчику "ev_h". | |
| static void | piDisconnect (PIObject *src, const PIString &sig, PIObject *dest) |
| Разрывает все соединения от события "sig" объекта "src" к объекту "dest". | |
| static void | piDisconnect (PIObject *src, const PIString &sig) |
| Разрывает все соединения от события "sig" объекта "src". | |
| static PIObject * | findByName (const PIString &name) |
| Returns PIObject* with name "name" or 0, if there is no object found. | |
| static bool | isPIObject (const PIObject *o) |
| Возвращает действительный ли "o" PIObject (проверяет подпись) | |
| template<typename T > | |
| static bool | isTypeOf (const PIObject *o) |
| Возвращает действительный ли "o" наследник PIObject типа "T" (проверяет подпись и имя класса) | |
Защищенные члены | |
| virtual bool | openDevice ()=0 |
| Переопределите для открытия устройства, возвращаемое значение будет установлено в переменную "opened_". Не используйте напрямую, только через open()! | |
| virtual bool | closeDevice () |
| Переопределите для закрытия устройства, обратное возвращаемое значение будет установлено в переменную "opened_". | |
| virtual ssize_t | readDevice (void *read_to, ssize_t max_size) |
| Переопределите для чтения данных из устройства | |
| virtual ssize_t | writeDevice (const void *data, ssize_t max_size) |
| Переопределите для записи данных в устройство | |
| virtual bool | threadedRead (const uchar *readed, ssize_t size) |
| Метод вызывается после каждого успешного потокового чтения, по умолчанию вызывает callback "ret_func_". | |
| virtual PIString | constructFullPathDevice () const |
| Переопределите для создания строки полного описания устройства. По умолчанию возвращает path() | |
| virtual void | configureFromFullPathDevice (const PIString &full_path) |
| Переопределите для настройки устройства из строки полного описания. По умолчанию вызывает setPath() | |
| virtual PIPropertyStorage | constructVariantDevice () const |
| Переопределите для создания свойств устройства. По умолчанию возвращает PIPropertyStorage со свойством "path". | |
| virtual void | configureFromVariantDevice (const PIPropertyStorage &d) |
| Переопределите для настройки устройства из PIPropertyStorage. Опции и режим уже применены. По умолчанию устанавливает свойство "path". | |
| virtual void | optionsChanged () |
| Переопределите для применения новых опций устройства | |
| virtual DeviceInfoFlags | deviceInfoFlags () const |
| Переопределите для возврата правильных DeviceInfoFlags. По умолчанию возвращает 0. | |
| virtual void | threadedReadBufferSizeChanged () |
| Переопределите для применения нового threadedReadBufferSize() | |
Защищенные члены унаследованные от PIObject | |
| PIObject * | emitter () const |
| Возвращает PIObject* который вызвал это событие. Значение допустимо только из методов обработчиков событий | |
| virtual void | propertyChanged (const char *name) |
| Виртуальная функция, вызывается после изменения любого свойства. | |
Относящиеся к классу функции | |
(не члены класса) | |
| template<typename T > | |
| T | readDeviceSetting (const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep) |
| Service function. useful for configuring devices. Подробнее... | |
| #define | REGISTER_DEVICE(class) |
| Включить создание экземпляров устройства с помощью метода PIIODevice::createFromFullPath(). Подробнее... | |
| #define | PIIODEVICE(class, prefix) |
| Используйте этот макрос вместо PIOBJECT при объявлении своего PIIODevice. Подробнее... | |
Относящиеся к классу функции унаследованные от PIObject | |
| #define | piCoutObj |
| Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdOut) для наследников PIObject. | |
| #define | piCerrObj |
| Макрос для условного (piDebug && PIObject::debug()) вывода в PICout(StdErr) для наследников PIObject. | |
| #define | PIOBJECT(name) |
| Необходимо использовать этот макрос после объявления класса для использования событийной системы и корректного вывода piCoutObj. | |
| #define | EVENT_HANDLER0(ret, name) ret name() |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name() | |
| #define | EVENT_HANDLER1(ret, name, type0, var0) ret name(type0 var0) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0) | |
| #define | EVENT_HANDLER2(ret, name, type0, var0, type1, var1) ret name(type0 var0, type1 var1) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0, type1 var1) | |
| #define | EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2) ret name(type0 var0, type1 var1, type2 var2) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0, type1 var1, type2 var2) | |
| #define | EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Объявляет обработчик событий с именем "name" и возвращаемым типом "ret", ret name(type0 var0, type1 var1, type2 var2,
type3 var3) | |
| #define | EVENT_HANDLER EVENT_HANDLER0 |
| Аналог EVENT_HANDLER0. | |
| #define | EVENT_VHANDLER0(ret, name) virtual ret name() |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name() | |
| #define | EVENT_VHANDLER1(ret, name, type0, var0) virtual ret name(type0 var0) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0) | |
| #define | EVENT_VHANDLER2(ret, name, type0, var0, type1, var1) virtual ret name(type0 var0, type1 var1) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0, type1
var1) | |
| #define | EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2) virtual ret name(type0 var0, type1 var1, type2 var2) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0, type1
var1, type2 var2) | |
| #define | EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Объявляет виртуальный обработчик событий с именем "name" и возвращаемым типом "ret", virtual ret name(type0 var0, type1
var1, type2 var2, type3 var3) | |
| #define | EVENT_VHANDLER EVENT_VHANDLER0 |
| Аналог EVENT_VHANDLER0. | |
| #define | EVENT0(name) void name(); |
| Объявляет событие с именем "name", void name();. | |
| #define | EVENT1(name, type0, var0) void name(type0 var0); |
| Объявляет событие с именем "name", void name(type0 var0);. | |
| #define | EVENT2(name, type0, var0, type1, var1) void name(type0 var0, type1 var1); |
| Объявляет событие с именем "name", void name(type0 var0, type1 var1);. | |
| #define | EVENT3(name, type0, var0, type1, var1, type2, var2) void name(type0 var0, type1 var1, type2 var2); |
| Объявляет событие с именем "name", void name(type0 var0, type1 var1, type2 var2);. | |
| #define | EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3) void name(type0 var0, type1 var1, type2 var2, type3 var3); |
| Объявляет событие с именем "name", void name(type0 var0, type1 var1, type2 var2, type3 var3);. | |
| #define | EVENT EVENT0 |
| Аналог EVENT0. | |
| #define | CONNECTU(src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее... | |
| #define | CONNECTU_QUEUED(src, event, dest, handler, performer) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" объекта "dest". Подробнее... | |
| #define | CONNECTL(src, event, functor) |
| Соединяет событие "event" объекта "src" к лямбда-функции "functor". Подробнее... | |
| #define | CONNECT0(ret, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT1(ret, type0, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" с проверкой наличия события и обработчика. Подробнее... | |
| #define | CONNECT CONNECT0 |
| Аналог CONNECT0. Подробнее... | |
| #define | WEAK_CONNECT0(ret, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT1(ret, type0, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Соединяет событие "event" объекта "src" к обработчику или событию "handler" с возвращаемым типом "ret" объекта "dest" без проверки наличия события и обработчика. Подробнее... | |
| #define | WEAK_CONNECT WEAK_CONNECT0 |
| Аналог WEAK_CONNECT0. Подробнее... | |
| #define | DISCONNECT0(ret, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT1(ret, type0, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT2(ret, type0, type1, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| piDisconnect событие "event" объекта "src" от обработчика или события "handler" с возвращаемым типом "ret" объекта "dest" | |
| #define | DISCONNECT DISCONNECT0 |
| Аналог DISCONNECT0. | |
| #define | HANDLER(handler) |
| Возвращает указатель на обработчик события "handler". | |
Handlers | |
| bool | open () |
| Открывает устройство | |
| bool | open (const PIString &_path) |
| Открывает устройство с путём "path". | |
| bool | close () |
| Закрывает устройство | |
| ssize_t | write (PIByteArray data) |
| Пишет "data" в устройство | |
Virtual handlers | |
| virtual void | flush () |
| Немедленно записать все буферизированные данные | |
Базовый класс утройств ввода/вывода.
This class provide open/close logic, threaded read/write and virtual input/output functions read() and write(). You should implement pure virtual function openDevice() in your subclass.
PIIODevice have boolean variable indicated open status. Returns of functions openDevice() and closeDevice() change this variable.
PIIODevice based on PIThread, so it`s overload run() to exec read() in background thread. If read is successful virtual function threadedRead() is executed. Default implementation of this function execute external static function set by setThreadedReadSlot() with data set by setThreadedReadData(). Extrenal static function should have format
bool func_name(void * Threaded_read_data, uchar * readed_data, int readed_size)
Threaded read starts with function startThreadedRead().
PIIODevice aggregate another PIThread to perform a threaded write by function writeThreaded(). This function add task to internal queue and return queue entry ID. You should start write thread by function startThreadedWrite. On successful write event threadedWriteEvent is raised with two arguments - task ID and written bytes count.
PIIODevice have internal buffer for threaded read, and threadedRead() function receive pointer to this buffer in first argument. You can adjust size of this buffer by function setThreadedReadBufferSize()
Default size of this buffer is 4096 bytes.
When threaded read is begin its call open() if device is closed. While threaded read running PIIODevice check if device opened every read and if not call open() every reopen timeout if reopen enabled. Reopen timeout is set by setReopenTimeout(), reopen enable is set by setReopenEnabled().
This is virtual function configureDevice() which executes when configure() executes. This function takes two arguments: "e_main" and "e_parent" as void*. There are pointers to PIConfig::Entry entries of section "section" and their parent. If there is no parent "e_parent" = 0. Function configure() set three parameters of device: "reopenEnabled", "reopenTimeout" and "threadedReadBufferSize", then execute function configureDevice().
Each ancestor of PIIODevice reimlements configureDevice() function to be able to be confured from configuration file. This parameters described at section "Configurable parameters" in the class reference.
Usage example:
Implementation example:
There are some virtual functions to describe child class without its declaration.
constructFullPath() should returns full unambiguous string, contains prefix and all device parameters
configureFromFullPath() provide configuring device from full unambiguous string without prefix and "://"
Macro PIIODEVICE should be used instead of PIOBJECT
Macro REGISTER_DEVICE should be used after declaration of class, i.e. at the last line of *.h file
If custom I/O device corresponds there rules, it can be returned by function createFromFullPath().
Each PIP I/O device has custom unambiguous string description:
Режимы открытия для PIIODevice.
| Элементы перечислений | |
|---|---|
| ReadOnly | Устройство может только читать |
| WriteOnly | Устройство может только писать |
| ReadWrite | Устройство может читать и писать |
Опции для PIIODevice, работает для некоторых устройств
| Элементы перечислений | |
|---|---|
| BlockingRead | read() блокируется, пока данные не поступят, по умолчанию выключено |
| BlockingWrite | write() блокируется, пока данные не запишутся, по умолчанию выключено |
Характеристики канала PIIODevice.
| Элементы перечислений | |
|---|---|
| Sequential | Непрерывный поток байт, без пакетирования |
| Reliable | Канал без ошибок или повреждений данных |
| void PIIODevice::setThreadedReadSlot | ( | ReadRetFunc | func | ) |
Устанавливает callback потокового чтения
Устанавливает внешний статический метод, который будет вызван после каждого успешного потокового чтения. Метод должен быть в формате "bool func(void * data, uchar * readed, int size)"
| void PIIODevice::setThreadedReadBufferSize | ( | int | new_size | ) |
Устанавливает размер буфера потокового чтения
По умолчанию 4096 байт. Если устройство за одно чтение может читать более 4096 байт, необходимо использовать этот метод для установки нужного размера буфера
| void PIIODevice::terminateThreadedRead | ( | ) |
Прерывает потоковое чтение.
| void PIIODevice::terminateThreadedWrite | ( | ) |
Прерывает потоковую запись.
|
inlinevirtual |
Возвращает количество байт доступных для чтения
Эта функция как правило используется чтобы знать какой размер буфера нужен в памяти для чтения. Если функция возвращает -1 это значит что количество байт для чтения не известно.
Переопределяется в PICloudClient, PIFile, PIIOByteArray, PIIOString, PITransparentDevice и PIPacketExtractor.
|
static |
Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвращает его
В метод configureFromFullPath() "full_path" передается без fullPathPrefix() и "://". См. Creating devices by unambiguous string
|
related |
Service function. useful for configuring devices.
Function takes entry name "name", default value "def" and two PIConfig::Entry sections: "em" and their parent "ep". If there is no parent ep = 0. If "ep" is not null and entry "name" exists in "ep" function returns this value. Else returns value of entry "name" in section "em" or "def" if entry doesn`t exists.
This function useful to read settings from configuration file in implementation PIIODevice::configureDevice() function
|
related |
Включить создание экземпляров устройства с помощью метода PIIODevice::createFromFullPath().
Этот макрос может быть расположен в cpp или заголовочном файле, но предпочтительнее распологать в заголовочном
|
related |
Используйте этот макрос вместо PIOBJECT при объявлении своего PIIODevice.
| prefix | Уникальный префикс устройства в кавычках, может быть "" |