Просмотр сообщений
|
Страниц: [1] 2 3 4
|
2
|
Qt / Вопросы новичков / Re: QSerialPort Искажение данных
|
: Декабрь 05, 2019, 19:11
|
Ну если помогло чтение размера. То явно затык в скорости. Изменить алгоритм работы, как вариант, поместить чтение в отдельные процессы/потоки. Не известно как там Qt обрабатывает прием данных а точнее синхронизацию. Возможно по пробовать читать/писать другой библиотекой. Qt это прикладной уровень. (хотя в данном случае - это вряд-ли.) И скорость 9600 маловато будет, 10мс это что? микро- или мили- секунды? Если микро - маловато. 1/10Е-6=100 000 байт по одному байту. без служебной информации - только на прием. 1/10Е-3=100 байт в секунду без служебной информации только на прием. Какая операционная система, возможно общий драйвер не подразумевает такой пропускной способности. С чем-то подобным под форточками сталкивался - только не помню с чем и как победили.
Еще: не пытаться обрабатывать сразу, сделать очередь. Читать все одним процессом а обрабатывать другим.
PS: если запросы поступают на несколько портов. И приходит запрос на другом порту пока идет обработка, слот для нового запроса не вызываться, а когда вызывается то там уже пришло больше одного запроса. т.е. проблема чтения. - решение очередь.
|
|
|
3
|
Qt / Вопросы новичков / Re: QSerialPort Искажение данных
|
: Декабрь 04, 2019, 18:55
|
Как вариант: проверить инициализацию порта, скорость и т.п. Как вызывается чтение порта? По частоте прерываний нет затыка.... 10 мс это хорошая частота. т.е. это 115к минимум.
Попробовать, как вариант, "многопортовку" натравить на первые 5 портов, и в это же время однопортовый вариант на последний.
Это на вскидку.
|
|
|
4
|
Qt / Вопросы новичков / Re: QSqlQuery & SELECT EXISTS
|
: Октябрь 11, 2019, 17:42
|
Всем привет. Помогите пожалуйста найти ошибку в SELECT EXIST. Не могу пройти проверку value.
QSqlQuery query;
QString strF = QString("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = '%1' ) AND id NOT LIKE '%2' )"); QString str = strF.arg(ui.lineEdit->text(), model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString());
query.prepare(str); query.exec(); query.next();
// Если запись существует, то диалог вызывает предупредительное сообщение if (query.value(0) != 0) { QMessageBox::information(this, trUtf8("Error"), trUtf8("Such a log or comment already exists")); }
И еще query.prepare("SELECT EXISTS (SELECT " DEVICE_ORIG " FROM " DEVICE " WHERE ( " DEVICE_ORIG " = :device_orig) AND id NOT LIKE :id; )"); query.bindValue(":device_orig", ui.lineEdit->text()); query.bindValue(":id", model->data(model->index(mapper->currentIndex(), 0), Qt::DisplayRole).toString()); query.exec(); ..... // скобочки не считал, мог немного напутать с их соответствием.
|
|
|
7
|
Qt / Общие вопросы / Re: connect сигналы и слоты=(
|
: Август 10, 2019, 12:56
|
Отвечаю: они изменили методику вызова. https://wiki.qt.io/New_Signal_Slot_SyntaxСтарая модель: connect( sender, SIGNAL( valueChanged( QString, QString ) ), receiver, SLOT( updateValue( QString ) ) ); Новая модель: connect( sender, &Sender::valueChanged, receiver, &Receiver::updateValue ); И тогда подсказывает. Или как вариант: запретить Help > About Plugins > Clang Code Model
|
|
|
8
|
Qt / Общие вопросы / Re: connect сигналы и слоты=(
|
: Август 10, 2019, 12:26
|
Только что обратил внимание Creator 4.9.2. То-же не подсказывает. Никогда не обращал внимание.  Может потому не подсказывает, что пишу на Qt4.... Была замечена проблема подсказок у Creator'a при использовании namespace, времени разбираться не было и не стал заморачиваться а потом забыл. Надо попробовать чистый project сгенерить. Добавлено: По пробовал: 1. Проблема не в namespaces. 2. Проблема не в версии QT. Надо будет разобраться.
|
|
|
9
|
Qt / Установка, сборка, отладка, тестирование / Драйвера для postgresql 11.4 для qt4.
|
: Июль 20, 2019, 06:35
|
Собственно вопрос: А существует ли Subj? Дело в том, что в Qt 4.8.7 - libqsqlpsql.so поддерживает сервер до 9-й версии включительно (понятно что после сброрки и т.п.), версии выше с Warning'ами. Может где есть вариант драйверов для 4-й qt с поддержкой свежих версий postgresql.
Пока подкрутил ручками версии в исходниках, и чуток реализации (из qt5 взял подробности), вроде ожил. Но когда грохнется не известно. Может кто знает, в природе существует полноценная реализация?
PS: гугление ни к чему ни привело. :) PS: сравнивая исходники дров для qt5 там не только отличия номеров версий.
Да, совсем забыл написать: 1. Интересует ответ только на заданный вопрос. 2. Предложения переходить/оставаться на версию .... не интересуют. 3. Не знаете что сказать: выберите для флейма другую тему.
|
|
|
10
|
Qt / Qt Quick / Re: Тупит QML на примитивном коде - что ему еще надо? (С видео)
|
: Декабрь 05, 2018, 16:53
|
Для начала: 1. Какая версия Qt? 2. Как это окно визуализируется? что-то типа main.cpp?  От себя: С таким main.cpp // #include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QLatin1String("qrc:/main.qml"))); return app.exec(); } //------------------------------ 2. версия qt - 5.7.0 Без проблем, Ваш код работает как и ожидается и ничего не глючит. сразу забыл упомянуть: Slackware 14.2 Linux v 4.17.8 #2 SMP Thu Nov 8 13:20:53 EET 2018 x86_64 Intel(R) Core(TM) xxxx CPU @ x.00GHz GenuineIntel GNU/Linux dm: xfce 4.12 video: NVIDIA 1030
|
|
|
13
|
Программирование / Базы данных / Re: Мистика с PostgreSQL с оператором AND
|
: Ноябрь 08, 2018, 02:30
|
Не знаю, что у Вас там происходит но:
create table pColumn(TableName text, ColumnName text); CREATE TABLE insert into pColumn values('R','T'); INSERT 0 1 insert into pColumn values('R','T'); INSERT 0 1 insert into pColumn values('R','T'); INSERT 0 1 SELECT * FROM pColumn WHERE TableName = 'R' AND ColumnName = 'T'; tablename | columnname -----------+------------ R | T R | T R | T (3 rows)
|
|
|
14
|
Qt / Вопросы новичков / Re: Пользовательский виджет (плагин)в Qt Designer
|
: Декабрь 06, 2017, 21:04
|
QString QDesignerCustomWidgetInterface::includeFile() const; Должен вернуть строку содержащую имя .h файла.
QDesignerCustomWidgetInterface это то от чего порождаете ваш плагин.... Думаю понятно.
Добавлено: И еще, не знаю где под форточками лежат заголовочные файлы но под linux у меня /usr/include А не стандартное место указывается дополнением в .pro файл: INCLUDEPATH += .... где-то там
|
|
|
15
|
Qt / Вопросы новичков / Re: Пользовательский виджет (плагин)в Qt Designer
|
: Декабрь 06, 2017, 09:19
|
Рекомендую взять книгу и почитать.
На данном этапе скажу несколько, даже не знаю как назвать, советов/утверждений.
1. Виджет в дизайнере состоит из: 1.1. Заголовочного файла .h 1.2. Библиотеки (в вашем случае dll) реализующий сам виджет. 1.3. И собственно плагина для дизайнера (dll) дающему абстрактный доступ к виджету из п.1.2 и порожденному от QDesignerCustomWidgetInterface
2. При запуске дизайнер находит все плагины (в т.ч. созданные в п.1.3) 3. Когда вы ставите его на форму - дизайнер знает через плагин из п.1.3 как создать виджет из п.1.2. 4. Вы сохраняете виджет в файл ui.
5. Вы подключаете виджет к своему приложению и в этот момент для доступа к свойствам нужно подключить .h файл иначе компилятор не узнает о именах свойств/методов вашего плагина. (тут возможны варианты т.к. о существовании .h файла дизайнер знает) посмотрите файлы созданные moc препроцессором для понимания там уже есть подключение вашего h файла. 6. Вы в .pro или подобный файл приложения подключаете библиотеку т.к. для линковщика надо указать с чем линковать.
Компилируем, собираем, радуемся.
Если коротко - как-то так.
|
|
|
|
|