Механизм расширенных атрибутов во FreeBSD (extattr) позволяет управлять дополнительной информацией, связанной с файлом или директорией. При помощи семейства команд setextattr, getextattr и rmextattr можно редактировать расширенные атрибуты файла, принадлежащие к двум пространствам имён: системному и пользовательскому. Редактирование пользовательских атрибутов может пригодиться для классификации файла: добавления описания, ключевых слов и других метаданных.
Путь к открываемому файлу передаётся в качестве первого параметра при запуске соответствующей программы. Кроме имени файла в открываемую программу можно передать, например, номер документа, который должен открыться при старте программы (если документы берутся из, скажем, базы данных). В программе нам нужно просто получить передаваемый ей параметр и должным образом обработать его.
Пример получения списка всех доступных COM-портов.
Список всех COM-портов в системе
QT += serialport #В pro-файле
-----
#include <QSerialPort>
#include <QSerialPortInfo>
...
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
ui->comboBox->addItem(info.portName(),info.portName());
}
Потребовалось вычислять контрольную сумму по алгоритму CRC для пакетов данных, передаваемых по протоколу ModBus. В интернете есть функция вычисления CRC16, но её пришлось немного переделать, чтобы результат получался с нужным порядком следования байтов (протокол ModBus требует BigEndian).
CRC16 с BigEndian для ModBus в Qt
#include <QtEndian>
...
QByteArray MainWindow::CRC16_ModBusRTU(QByteArray buf, quint16 len)
...