Russian Qt Forum
Май 04, 2024, 09:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 68 69 [70] 71 72 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 752689 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1035 : Ноябрь 09, 2012, 23:20 »

Цитировать
QtSerialPort в маке на VirtualBox работает, но при необычных обстоятельствах. ...

Что и требовалось доказать. Попробуй на VMWare если будет время и желание, т.к. VBox с маками плохо дружит еще по-ходу.
« Последнее редактирование: Ноябрь 09, 2012, 23:24 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #1036 : Ноябрь 11, 2012, 22:54 »

Я смотрел реализацию последовательного порта под VirtualBox. К сожалению, он много чего не поддерживает. В частности, четность Space/Mark. Короче, реализация там довольно ограниченная. Возможно, под Mac еще более куцая.
Записан
Phoenix
Гость
« Ответ #1037 : Ноябрь 27, 2012, 19:45 »

Доделал таки свою программу: http://arm-skif.narod.ru/
Кстати, последняя версия библиотеки стала быстрее работать в windows. Раньше было 135-136 обменов в секунду с устройством, сейчас 140-142. Это на скорости 19200.
Устройство с которым работаю: http://bolid.ru/production/devices/devices_63.html
« Последнее редактирование: Ноябрь 27, 2012, 19:56 от Phoenix » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1038 : Декабрь 20, 2012, 22:36 »

Надо заюзать сию либу - есть готовый Find*.cmake или свой писать придется?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
b-s-a
Гость
« Ответ #1039 : Декабрь 20, 2012, 23:12 »

http://lord-baskervil.livejournal.com/62738.html
http://code.google.com/p/foxpilot/source/browse/trunk/qgroundcontrol-0.9.0/CMakeModules/FindQSERIALPORT.cmake?r=54
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1040 : Декабрь 24, 2012, 17:17 »

Приветствую. Такая проблема:
Исходные данные: есть устройство, работаю с ним через QtSerialPort, все хорошо, но если выключить и снова включить девайс при открытом порте со стороны компа, то одно ядро процессора начинает грузиться на 100, и сигналы того потока, где создан и работает QtSerialPort перестают обрабатываться. В смысле не только сигналы, которые относятся к QtSerialPort, но и все другие, например слоты привязанные к таймеру по сигналу timeout() не вызываются. Такое впечатление, что где то внутри библиотеки код зацикливается в бесконечный цикл. ОС: win7 x86, завтра проверю на ubuntu.
Опять же для справки: была такая же проблема с УСБ модемами, если их выткнуть из usb порта при открытом СОМ порте, к нему привязанному, точно такое же поведение было, решил затычкой в виде создания доп. потока, который проверяет наличие порта через SerialPortInfo::isValid(), и если порт пропадал, то он его из того же доп. потока убивал, после чего нагрузка на проц пропадала и все сигналы отрабатывались нормально. При чем это поведение было только под win машинами, в ubuntu таких проблем не наблюдалось.
Для справки 2: в QSerialDevice такого поведения не наблюдается.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1041 : Декабрь 24, 2012, 18:31 »

Цитировать
но если выключить и снова включить девайс при открытом порте со стороны компа,
Что за девайс и как подключен к компу?
Записан

ArchLinux x86_64 / Win10 64 bit
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1042 : Декабрь 24, 2012, 18:50 »

Цитировать
но если выключить и снова включить девайс при открытом порте со стороны компа,
Что за девайс и как подключен к компу?
Девайс самодельный, подключен к компу через железный ком порт по 3-м проводам, rx, tx и gnd, параметры порта зашиты железно, 9600/noparity/noflow/8bit/1stopbit, ну и внутри софтовая реализация rs232-го интерфейса.
« Последнее редактирование: Декабрь 24, 2012, 19:12 от Kurles » Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Phoenix
Гость
« Ответ #1043 : Декабрь 24, 2012, 20:01 »

У меня тоже иногда возникает такая проблема, но я устройство не выключаю. Проблема иногда возникает если запустить мою программу сразу после загрузки win7 x86-64. Программа загружает одно ядро на 100% и съедает всю доступную память. Это появилось когда я начал использовать компилятор от MS вместо MinGW, но при этом я обновил библиотеку QtSerialPort (я подумал на компилятор). У меня проблема возникла пару месяцев назад.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1044 : Декабрь 24, 2012, 20:12 »

Девайс самодельный, подключен к компу через железный ком порт по 3-м проводам, rx, tx и gnd, параметры порта зашиты железно, 9600/noparity/noflow/8bit/1stopbit, ну и внутри софтовая реализация rs232-го интерфейса.

Если к железному, то включение/отключение девайса не имеет никакого значения, давай пример который воспроизводит проблему.

У меня тоже иногда возникает такая проблема, но я устройство не выключаю. Проблема иногда возникает если запустить мою программу сразу после загрузки win7 x86-64. Программа загружает одно ядро на 100% и съедает всю доступную память. Это появилось когда я начал использовать компилятор от MS вместо MinGW, но при этом я обновил библиотеку QtSerialPort (я подумал на компилятор). У меня проблема возникла пару месяцев назад.


Аналогично, давай минимальный компилябельный пример, который воспроизводит проблему.
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1045 : Декабрь 24, 2012, 20:17 »

Я ее сам воспроизвести не могу. Она возникает редко и в самое неподходящее для разбора полетов время. Дома нет винды не на виртуалке, поэкспериментирую на работе.
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1046 : Декабрь 24, 2012, 20:17 »

Девайс самодельный, подключен к компу через железный ком порт по 3-м проводам, rx, tx и gnd, параметры порта зашиты железно, 9600/noparity/noflow/8bit/1stopbit, ну и внутри софтовая реализация rs232-го интерфейса.

Если к железному, то включение/отключение девайса не имеет никакого значения, давай пример который воспроизводит проблему.
пример, который воспроизводит проблему - терминал из стандартных экзамплов.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1047 : Декабрь 24, 2012, 20:48 »

пример, который воспроизводит проблему - терминал из стандартных экзамплов.

У меня этой проблемы нет.
Записан

ArchLinux x86_64 / Win10 64 bit
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1048 : Декабрь 24, 2012, 20:51 »

У меня этой проблемы нет.
Завтра попробую поглубже поковыряться - о результатах отпишусь.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1049 : Декабрь 25, 2012, 10:11 »

Проблема и в устройстве тоже. Оно по-ходу при включении дает какие-то левые импульсы на выходы rx и tx, и если под линуксом он эти импульсы трактует как байт 0х00, то под виндой - постоянно (кучу раз в микросекунду) вызывается CommOverlappedEventNotifier::processCompletionRoutine с флагом EV_ERR, что и приводит к загрузке одного ядра процессора. QSerialDevice 1.0 под виндой эти импульсы воспринимает как 0х00.
Update: заменил в serialport_win.cpp в процедуре bool SerialPortPrivate::open(QIODevice::OpenMode mode)
Код
C++ (Qt)
   DWORD originalEventMask = EV_ERR;
 
на
Код
C++ (Qt)
   DWORD originalEventMask = 0;
Вроде больше не виснет и проц не загружает. Но по-моему это костыль какой-то.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Страниц: 1 ... 68 69 [70] 71 72 ... 88   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.106 секунд. Запросов: 23.