LINUX.ORG.RU

Сообщения titan83

 

Нет отладочного вывода в Qt Creator 4.3.1

Форум — Development

Всем доброго дня.

Случилась у меня тут оказия: пришлось переползать на устройстве с Debian7 + X11 на Debian7 + EGL. Естественно, что и Qt (5.9.1) пришлось пересобирать под это дело.

В общем и целом все работает, но есть неприятный косяк: в Application Output не попадает отладочный вывод от qDebug, qWarning, etc. При этом этот же самый вывод есть, если запускать приложение из ssh. При этом есть вывод в Application Output от консольных утилит, которые запускает мое приложение (hwclock, например).

На дебиане с X11 все работает, как и ожидается.

Есть в Creator такая настройка, как Tools\Options\Environment\System\Terminal и там написано /usr/bin/x-terminal-emulator -e В дебиане с X11 это, конечно, есть, а голом дебиане, конечно, нет.

Вопрос: как добиться отладочного вывода в Сreator?

Cпасибо.

 , ,

titan83
()

Какие варианты гонять данные по HTTPS?

Форум — Development

Посоны, шалом.

Наконец-то решили мы начинать делать нормальный трехуровневый дизайн системы, вместо «MSSQL Server <--> Все остальные». База данных пока останется MSSQL (история), но при такой архитектуре поменять будет не проблема.

Главный вопрос: кто будет в середине и как он будет обмениваться данными с клиентами? Мы вообще пишем на Qt, поэтому первая мысль была и прокладку писать на нем же, но понимаю, что тут надо все взвесить. Про «обмениваться»: мне нравится XML (хотя бы за схемы) и вроде бы есть SOAP, который под это дело заточен, но может есть варианты?

Вообще хотелось бы узнать, что сейчас актуально для обмена «сервер <--> клиент» по 443 порту (SSL важно, да). Здорово,если будет что-то распространенное, чтобы не привязываться к языку\системе. Всем спасибо.

 , , , ,

titan83
()

Сделать /dev/input/keyboard

Форум — Admin

Посоны, тут такое дело - подключаю сканер штрих-кодов по юсб, который мимикриует под юсб-клавиатуру. Программка на Qt4.8. И все было здорово - ловлю ивенты от сканера, собираю строку и обрабатываю. Но, как всегда появилось это самое «но».

Я, как четкий патсан, сделал симлинк с /dev/input/event3 на /dev/barcode. Работает, здорово. Но если мою программу запустить без подключенного сканера и подключить его потом, то работать не будет, события от сканера-клавы не обрабатываются, а все потому, что симлинк на /dev/barcode существует только тогда, когда сканер подключен. Т.е. hot plug нам обламывается(

И при это ведь есть /dev/input/mice, который есть всегда, и куда собираются события от всех мышей.

Вот и я хочу такой же файл, агрегирующий события от клавиатур.

Пробовал ставить источником событий /dev/tty1. Причем отключил консоль в inittab. Но в ответ на cat /dev/tty1 | hexdump - тишина. Понимаю, что тут очень вероятно решение, но гугаль пока не помогает(

Всем, кто осилил, спасибо.

 , , , ,

titan83
()

Настроить маршрутизацию на embbed linux

Форум — Admin

Всем здравствуйте. Парюсь с такой канителью: есть устройство с линуксом 3.2.18, окружение минимальное - buildroot. У устройства есть один эзернет и один 3g-модем. В чем проблема? А она такая - симка в модеме не простоя, а на специальном тарифе для M2M, значит, что она после подключения попадает не в интернет с динамическим адресом, а в сеть предприятия. Итого, после того, как 3g подключается появляется интерфейс с адресом 192.168.1.0/8 (для конкретики 192.168.1.9), т.е. я имею для соединения: eth0 - 192.168.0.46 ppp0 - 192.168.1.9 Вроде все неплохо, разные подсети... Но сеть предприятия, из которой я подключаюсь к ppp0 иметь подсеть 192.168.0.0/8, т.е. перекрывается с соединением eth0. В итоге я имею такую каку: я сижу на компе с адресом 192.168.0.217 делаю пинг на адрес 192.168.1.9, а он не проходит( А проблема в том, что у меня в маршрутах стоит, что на запросы из подсети 192.168.0.0/8 надо отвечать на интерфейс eth0.

Пока решал проблему сменой подсети на устройстве с 192.168.0.0/8 на 192.168.2.0/8, тогда маршруты не пересекаются и все работает, но это несколько неудобно. Хотелось бы, чтобы после коннекта ppp в скрипте up, делать нечто с маршрутами, чтобы все пакеты приходящие из ppp0 в него же и уходили, но при этом с устройством можно было бы работать и через eth0. Пока делал только удаление подсети 192.168.0.0/ на время ppp-коннекта, но это колхоз(

Таблица до ppp-содеинения:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default * 0.0.0.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0

Таблица во время ppp-соединения: # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
default * 0.0.0.0 U 0 0 0 ppp0
10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0

Посоны, знаю, что я тупень и лентяй, но направьте на светлую сторону... Спасибо.

 , ,

titan83
()

Sysfs - poll, inotify, select... Крик души

Форум — Development

Ну как же я устал от этой маеты((( Хочу тупо получать оповещения о изменении некоторых файлов - в линухе есть различные инструменты (inotify, select, poll, может еще что-то), на обычных файлах они чудесно работают, но стоит сделать шаг влево и попробовать мониторить состояние, например, sysfs или procfs, то выясняется, что линуховое Everything is a file - это, мягко говоря, не истина. Если с помощью poll() удается словить изменение на sysfs/gpio, то пот отловить изменения температуры уже низя, ибо на sysfs/i2c файлы уже не являются interruptable, и вот, когда наши космические корабли бороздят, ты вынужден как древний долбоящер периодически вычитывать интересующий тебя файл, вместо того, чтобы реагировать на события. Я очень обрадуюсь, если это я дурак, а лыжи на самом деле едут (есть способ наблюдать за любыми файлами на любых файловых системам). Спасибо, я кончил.

titan83
()

QtSerialPort в QT4.8 и все в buildroot на ARM9

Форум — Development

Всем доброго времени суток. Сейчас кручу устройство на ARM9. Пробую использовать QtSerialPort, пока мимо кассы((
Имею - хост машина на ubuntu 12, в ней QtCreator 2.7, в нем Qt5.0.1 (пока не использую) и Qt4.8.4 (которую и применяю). Qt4 (точнее - qmake) прописана из выходных файлов buildroot 05.2013. Пробую инсталлировать по инструкции из вики (http://qt-project.org/wiki/QtSerialPort) путь до qmake пишу тот, который в buildroot, чтобы он не брался из /usr/local/bin, все компилируется, файлы попадают в каталог Qt в buildroot.
Начинаю собирать пример из того же вики:

#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
 
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
 
QT_USE_NAMESPACE
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    // Example use QSerialPortInfo
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
        qDebug() << "Name        : " << info.portName();
        qDebug() << "Description : " << info.description();
        qDebug() << "Manufacturer: " << info.manufacturer();
 
        // Example use QSerialPort
        QSerialPort serial;
        serial.setPort(info);
        if (serial.open(QIODevice::ReadWrite))
            serial.close();
    }
   
    return a.exec();
}

И на выходе получаю:
error: 'SerialPortInfo' was not declared in this scope
error: 'SerialPortInfo' is not a class or namespace
Я пока что слабоват в Qt и плюсах, в основном на чистом С писал, поэтому не могу сходу въехать в проблемы и жду тех, кто реально делал подобную связку, а особенно приветствуется пользователь kuzulis, отметившийся почти во всех русско- и англоязычных темах по Qt и последовательному интерфейсу.
PS Проекты без QtSerialPort собирают, закидываются на устройство, запускаются и даже показываются в vnc-сеансе.
Спасибо.

titan83
()

Узнать PID процесса в драйвере ядра linux

Форум — Development

Всем доброго времени суток. Возникла у меня такая дилемма - надо реализовать протокол модбас на встраиваемой системе (ARM7 nonMMU + uCLinux 2.6.21), в нем требуется отслеживать интервал тишины для определения окончания кадра, этот интервал на скорости 9600 составляет 4 мс, на моей платформе мне не удалось работать с интервалами меньше системного тика (10 мс), соответственно, штатными средствами я этот интервал выделить не могу. Почитал даташит на свой процессор (LPC 2468) и увидел, что там есть аппаратное прерывание на по истечении как раз этого самого интервала тишины (3,5 байта на текущей скорости). Нашел драйвер uart в линуксе, в нем обработчик прерываний от uart, все хорошо, прерывание отслеживается, но мне нужно дать сигнал userspace программе, что прошел интервал тишины, а значит можно считать, что кадр принят. И вот тут у меня небольшой стопор: как послать данные из драйвера? Сигналу требуется pid, его можно прочитать из файла, но пишут, что это читать-писать файлы из ядра - идеологически неправильно. проблема в том, что это обработчик прерывания, и тупить (блокироваться) там как минимум нежелательно. может в /proc? Есть ли возможность сделать свой модуль ядра с собственным обработчиком прерывания uart, отрабатывающим ПЕРЕД стандартным? еще варианты? Спасибо всем откликнувшимся.

titan83
()

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