PIP 5.5.3
Platform-Independent Primitives
Классы | Открытые типы | Открытые члены | Открытые статические члены | Защищенные члены | Полный список членов класса
Класс PISerial

Последовательный порт. Подробнее...

#include <piserial.h>

Граф наследования:PISerial:
Inheritance graph
[см. легенду]

Классы

struct  DeviceInfo
 Информация о последовательном устройстве Подробнее...
 

Открытые типы

enum  Parameters { ParityControl = 0x1 , ParityOdd = 0x2 , TwoStopBits = 0x4 }
 Параметры PISerial. Подробнее...
 
enum  Speed {
  S50 = 50 , S75 = 75 , S110 = 110 , S300 = 300 ,
  S600 = 600 , S1200 = 1200 , S2400 = 2400 , S4800 = 4800 ,
  S9600 = 9600 , S14400 = 14400 , S19200 = 19200 , S38400 = 38400 ,
  S57600 = 57600 , S115200 = 115200 , S230400 = 230400 , S460800 = 460800 ,
  S500000 = 500000 , S576000 = 576000 , S921600 = 921600 , S1000000 = 1000000 ,
  S1152000 = 1152000 , S1500000 = 1500000 , S2000000 = 2000000 , S2500000 = 2500000 ,
  S3000000 = 3000000 , S3500000 = 3500000 , S4000000 = 4000000
}
 Скорость PISerial. Подробнее...
 
- Открытые типы унаследованные от PIIODevice
enum  DeviceMode { ReadOnly = 0x01 , WriteOnly = 0x02 , ReadWrite = 0x03 }
 Режимы открытия для PIIODevice. Подробнее...
 
enum  DeviceOption { BlockingRead = 0x01 , BlockingWrite = 0x02 }
 Опции для PIIODevice, работает для некоторых устройств Подробнее...
 
enum  DeviceInfoFlag { Sequential = 0x01 , Reliable = 0x02 }
 Характеристики канала PIIODevice. Подробнее...
 

Открытые члены

 PISerial ()
 Создает пустой PISerial.
 
 PISerial (const PIString &device, PISerial::Speed speed=S115200, PIFlags< PISerial::Parameters > params=0)
 Создает PISerial с именем устройства "device", скоростью "speed" и параметрами "params".
 
void setSpeed (PISerial::Speed speed)
 Устанавливает скорости приема и передачи в "speed".
 
void setOutSpeed (PISerial::Speed speed)
 Устанавливает скорость передачи в "speed".
 
void setInSpeed (PISerial::Speed speed)
 Устанавливает скорость приема в "speed".
 
void setDevice (const PIString &dev)
 Устанавливает имя устройства в "dev".
 
void setParameters (PIFlags< PISerial::Parameters > parameters_)
 Устанавливает параметры в "parameters_".
 
void setParameter (PISerial::Parameters parameter, bool on=true)
 Устанавливает параметр "parameter" в "on".
 
bool isParameterSet (PISerial::Parameters parameter) const
 Возвращает установлен ли параметр "parameter".
 
PIFlags< PISerial::Parametersparameters () const
 Возвращает параметры
 
void setDataBitsCount (int bits)
 Устанавливает количество бит данных. Разрешены значения от 5 до 8, по умолчанию 8.
 
int dataBitsCount () const
 Возвращает количество бит данных
 
bool setPin (int number, bool on)
 Устанавливает пин с номером "number" в логический уровень "on". Разрешены номера 4 (DTR) и 7 (RTS)
 
bool isPin (int number) const
 Возвращает логический уровень пина с номером "number". Разрешены номера от 1 до 9.
 
bool setBreak (bool enabled)
 Переключает состояние передачи в break. Подробнее...
 
PIString device () const
 Возвращает имя устройства
 
PISerial::Speed outSpeed () const
 Возвращает скорость передачи
 
PISerial::Speed inSpeed () const
 Возвращает скорость приема
 
virtual void flush () override
 Откидывает все буферизированные данные для передачи и приема
 
bool read (void *read_to, int max_size, double timeout_ms)
 Читает из устройства не более "max_size" байт в "read_to" с таймаутом "timeout_ms". Подробнее...
 
PIString readString (int size=-1, double timeout_ms=1000.)
 Читает из устройства в течении таймаута "timeout_ms" или до "size" байт Подробнее...
 
PIByteArray readData (int size=-1, double timeout_ms=1000.)
 Читает из устройства в течении таймаута "timeout_ms" или до "size" байт Подробнее...
 
bool send (const void *data, int size)
 Пишет в порт не более "size" байт данных "data". Возвращает если количество записанных байт = "size".
 
bool send (const PIByteArray &data)
 Пишет в порт байтовый массив "data". Возвращает если количество записанных байт = размер "data".
 
void interrupt () override
 Прерывает блокирующую операцию.
 
- Открытые члены унаследованные от 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".
 
bool open ()
 Открывает устройство
 
bool open (const PIString &_path)
 Открывает устройство с путём "path".
 
bool close ()
 Закрывает устройство
 
ssize_t write (PIByteArray data)
 Пишет "data" в устройство
 
void opened ()
 Вызывается при успешном открытии
 
void closed ()
 Вызывается при успешном закрытии
 
void threadedReadEvent (const uchar *readed, ssize_t size)
 Вызывается при успешном потоковом чтении данных
 
void threadedWriteEvent (ullong id, ssize_t written_size)
 Вызывается при успешной потоковой записи данных с ID задания "id".
 
- Открытые члены унаследованные от 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 PIVector< int > availableSpeeds ()
 Возвращает все возможные скорости для устройств
 
static PIStringList availableDevices (bool test=false)
 Возвращает пути всех доступных устройств в системе. Если "test", то каждое устройство будет опробовано на открытие
 
static PIVector< DeviceInfoavailableDevicesInfo (bool test=false)
 Возвращает все доступные устройства в системе. Если "test", то каждое устройство будет опробовано на открытие
 
- Открытые статические члены унаследованные от PIIODevice
static PIIODevicecreateFromFullPath (const PIString &full_path)
 Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвращает его Подробнее...
 
static PIIODevicecreateFromVariant (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 PIObjectfindByName (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" (проверяет подпись и имя класса)
 

Защищенные члены

PIString constructFullPathDevice () const override
 Переопределите для создания строки полного описания устройства. По умолчанию возвращает path()
 
void configureFromFullPathDevice (const PIString &full_path) override
 Переопределите для настройки устройства из строки полного описания. По умолчанию вызывает setPath()
 
PIPropertyStorage constructVariantDevice () const override
 Переопределите для создания свойств устройства. По умолчанию возвращает PIPropertyStorage со свойством "path".
 
void configureFromVariantDevice (const PIPropertyStorage &d) override
 Переопределите для настройки устройства из PIPropertyStorage. Опции и режим уже применены. По умолчанию устанавливает свойство "path".
 
void optionsChanged () override
 Переопределите для применения новых опций устройства
 
void threadedReadBufferSizeChanged () override
 Переопределите для применения нового threadedReadBufferSize()
 
ssize_t readDevice (void *read_to, ssize_t max_size) override
 Базовое чтение Подробнее...
 
ssize_t writeDevice (const void *data, ssize_t max_size) override
 Переопределите для записи данных в устройство
 
DeviceInfoFlags deviceInfoFlags () const override
 Переопределите для возврата правильных DeviceInfoFlags. По умолчанию возвращает 0.
 
virtual void received (const void *data, int size)
 Executes when any read function was successful. Default implementation does nothing.
 
bool openDevice () override
 Переопределите для открытия устройства, возвращаемое значение будет установлено в переменную "opened_". Не используйте напрямую, только через open()!
 
bool closeDevice () override
 Переопределите для закрытия устройства, обратное возвращаемое значение будет установлено в переменную "opened_".
 
- Защищенные члены унаследованные от PIIODevice
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
PIObjectemitter () const
 Возвращает PIObject* который вызвал это событие. Значение допустимо только из методов обработчиков событий
 
virtual void propertyChanged (const char *name)
 Виртуальная функция, вызывается после изменения любого свойства.
 

Configurable parameters

string device
 устройство, по умолчанию ""
 
int speed
 скорость чтения/записи, по умолчанию 115200
 
int dataBitsCount
 количесво бит данных, по умолчанию 8
 
bool parityControl
 контроль четности, по умолчанию false
 
bool parityOdd
 нечётный контроль четности, по умолчанию false
 
bool twoStopBits
 два стоповых бита, по умолчанию false
 

Дополнительные унаследованные члены

- Открытые атрибуты унаследованные от PIIODevice
bool reopenEnabled
 setReopenEnabled, по умолчанию "true"
 
int reopenTimeout
 setReopenTimeout, по умолчанию 1_s
 
int threadedReadBufferSize
 setThreadedReadBufferSize в байтах, по умолчанию 4096
 

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

Последовательный порт.

Краткий обзор

Этот класс предоставляет доступ к последовательному порту, например, COM-порт.

Строка полного описания

Начиная с версии 1.16.0 можно в качестве path использовать PISerial::DeviceInfo::id() USB идентификатор для USB устройств.

PISerial * s = new PISerial("0403:6001");
PIIODevice * d = PIIODevice::createFromFullPath("ser://0403:6001:115200");
Базовый класс утройств ввода/вывода.
Definition: piiodevice.h:87
static PIIODevice * createFromFullPath(const PIString &full_path)
Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвра...
Definition: piiodevice.cpp:621
Последовательный порт.
Definition: piserial.h:37

Перечисления

◆ Parameters

Параметры PISerial.

Элементы перечислений
ParityControl 

Включить генерацию и проверку контроля чётности

ParityOdd 

Нечётный контроль чётности вместо чётного

TwoStopBits 

Два стоповых бита вместо одного

◆ Speed

Скорость PISerial.

Элементы перечислений
S50 

50 baud

S75 

75 baud

S110 

110 baud

S300 

300 baud

S600 

600 baud

S1200 

1200 baud

S2400 

2400 baud

S4800 

4800 baud

S9600 

9600 baud

S14400 

14400 baud

S19200 

19200 baud

S38400 

38400 baud

S57600 

57600 baud

S115200 

115200 baud

S230400 

230400 baud

S460800 

460800 baud

S500000 

500000 baud

S576000 

576000 baud

S921600 

921600 baud

S1000000 

1000000 baud

S1152000 

1152000 baud

S1500000 

1500000 baud

S2000000 

2000000 baud

S2500000 

2500000 baud

S3000000 

3000000 baud

S3500000 

3500000 baud

S4000000 

4000000 baud

Методы

◆ setBreak()

bool PISerial::setBreak ( bool  enabled)

Переключает состояние передачи в break.

Если включено, отсылается непрерывный поток нулей. Возвращает успешна ли смена состояния.

Заметки
Порт должен быть открыт перед использованием этого метода

◆ read()

bool PISerial::read ( void *  data,
int  size,
double  timeout_ms 
)

Читает из устройства не более "max_size" байт в "read_to" с таймаутом "timeout_ms".

Читает в указатель "read_to" не более "max_size" байт и не дольше чем "timeout_ms" миллисекунд.
Если "timeout_ms" < 0 метод ожидает бесконечно, пока не будет прочитано "max_size" байт.
Если "size" <= 0, то метод немедленно возвращает false.
Для чтения данных неизвестного размера используется метод readData().

Возвращает
Если количество прочитанных байт = "max_size"
См. также
readString(), readData()

◆ readString()

PIString PISerial::readString ( int  size = -1,
double  timeout_ms = 1000. 
)

Читает из устройства в течении таймаута "timeout_ms" или до "size" байт

Читает всё или не более "size" байт и не дольше чем "timeout_ms" миллисекунд.
Если "timeout_ms" < 0 метод ожидает бесконечно, пока не будет прочитано "max_size" байт.
Если "size" <= 0, то читает всё в течении "timeout_ms" миллисекунд.
Если "size" <= 0 и "timeout_ms" <= 0, то метод немедленно возвращает пустую строку.
Этот метод аналогичен readData(), но возвращает строку.

Возвращает
Если количество прочитанных байт = "max_size"
См. также
readData()

◆ readData()

PIByteArray PISerial::readData ( int  size = -1,
double  timeout_ms = 1000. 
)

Читает из устройства в течении таймаута "timeout_ms" или до "size" байт

Читает всё или не более "size" байт и не дольше чем "timeout_ms" миллисекунд.
Если "timeout_ms" < 0 метод ожидает бесконечно, пока не будет прочитано "max_size" байт.
Если "size" <= 0, то читает всё в течении "timeout_ms" миллисекунд.
Если "size" <= 0 и "timeout_ms" <= 0, то метод немедленно возвращает пустую строку.
Этот метод аналогичен readString(), но возвращает массив байт.

Возвращает
Если количество прочитанных байт = "max_size"
См. также
readString()

◆ readDevice()

ssize_t PISerial::readDevice ( void *  read_to,
ssize_t  max_size 
)
overrideprotectedvirtual

Базовое чтение

Читает в указатель "read_to" не более "max_size" байт. Если установлена опция PIIODevice::BlockingRead, то этот метод ожидает хотя бы одного байта.

Возвращает
Количество прочитанных байт, -1 при ошибке
См. также
readData(), readString()

Переопределяет метод предка PIIODevice.