LINUX.ORG.RU

Сообщения Alex_Golubev

 

Автозапуск bash через systemd

Форум — General

Пытаюсь запустить браузер гугл хром с открытием страницы яндекс. ОС дебиан.

Для этого сделал сам bash код с названием start_chrome_kiosk.sh:

#!/bin/bash
CHROME_PATH="/usr/bin/google-chrome-stable"  
START_URL="https://ya.ru/"
# Запуск OpenAI Chrome в режиме киоска
$CHROME_PATH \
    --kiosk \
    --no-first-run \
    --disable-infobars \
    --disable-session-crashed-bubble \
    --disable-features=Translate \
    "$START_URL"

Прописал chmod +x ~/start_chrome_kiosk.sh Запустил ~/start_chrome_kiosk.sh Все работает.

Далее добавляю в systemd Создал файл по пути sudo nano /etc/systemd/system/chrome-kiosk-script.service

Со следящим содержимым:

[Unit]
Description=Launch OpenAI Chrome in Kiosk Mode (Script)
After=network.target graphical.target

[Service]
User=linoxide
WorkingDirectory=/home/linoxide
ExecStart=/home/linoxide/start_chrome_kiosk.sh
Restart=on-failure
RestartSec=10


[Install]
WantedBy=multi-user.target

Далее

sudo systemctl enable chrome-kiosk-script.service
sudo systemctl start chrome-kiosk-script.service

И ни чего не запустилось.

linoxide@debian:~$ sudo systemctl restart chrome-kiosk-script.service
linoxide@debian:~$ sudo systemctl status chrome-kiosk-script.service
● chrome-kiosk-script.service - Launch OpenAI Chrome in Kiosk Mode (Script)
     Loaded: loaded (/etc/systemd/system/chrome-kiosk-script.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Sat 2025-01-18 02:03:03 AEDT; 3s ago
    Process: 14419 ExecStart=/home/linoxide/start_chrome_kiosk.sh (code=exited, status=1/FAILURE)
   Main PID: 14419 (code=exited, status=1/FAILURE)
        CPU: 55ms

 ,

Alex_Golubev
()

Научите работать с openScada

Форум — General

Осваиваю новое, пытаюсь учиться. Решил освоить openScada. Научился работать только с модбас. И еще понемногу. Хочу перейти к визуализации и поднять сервер. Есть какая доступная информация по openScada. С примерами. Хочу освоить. Как понимаю штука очень интересная.

 

Alex_Golubev
()

Как установить openScada на debian 11?

Форум — General

Как установит openScada на debian 11?

 

Alex_Golubev
()

Как в systemmd дать root права программе при запуске

Форум — General

Нужно для тестирования дать root права программе и проверить что программа запустилась с нужными правами. Сейчас сделал вот так:

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

[Service]
Type=simple
User=root
Grop=root
WorkingDirectory=/home/pi/Qt_Projects/SHUOT
ExecStart=/home/pi/Qt_Projects/SHUOT/SHUOT

[Install]
WantedBy=multi-user.target

 

Alex_Golubev
()

QStringList как обезопасить себя от обращения к несуществующему элементу ?

Форум — Development

Понятно, что можно каждый раз контролировать размер size. Но это не очень удобно. Охота более простой способ. at не возвращает пустую строку.

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

 

Alex_Golubev
()

Кто как обновляет программу написаную на qt5 в линукс с usb устройства в частности флешка?

Форум — General

Понимаю что можно скриптом на bash сделать, но может есть еще какие варианты. Программа на usb флешь может лежать где угодно. В папке каталоге. Пользователь указывает на программу и подтверждает. Далее путь к файлу передается в условно говоря программу обновления и обновляется основанная программа.

 

Alex_Golubev
()

QStateMachine как можно узнать в каком состоянии находиться машина состояний?

Форум — Development

Как можно понять в каком состоянии «QState» находиться QStateMachine ? Как понял прямого метода нет и нужно что-то придумать.

 

Alex_Golubev
()

Pi4 управление портами ввода-вывода.

Форум — General

Чет не понял как управлять портами в pi4. Что-то поменяли. Раньше можно было вот так:

QFile exportFile("/sys/class/gpio/gpio19/export");
exportFile.open(QIODevice::WriteOnly);
exportFile.write("19");

QFile directionFile("/sys/class/gpio/gpio19/direction");
directionFile.open(QIODevice::WriteOnly);
directionFile.write("in");

QFile edgeFile("/sys/class/gpio/gpio19/edge");
edgeFile.open(QIODevice::WriteOnly);
edgeFile.write("body");

QFile file("/sys/class/gpio/gpio19/value");

QSocketNotifier notifier(file.handle(), QSocketNotifier::Read);
connect(&notifier, &QSocketNotifier::activated, this, &MyClass::interruptFired);

Слот interruptFired вызывался по смени фронта. А теперь как управлять?

 

Alex_Golubev
()

Как убрать консоль после загрузки ОС с экрана на pi4 ?

Форум — General

После подачи питания pi4 загружается и в конце загрузки остается открытая консоль ссылка . Как можно ее убрать чтобы был просто черный экран без символов. И как можно ваще все убрать в момент загрузки?

 

Alex_Golubev
()

raspberry pi 4 долгая загрузка операционной системы, охота быстрее.

Форум — General

Имею raspberry pi 4 линукс долго загружается. Есть возможности ускорить загрузку?

 ,

Alex_Golubev
()

Как можно построить 3 графика с одной осью 'X' и разными осями 'Y', Y1, Y2, Y3 все Y в разных маштабах

Форум — Development

Как можно построить 3 графика с одной осью X? Чтобы сетка была едина. Накидал пример:


    QApplication a(argc, argv);

    // Создаем сцену
    QGraphicsScene *scene = new QGraphicsScene();

    // Создаем графики (QChart)
    QChart *chart1 = new QChart();
    chart1->setTitle("График 1");

    QChart *chart2 = new QChart();
    chart2->setTitle("График 2");

    QChart *chart3 = new QChart();
    chart3->setTitle("График 3");

    // Создаем линейные серии данных (QLineSeries) для каждого графика
    QLineSeries *series1 = new QLineSeries();
    series1->setName("Линия 1");
    *series1 << QPointF(0, 6) << QPointF(2, 4) << QPointF(3, 8) << QPointF(7, 4) << QPointF(10, 5);
    chart1->addSeries(series1);

    QLineSeries *series2 = new QLineSeries();
    series2->setName("Линия 2");
    *series2 << QPointF(0, 5) << QPointF(2, 7) << QPointF(3, 6) << QPointF(7, 3) << QPointF(10, 8);
    chart2->addSeries(series2);

    QLineSeries *series3 = new QLineSeries();
    series3->setName("Линия 3");
    *series3 << QPointF(0, 3) << QPointF(2, 5) << QPointF(3, 4) << QPointF(7, 2) << QPointF(10, 6);
    chart3->addSeries(series3);

    // Создаем общую ось X
    QValueAxis *axisX = new QValueAxis();
    axisX->setTitleText("Ось X");
    axisX->setLabelFormat("%i");
    axisX->setTickCount(11);

    QValueAxis *axisX1 = new QValueAxis();
    axisX1->setTitleText("Ось X");
    axisX1->setLabelFormat("%i");
    axisX1->setTickCount(11);

    QValueAxis *axisX2 = new QValueAxis();
    axisX2->setTitleText("Ось X");
    axisX2->setLabelFormat("%i");
    axisX2->setTickCount(11);

    // Создаем отдельные оси Y для каждого графика
    QValueAxis *axisY1 = new QValueAxis();
    axisY1->setTitleText("Ось Y1");
    axisY1->setLabelFormat("%i");
    axisY1->setTickCount(6);
    chart1->addAxis(axisY1, Qt::AlignLeft);
    series1->attachAxis(axisY1);

    QValueAxis *axisY2 = new QValueAxis();
    axisY2->setTitleText("Ось Y2");
    axisY2->setLabelFormat("%i");
    axisY2->setTickCount(6);
    chart2->addAxis(axisY2, Qt::AlignLeft);
    series2->attachAxis(axisY2);

    QValueAxis *axisY3 = new QValueAxis();
    axisY3->setTitleText("Ось Y3");
    axisY3->setLabelFormat("%i");
    axisY3->setTickCount(6);
    chart3->addAxis(axisY3, Qt::AlignLeft);
    series3->attachAxis(axisY3);

    // Подключаем общую ось X ко всем графикам
    chart1->addAxis(axisX, Qt::AlignBottom);
    series1->attachAxis(axisX);

    chart2->addAxis(axisX1, Qt::AlignBottom);
    series2->attachAxis(axisX1);

    chart3->addAxis(axisX2, Qt::AlignBottom);
    series3->attachAxis(axisX2);

    // Создаем виджеты для отображения графиков
    QChartView *chartView1 = new QChartView(chart1);
    QChartView *chartView2 = new QChartView(chart2);
    QChartView *chartView3 = new QChartView(chart3);

    chartView1->setRenderHint(QPainter::Antialiasing);
    chartView2->setRenderHint(QPainter::Antialiasing);
    chartView3->setRenderHint(QPainter::Antialiasing);

    // Добавляем графики на сцену
    scene->addWidget(chartView1);
    scene->addWidget(chartView2);
    scene->addWidget(chartView3);

    // Создаем представление для сцены и отображаем его
    QGraphicsView *view = new QGraphicsView(scene);
    view->setWindowTitle("Пример 3 графиков с одной осью X");
    view->resize(800, 600);
    view->show();

 

Alex_Golubev
()

QChart pi4 opengl как сделать и проверить что работает

Форум — General

Хочу подключить для теста к qchart opengl. пробывал делать:

OpenGLChartView *chartView;
QChart *chart;
QLineSeries *series;
QLineSeries *series1;
QLineSeries *series2;
QValueAxis  *axisY;
QValueAxis  *axisY2;
QValueAxis  *axisY3;
QDateTimeAxis *axisX;

    chart   = new QChart();
    series  = new QLineSeries();
    series1 = new QLineSeries();
    series2 = new QLineSeries();
    series->clear();
    series1->clear();
    series2->clear();
    series->setUseOpenGL(true);
    series1->setUseOpenGL(true);
    series2->setUseOpenGL(true);
    chartView = new QChartView(this);
    chartView->setRenderHint(QPainter::Antialiasing);
    ui->verticalLayout->addWidget(chartView);


    font.setPointSizeF(10);
    axisY = new QValueAxis;
    axisY->setLabelFormat("%.1f");
    axisY->setLabelsFont(font);
    axisY->setLinePen(penY);
    axisY->setRange(0, 100);

    axisY2 = new QValueAxis;
    axisY2->setLabelFormat("%.1f");
    axisY2->setLabelsFont(font);
    axisY2->setLinePen(penY2);
    axisY2->setRange(0, 1);

    axisY3 = new QValueAxis;
    axisY3->setLabelFormat("%.1f");
    axisY3->setLabelsFont(font);
    axisY3->setLinePen(penY3);
    axisY3->setRange(0, 1);

    axisX = new QDateTimeAxis;
    axisX->setFormat("HH:mm");
    axisX->setLabelsFont(font);
    axisX->setLabelsAngle(15);

   *series<<QPointF(QwtDate::toDouble(dt),lineData[4].toFloat()); 
   *series1 << QPointF(QwtDate::toDouble(dt), lineData[3].toFloat());
   *series2 << QPointF(QwtDate::toDouble(dt), lineData[2].toFloat());

        chart->addSeries(series);
        chart->addSeries(series1);
        chart->addSeries(series2);
        chart->legend()->hide();


        chart->addAxis(axisY, Qt::AlignRight);
        series->attachAxis(axisY);
        series->setPen(penY);

        chart->addAxis(axisY2, Qt::AlignRight);
        series1->attachAxis(axisY2);
        series1->setPen(penY2);


        chart->addAxis(axisY3, Qt::AlignRight);
        series2->attachAxis(axisY3);
        series2->setPen(penY3);


        chart->addAxis(axisX, Qt::AlignBottom);
        series->attachAxis(axisX);

        series1->attachAxis(axisX);
        series2->attachAxis(axisX);
        chartView->setChart(chart);

 ,

Alex_Golubev
()

Не создает файл на usb флешки

Форум — General
root@pi:~/folder# ls
content.xml  META-INF  mimetype  Pictures  report.odt
root@pi:~/folder# cp report.odt /media/usb0/SHUOT/Отчет.odt
cp: невозможно создать обычный файл '/media/usb0/SHUOT/Отчет.odt': Недопустимый аргумент
root@pi:~/folder# 

 ,

Alex_Golubev
()

файл созданный в qt5 с кириллицей отображается с не верной кодировкой в консоли линукс

Форум — General

В qt5 в main установил:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

пишу файл с кириллицей:

QFile file("test.txt");
    if(file.open(QFile::Append | QFile::Text))
    {
    QTextStream out(&file);
    out << "полученные табличные данные после измерения:";
    file.flush();
    file.close();
    }

Открываю в консоли:

root@pi:~# echo $LANG
ru_RU.UTF-8

root@pi:~# cat testR.txt
полÑÑеннÑе ÑаблиÑнÑе даннÑе поÑле измеÑениÑ:анализ ÑоÑÑоÑÐ½Ð¸Ñ Ð¸ пеÑвиÑнÑй заÑÑд баÑаÑеи

Как исправить?

 

Alex_Golubev
()

В чем отличие между запусками одной программы из командной строки

Форум — Development

Из командной строки запускаю одну программу но немного по разному.

  1. запускается верно
/home/pi/Qt_Projects/kiab/kiab -plugin tslib
  1. запускается программа но не работает тач. 2.1 сначала запускаем программу
/home/pi/Qt_Projects/kiab/kiab 

2.2 после отсылаем плагин.

-plugin tslib

2.3 получаем ошибки

ts_setup() failed (No such file or directory)

2.4 добавляю

TSLIB_TSDEVICE=/dev/input/event1
TSLIB_FBDEVICE=/dev/fb0
TSLIB_CONFFILE=/etc/ts.conf
TSLIB_CALIBFILE=/etc/pointercal
TSLIB_PLUGINDIR=/usr/lib/arm-linux-gnueabihf/ts0
QT_QPA_FB_TSLIB=1
QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

2.5 снова -plugin tslib все сьел а тач не заработал. Так в чем отличие запуска?

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

 ,

Alex_Golubev
()

Куда добавить в .pro -plugin tslib, чтобы при запуски программы применялся плагин tslib

Форум — Development

Мне нужно чтобы при запуски программы, каждый раз применялся плагин -plugin tslib. Как пример:

cd /home/pi/Qt_Projects/
cd app
./app -plugin tslib

Где app - это программа.

Куда и что нужно добавить в .pro чтобы применялся плагин -plugin tslib.

Вот файл .pro:

QT       += core gui serialport opengl svg printsupport xml

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    SysVar.cpp \
    andreyui_2.cpp \
    banner.cpp \


HEADERS += \
    MemMap.h \
    SysVar.h \
    andreyui_2.h \
    banner.h \

FORMS += \
    andreyui_2.ui \
    banner.ui \

QMAKE_LIBDIR += /usr/lib

CONFIG += qwt
CONFIG += console
INCLUDEPATH += /usr/include/qwt

LIBS += -lmodbus -lqwt-qt5 -lz

RESOURCES += \
    resource.qrc


# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /home/pi/Qt_Projects/$${TARGET}
!isEmpty(target.path): INSTALLS += target

unix:!macx: LIBS += -L$$PWD/qdeviceWatcher/ -lQDeviceWatcher
INCLUDEPATH += $$PWD/qdeviceWatcher
DEPENDPATH += $$PWD/qdeviceWatcher

 ,

Alex_Golubev
()

qt5.15 и tslib не работают вмести.

Форум — General

Не работает тачскрин при запуски qt5.15. Tslib работает. ts_calibrate и ts_test работают. qt5.15 в сборки поддержка tslib включена. Пишу переменные:

root@pi:~# export QT_DEBUG_PLUGINS=1
root@pi:~# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/arm-linux-gnueabihf/
root@pi:~# export QT_PLUGIN_PATH=/usr/lib/plugins
root@pi:~# export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/platforms
root@pi:~# export QT_QPA_PLATFORM=linuxfb
root@pi:~# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1
root@pi:~# export TSLIB_TSEVENTTYPE='INPUT'
root@pi:~# export TSLIB_CALIBFILE='/etc/pointercal'
root@pi:~# export TSLIB_CONFFILE='/etc/ts.conf'
root@pi:~# export TSLIB_CONSOLEDEVICE='none'
root@pi:~# export TSLIB_FBDEVICE='/dev/fb0'
root@pi:~# export TSLIB_PLUGINDIR='/usr/lib/ts'
root@pi:~# export TSLIB_TSDEVICE='/dev/input/event1'
root@pi:~# 

запускаю qt. Программа запускается тач не работает.

 , ,

Alex_Golubev
()

Raspberry Pi 4 + QT5.15 + тачскрин не могу решить проблему.

Форум — Development

Попал в засаду с линуксом. Точнее с дисплеем адвантек, а именно с тач. Не хочет работать тач в qt5.

Что делал.

Сначала подключил дисплей к малине. После выполнил команду lsusb

root@pi:~# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax Touch Screen
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@pi:~# 

Дальнейшее изыскания: Запустил тест evtest:

root@pi:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    eGalax Inc. USB TouchController UNKNOWN
/dev/input/event1:    eGalax Inc. USB TouchController Stylus
/dev/input/event2:    eGalax Inc. USB TouchController

Выбрал 1:

root@pi:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    eGalax Inc. USB TouchController UNKNOWN
/dev/input/event1:    eGalax Inc. USB TouchController Stylus
/dev/input/event2:    eGalax Inc. USB TouchController
Select the device event number [0-2]: 1
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0xeef product 0x1 version 0x210
Input device name: "eGalax Inc. USB TouchController Stylus"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 320 (BTN_TOOL_PEN)
    Event code 330 (BTN_TOUCH)
    Event code 331 (BTN_STYLUS)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   2008
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value   2052
      Min        0
      Max     4095
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
Event: time 1716869875.859086, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1716869875.859086, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1716869875.859086, type 3 (EV_ABS), code 0 (ABS_X), value 1488
Event: time 1716869875.859086, type 3 (EV_ABS), code 1 (ABS_Y), value 1990
Event: time 1716869875.859086, -------------- SYN_REPORT ------------
Event: time 1716869875.874988, type 3 (EV_ABS), code 0 (ABS_X), value 1490
Event: time 1716869875.874988, -------------- SYN_REPORT ------------
Event: time 1716869875.878990, type 3 (EV_ABS), code 0 (ABS_X), value 1496
Event: time 1716869875.878990, -------------- SYN_REPORT ------------
Event: time 1716869875.885024, type 3 (EV_ABS), code 0 (ABS_X), value 1506
Event: time 1716869875.885024, -------------- SYN_REPORT ------------
Event: time 1716869875.890991, type 3 (EV_ABS), code 0 (ABS_X), value 1518

Выше показал реакции а нажатия тач. Далее пытался настроить калибровку тачскрин. Делал:

apt-get install evtest libts-bin apt-get install libts-dev export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_FBDEVICE=/dev/fb0: Калибровка запустилась и тач заработал. Далее заменил

libinput на evdev в файле nano /usr/share/X11/xorg.conf.d/40-libinput.conf

  Section "InputClass"
      Identifier "evdev tablet catchall"
      MatchIsTablet "on"
      MatchDevicePath "/dev/input/event*"
      Driver "evdev"
  EndSection

Добавил

export TSLIB_TSDEVICE=/dev/input/event1

ts_calibrate

export QWS_MOUSE_PROTO=tslib:/dev/inut/event1

Но qt не работает тач. Кнопки не нажимаются

 , ,

Alex_Golubev
()

raspberry pi 4 выдает ошибку Unable to connect to X server

Форум — General

Пытаюсь откалибровать тачскрин. Выполнил следующие процедуры:

sudo apt-get update
sudo apt-get -y install xinput libx11-dev libxext-dev x11proto-input-dev evtest dh-autoreconf
libts-bin libxi-dev
cd ~
git clone https://github.com/tias/xinput_calibrator
cd ~/xinput_calibrator
sudo ./autogen.sh
sudo make
sudo make install
DISPLAY=:0.0 xinput_calibrator

Получил ошибку с X server.

root@pi:~# DISPLAY=:0.0 xinput_calibrator
No protocol specified
Unable to connect to X server

 

Alex_Golubev
()

raspberry pi 4 usb touchscreen driver для advantech ids-3210r-40sva1e

Форум — Linux-hardware

Вот ссылка на монитор. Подключил по переходнику hdmi - dvi. Изображение есть. Тачскрин не заработал. Не реагирует на нажатие.

 ,

Alex_Golubev
()

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