LINUX.ORG.RU

Сообщения Alex_Golubev

 

Как можно экспортировать ОС Линукс с разбери пи для размножения?

Задача сделать перенос Линукса с одного разбери пи на другой разбери пи. Есть простой способ делаем полную копию ОС после записываем на другой носитель и запускаем и все работает. Делаю с помощью Win32DiskImager. Но проблема у меня ОС занимает пространство 64ГБ на разбери пи. И держать копию 64 ГБ затратно на рабочей машине. Есть какой способ сжать ОС а после развернуть на другой разбери?

 

Alex_Golubev
()

Как сделать вывод данных ID внешних устройств в список (лист) с пролистыванием списка и постоянным обновлением?

Есть внешнее устройства. Устройства общаются по RS485, проокол модбас. Нужно вывезти список ID устройств. Скорость низкая обновление примерно раз в секунду одного устройства. Устройств 40 шт. Вот получает: Загружаемся в первый момент времени. И список заполняется. В виде: № ID = U001 1234_01.11.2023. И так далее уходим списком в низ. Как только список загрузился происходит обновление списка сверху в низ. По типоу FIFO. Как дошли до последнего начинаем сначала заполнять список. И так до бесконечности. Вот как лучше сделать в QT5. Еще охота получить сигнал какой выбран ID. Это для обновления внешнего устройства.

 

Alex_Golubev
()

Кто нибудь знает как повернуть название оси в QWT

Как можно повернуть название оси в qwt ? Понял как можно менять шрифт, но как повернуть из документации на QWT не понял.

    QFont font;
    font.setFamily("TimesNewRoman");
    font.setPointSizeF(10);
 
    QwtPlot *d_plot = new QwtPlot(NULL);
    d_plot->setFont(font);
    d_plot->setTitle(" "); // заголовок
    d_plot->setCanvasBackground(Qt::white); // цвет фона
    // Параметры осей координат
    QwtText titleY;
    titleY.setFont(font);
    titleY.setText("В");
    QwtText titleX;
    titleX.setFont(font);
    titleX.setText("А");
 
    d_plot->setAxisTitle(QwtPlot::yLeft  , titleY);
    d_plot->setAxisTitle(QwtPlot::xBottom, titleX);

картинка

 ,

Alex_Golubev
()

виртуальная машина выдает A problem has occured and the system can't recover

Экспортировал систему дебиан. Импортировал на другой компьютер. При импортирование ошибок не было. При запуски получаю ошибку Oh no! Something has gone wrong. A problem has occured and the system can’t recover. Please contact a system administartor. Размер памяти видео установил на максимум.

 ,

Alex_Golubev
()

QProcess выдает пустую строку при выполнение команды «ls /dev/ | grep sda1»

Хочу понять есть ли монтированая USB флешка. Делаю в консоле:

root@pi:~#  ls /dev/ | grep sda1
sda1

Делаю в qt:

    QProcess df;
    df.start("ls", QStringList()<< "/dev/ | grep sda1");
    df.waitForFinished();
    QString str = df.readAll();
    qDebug() << str;

Вывод str ""

 ,

Alex_Golubev
()

Pi-pico размер исполняемой программы область ram, rom, text

Может кто подскажет как можно посмотреть сколько заняла исполняемая программа для pi-pico? Использую visual studio code в нем файл CMakeLists.txt.

 

Alex_Golubev
()

Как лучше сделать на qt5 эмулятор терминала с esc последовательностью и приемом данных через com порт

Вот думаю как лучше все это сделать на qt5. В общем нужен терминал с поддержкой esc последовательности. Размер окна фиксирован. Количество символов фиксировано. Размер окна терминала должен быть равен размеру окна экрана. Прием данных через ком порт. Скорость приема большая порядка 1 Мбит. В общем нужно принимать данные парсить и вываливать на экран. Обновление экрана порядка 20Гц. Передача положения курсора по com-порту.

 

Alex_Golubev
()

Как сделать перенос строки в таблице?

Добавляю таблицу в QTextEdit. Для этого использую связку QTextEdit —> QTextCursor —> QTextTable. Для форматирования таблицы QTextTableFormat. Для форматрования ячейки таблицы QTextTableCellFormat. После создаю документ report.odt. Открываю документ и не вижу переноса строк. Как понимаю перенос работает в QTextEdit и работает в QTextDocument. Но когда создается документ перенос перестает работать. Мне нужно перенести текст или просто создать ячейку с двумя или более пустыми строками. Попытался добавить символ ‘\n’ не получилось. Добавил ‘\n\r’ не получилось.

sourceTextEdit = new QTextEdit();
    editWidth=sourceTextEdit->width(); // ширина листа

    cursor = sourceTextEdit->textCursor();   // берем курсор
    cursor.movePosition(QTextCursor::Start); // устанавливаем курсор в начальное положение
    
    
    float textColumnFactor = 0.02;
    QVector<QTextLength> columnWidthConstraints;
    const QList<int> width
                         {
                         (int)(editWidth * textColumnFactor),
                         (int)(editWidth * textColumnFactor)
                         };
    for(const auto & w : width)
        columnWidthConstraints.append(QTextLength(QTextLength::FixedLength, w));

    cursor = sourceTextEdit->textCursor();

    tableFormat.setColumnWidthConstraints(columnWidthConstraints);
    tableFormat.setAlignment(Qt::AlignCenter);
    tableFormat.setBorderStyle(QTextTableFormat::BorderStyle_Solid);
    tableFormat.setBorderBrush(QBrush(Qt::SolidPattern));
    tableFormat.setBackground(Qt::white);
    tableFormat.setBorderCollapse(true);
    tableFormat.setCellPadding(0);
    tableFormat.setCellSpacing(0);
    tableFormat.setBorder(1);

    cellFormat.setTopPadding(1);
    cellFormat.setBottomPadding(1);

    orderTable = cursor.insertTable(3, 2, tableFormat);
    orderTable->setFormat(tableFormat);

    adjustCell(0, 0, textColumnFactor/20, Qt::AlignLeft, "Модель", "TimesNewRoman", 12, QFont::Normal);
    adjustCell(1, 0, textColumnFactor/20, Qt::AlignLeft, "Серийный номер", "TimesNewRoman", 12, QFont::Normal);
    adjustCell(2, 0, textColumnFactor/20, Qt::AlignLeft, "Протокол", "TimesNewRoman", 12, QFont::Normal);

    adjustCell(0, 1, textColumnFactor/20, Qt::AlignLeft, " \n\r ", "TimesNewRoman", 12, QFont::Normal); // хочу добавить перенос строки в это место чтобы в ячейки было две строки
    adjustCell(1, 1, textColumnFactor/20, Qt::AlignLeft, " \n\r ", "TimesNewRoman", 12, QFont::Normal); // хочу добавить перенос строки в это место чтобы в ячейки было две строки
    adjustCell(2, 1, textColumnFactor/20, Qt::AlignLeft, " \n\r ", "TimesNewRoman", 12, QFont::Normal); // хочу добавить перенос строки в это место чтобы в ячейки было две строки
    
    
  void Report::adjustCell(const int row, const int col, float columFactor, Qt::Alignment 
  aalignment, QString text, QString fontName, qreal size, int fontWeight)
  {
    QFont font;
    font.setFamily(fontName);
    font.setPointSizeF(size);
    QTextCharFormat boldFormat;
    boldFormat.setFont(font);
    boldFormat.setFontWeight(fontWeight);

    auto cell = orderTable->cellAt(row, col);
    cellFormat.setLeftPadding(editWidth * columFactor);
    cell.setFormat(cellFormat);
    cell.firstCursorPosition().insertText(text, boldFormat);
    cursor=cell.firstCursorPosition();
    cellAlign.setAlignment(aalignment);
    cursor.setBlockFormat(cellAlign);
    }
    /*            создание документа          */
   QPrinter printer(QPrinter::ScreenResolution);
   printer.setPaperSize(QPrinter::A4);
   QSizeF paperSize;
   paperSize.setWidth(printer.width());
   paperSize.setHeight(printer.height());
   textDocument = sourceTextEdit->document(); // создаем документ
   textDocument->setPageSize(paperSize);
   writer.setFormat("odf");
   writer.setFileName("/media/usb0/report.odt");
   writer.write(textDocument);

 

Alex_Golubev
()

Как можно в QTextEdit разместить в колонтитул номер страницы ?

Гугл не дал ответа. Создал документ формата .pdf. Хочу пронумировать в нижнем колонтикул страницы. Но как туда обратиться из документации не понял.

sourceTextEdit = new QTextEdit();
cursor = sourceTextEdit->textCursor();
cursor.movePosition(QTextCursor::Start);
QTextCharFormat charFormat;
font.setPointSizeF(18);
charFormat.setFont(font);
charFormat.setFontWeight(QFont::Bold);
cursor.setCharFormat(charFormat);
cellAlign.setAlignment(Qt::AlignCenter);
cursor.setBlockFormat(cellAlign);
cursor.insertText("ПРОТОКОЛ ИСПЫТАНИЯ АККУМУЛЯТОРА №1");
QPrinter printer(QPrinter::ScreenResolution);
printer.setPaperSize(QPrinter::A4);
QSizeF paperSize;
paperSize.setWidth(printer.width());
paperSize.setHeight(printer.height());

//создаем .odf файл
textDocument = sourceTextEdit->document(); // создаем документ
textDocument->setPageSize(paperSize);
writer.setFormat("odf");
writer.setFileName("/media/usb0/report.odt");
writer.write(textDocument);

Может через курсор нужно обратиться или с помощью HTML можно. Не нашел н где ответа.

 

Alex_Golubev
()

Qt не отображает вложенные таблице в выходном файле .odt

Вот такой код:

ui->textEdit->setHtml(QString(
                              "<style>"
                               //для всех таблиц
                              //"table {width:100%;background: black;border: 2px solid white;}"
                              //"th { padding: 3px; color:white; background-color: black;border: 1px solid white;border-collapse:collapse;}"
                              //"tr { padding: 3px;color:white; background-color: black;border: 1px solid white;border-collapse:collapse;}"
                              //"td { padding: 3px;color:white; background-color: black;border: 1px solid white;border-collapse:collapse;}"

                               //класс на каждую ячейку
                               ".outer {background-color: cyan;}"
                               ".inner {padding: 1px; background-color: black;}"
                               ".cell_A { padding: 3px; color:black; background-color: white;}"
                               ".cell_B { padding: 3px; color:white; background-color: gray;}"
                              "</style> "

                            "<H1><CENTER>"
                            "<font color='black'><b>ПРОТОКОЛ ИСПЫТАНИЯ АККУМУЛЯТОРА №1</b>"
                            "</CENTER></H1>"

                            " <CENTER> "
                            " <TABLE class='outer'>"
                            " <tr>"

                            " <td>"
                            " <TABLE class='inner'>"
                            " <tr class='cell_A'><td class='cell_A'>Емкость при разряде</td><td class='cell_A'>43</td></tr>"
                            " <tr class='cell_A'><td class='cell_A'>Остаточная емкость</td><td class='cell_A'>86</td></tr>"
                            " <tr class='cell_A'><td class='cell_A'>Энергия полная</td><td class='cell_A'>556</td></tr>"
                            " <tr class='cell_A'><td class='cell_A'>Емкость при заряде</td><td class='cell_A'>52</td></tr>"
                            " <tr class='cell_A'><td class='cell_A'>КПД заряда</td><td class='cell_A'>83</td></tr>"
                            " </TABLE> "
                            " </td>"

                            " <td>"
                            " <TABLE class='inner'>"
                            " <tr class='cell_B'><td class='cell_B'>ЭПС 90% разряд</td><td class='cell_B'>11</td></tr>"
                            " <tr class='cell_B'><td class='cell_B'>ЭПС 50% разряд</td><td class='cell_B'>12</td></tr>"
                            " <tr class='cell_B'><td class='cell_B'>ЭПС 90% заряд</td><td class='cell_B'>13</td></tr>"
                            " <tr class='cell_B'><td class='cell_B'>ЭПС 50% заряд</td><td class='cell_B'>11</td></tr>"
                            " <tr class='cell_B'><td class='cell_B'></td><td class='cell_B'>4</td></tr>"
                            " </TABLE> "
                            " </td>"

                            " </tr>"
                            " </TABLE> "
                            " </CENTER>"
                               ));

     textDocument =  ui->textEdit->document(); // создаем документ
     QTextDocumentWriter writer; // импорт документа в .odt формат
     writer.setFormat("odf");
     writer.setFileName("/media/usb0/report.odt");
     writer.write(textDocument);

Но в выходном файле отсутствует таблица. В QTextEdit есть таблица, проверил выводом на экран

 

Alex_Golubev
()

При создание документа в формате .odt вставленная картинка теряет качество. Как можно поднять разрешение картинки при вставке?

Нужно создать документ с картинкой. Картинка формат .jpg. Написал вот такой код:

    sourceTextEdit = new QTextEdit();
    sourceTextEdit->setHtml(
                            " <p><img src='/root/Dene.jpg' width='512' height='300' alt='Зависимость напряжения от заряда'></p>"
                           );
    textDocument = sourceTextEdit->document(); // создаем документ
    QTextDocumentWriter writer; // импорт документа в .odt формат
    writer.setFormat("odf");
    writer.setFileName("/media/usb0/report.odt");
    writer.write(textDocument);

Картинка Dene.jpg плохого качества. Исходно картинка высокого качества. Картинка исходно имеет разрешение 512x300. В html указано разрешение 512x300. В чем может быть проблема.

 , ,

Alex_Golubev
()

Как отключить синхронизацию времени на Raspberry pi4?

Пытаюсь отключить синхронизацию времени на малинки пи4. Делаю:

root@pi:~# timedatectl 
               Local time: Пт 2022-11-18 10:40:00 +07
           Universal time: Пт 2022-11-18 03:40:00 UTC
                 RTC time: Пт 2022-11-18 03:40:00
                Time zone: Asia/Novosibirsk (+07, +0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

root@pi:~# systemctl status ntp.service
Unit ntp.service could not be found.
root@pi:~# systemctl status ntp.service
Unit ntp.service could not be found.
root@pi:~# service ntp restart
Failed to restart ntp.service: Unit ntp.service not found.

Пишет что NTP service: active но как отключить его?

Перемещено hobbit из general

 

Alex_Golubev
()

Как присоединить прилинковать библиотеки .so при кросс-компиляции Rpi?

Запустил проект QDeviceWatcher он позволяет детектировать подключение и отключение USB флешки. Он создал .so файлы куда их нужно положить или как их добавить к qt чтобы заработали в другом проекте.

 ,

Alex_Golubev
()

Rpi правила udev монтирования и размонтрвания usb флешки

Сделал монтирования и размонтирования:

root@pi:~# cd  /etc/udev/rules.d

root@pi:/etc/udev/rules.d# ls

99-com.rules

root@pi:/etc/udev/rules.d# nano autoMountFlash.rules

root@pi:/etc/udev/rules.d# ls

99-com.rules  autoMountFlash.rules

root@pi:/etc/udev/rules.d# nano autoMountFlash.rules

root@pi:/etc/udev/rules.d# 

Добавил в файл autoMountFlash.rules.

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"

# Import FS infos  

IMPORT{program}="/sbin/blkid -o udev -p %N"

# Get a label if present, otherwise specify one  

# ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"  

ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

# Global mount options  

ACTION=="add", ENV{mount_options}="relatime"

# Filesystem-specific mount options  

ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=0$

# Mount the device  

ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k $

# Clean up after removal  

ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%$

# Exit  

LABEL="media_by_label_auto_mount_end"

Но чета не заработало.

 

Alex_Golubev
()

Как сделать автомонтирования usb флешь накопителя на разбери пи4 ?

Нужно сделать автомонтирования и авторазмонтирования usb флешки на разбери пи4. Вроде как для этого нужен udev. Кто делал?

 

Alex_Golubev
()

QlineEdit валидатор для ввода чисел с плавающей точкой или без

Есть в самом qt QdoubleValidator для эдитора, но он работает некорректно если в поле написано число которое больше или равно регистру ввода. Пример я хочу проверку на ввод числа в приделах 0, 20, 3 знака после запятой. Допустим 12,305. Если в поле qlineEdit будет пусто и я начну вводить с клавиатуры число то по достижению цифры «5» числа 12,305 я больше не смогу больше ввезти. Но если в поле будет число 12,305 и начать ввод то валидатор даст такую возможность можно сделать 12,305689 или 12,305рпрмр.

QlineEdit пуст —> все работает. QlineEdit не пуст загружено число 12,3 —> все работает. QlineEdit не пуст загружено число 12,30 —> все работает. QlineEdit не пуст загружено число 12,305 —> не работает. Работает если только очистить поле ввода сначала.

 

Alex_Golubev
()

Не запускается автоматически приложения на распбери пи.

Попытался сделать автозапуск приложения написаного в qt. Для этого сделал следующие

  1. /etc/systemd/system создал nano application_one.service
  2. В него добавил
[Unit]

Description=Qt application autostart
After=graphical.target
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/Qt_Projects
ExecStart=/home/pi/Qt_Projects/kiab

[Install]
WantedBy=multi-user.target
  1. После systemctl enable application_one.service

  2. перезагрузка. Приложение не запустилось.

Вот что выдало:

root@pi:~# systemctl status application_one.service
● application_one.service - Qt application autostart
   Loaded: loaded (/etc/systemd/system/application_one.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2022-09-15 14:16:05 +07; 56s ago
  Process: 445 ExecStart=/home/pi/Qt_Projects/kiab (code=exited, status=203/EXEC)

Main PID: 445 (code=exited, status=203/EXEC)
сен 15 14:16:05 pi systemd[1]: Started Qt application autostart.
сен 15 14:16:05 pi systemd[445]: application_one.service: Failed to execute command: Permission denied
сен 15 14:16:05 pi systemd[445]: application_one.service: Failed at step EXEC spawning /home/pi/Qt_Projects/kiab: Permission denied
сен 15 14:16:05 pi systemd[1]: application_one.service: Main process exited, code=exited, status=203/EXEC
сен 15 14:16:05 pi systemd[1]: application_one.service: Failed with result 'exit-code'.

 

Alex_Golubev
()

Не запускается клавиатура на Rpi matchbox-keyboard выдает сообщение «Cannot open display»

Кросс-компиляция. Использую Распберри пи4.
Все собрал. В графическом режиме работает. Но когда запускаешь в консольном режиме Rpi. Выдает ошибку

root@pi:~# matchbox-keyboard -d
Cannot open display

 , ,

Alex_Golubev
()

Raspberry Pi кросс-компиляция Qt5,15 виртуальная клавиатура на c/c++ нужна помощь

Предложенные виртуальные клавиатуры для qt5.15 написаны на qml. Запустить мне их не удалось. Часть методов типа qinputContext отсутствуют в qt5.15. На гитхабе почти все клавиатуру работаю либо криво или ваще не работают. Встроенные запустить не могу так как графическая оболочка отключена. Прям разочарование.

 , , ,

Alex_Golubev
()

При сборки wayland pure-QML получаю ошибку сборки/развёртывании проекта pure-qml

Использую qt5 точнее qt5.15.1. Хочу собрать pure-QML. Для этого делаю следующие шаги.

  1. Клонировал с гит
git clone git://code.qt.io/qt/qtwayland.git -b 5.15.1
Клонирование в «qtwayland»…
remote: Counting objects: 47910, done.
remote: Compressing objects: 100% (17366/17366), done.
remote: Total 47910 (delta 35610), reused 40477 (delta 29488)
Получение объектов: 100% (47910/47910), 9.70 MiB | 3.48 MiB/s, готово.
Определение изменений: 100% (35610/35610), готово.
  1. Открыл в qt creator ~/qtwayland/examples/wayland/pure-qml
  2. qmake выдал ошибку
Project ERROR: You cannot build examples inside the Qt source tree, except as part of a proper Qt build.
11:15:00: Процесс «/home/alexey/raspi/host-qt/bin/qmake» завершился с кодом 3.
Ошибка при сборке/развёртывании проекта pure-qml (комплект: raspi)
Во время выполнения этапа «qmake»

И соответсвенно сборка выдает

Project ERROR: You cannot build examples inside the Qt source tree, except as part of a proper Qt build.
11:15:49: Процесс «/home/alexey/raspi/host-qt/bin/qmake» завершился с кодом 3.
Ошибка при сборке/развёртывании проекта pure-qml (комплект: raspi)
Во время выполнения этапа «qmake»

 , ,

Alex_Golubev
()

RSS подписка на новые темы