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

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

Страниц: 1 ... 67 68 [69] 70 71 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 752722 раз)
Phoenix
Гость
« Ответ #1020 : Ноябрь 03, 2012, 21:02 »

VirtualBox 4.1.22, MAC OS X 10.8.2. В виртуалке порт настроен, гостевая винда  с портом работает (хоть и медленнее чем на реальном железе). Попробую разобраться в чем дело. Думал может есть легкое решение Улыбающийся
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1021 : Ноябрь 03, 2012, 21:30 »

Возможно какая-то хрень с пробросом built-in порта в гостевом Маке в Виртуалбоксе.
Я что-то смутное такое припоминаю, вроде и у меня тот же касяк был, поэтому я
использовал USB/Serial напрямую из Мака, а может мне мерещится все Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1022 : Ноябрь 03, 2012, 22:03 »

Фейлится при вызове:
Код:
descriptor = ::open(systemLocation.toLocal8Bit().constData(), flags);
Код ошибки portError = 10. В переменной  systemLocation почему-то такая хрень: "/dev/cu./dev/ttys0"

Код errno = 2

Задал systemLocation = "/dev/cu.serial1", теперь фейлится на
Код:
if (!updateTermios()) return false;
Код errno = 13 (здесь я перепутал, это до вызова updateTermios())


До вызова
Код:
TtyLocker::lock(ptr);
errno = 2, после вызова errno = 13 (выяснил что это нормально, т.к. там идет поиск каталога с доступом rw).

Еще выдается такое:
Цитировать
QSocketNotifier::Exception is not supported on Mac OS X
Это если закомментировать вызов updateTermios().
« Последнее редактирование: Ноябрь 04, 2012, 11:04 от Phoenix » Записан
Phoenix
Гость
« Ответ #1023 : Ноябрь 04, 2012, 06:35 »

Насчет хрени в systemLocation я сам виноват, в самом начале программы экспериментировал с разными портами Улыбающийся

Ошибка возникает в
Код:
if (!updateTermios()) return false;
errno = 22
portError = 10
Что это значит?
« Последнее редактирование: Ноябрь 04, 2012, 10:12 от Phoenix » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1024 : Ноябрь 04, 2012, 15:06 »

Цитата: Phoenix
Ошибка возникает в
Код:
if (!updateTermios()) return false;
errno = 22
Что это значит?
Это значит EINVAL - Invalid argument.
В общем, надо разбираться.

Придется мне как-то установить в виртуалку Mac + скомпилить Qt из исходников,
т.к. бинарные сборки не устанавливаются.

Попробуй убрать вообще это:
Код
C++ (Qt)
   currentTermios.c_cc[VTIME] = 0;
   currentTermios.c_cc[VMIN] = 0;
 
ХЗ, поможет или нет.
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1025 : Ноябрь 04, 2012, 16:41 »

Не помогло.

Qt не нужно устанавливать из исходников, и так все работает. Последовательность установки Qt:
1. Установить компилятор, для этого, зарегистрироваться на https://developer.apple.com/downloads/index.action и скачать "command line tools". Регистрация бесплатная и не требует наличия мака. Но для разных версий мака разные версии этой штуки (если что, могу скачать и выложить).
2. Скачать и установить Qt libraries 4.8.3 for Mac (183 MB)
3. Скачать и установить Qt Creator 2.5.2 for Mac (Intel 32/64bit) (93 MB)
Все.

Кстати, QtSerialPort по моему устанавливается не в те каталоги. Я их вручную потом переместил.
заголовочные устанавливаются в /include, а надо в /usr/include
библиотеки устанавливаются в /library, а надо в /usr/lib

Как запустить mac в виртуалке написать? Там есть нюансы, я дня 2 долбался.
« Последнее редактирование: Ноябрь 04, 2012, 16:45 от Phoenix » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


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

Цитата: Phoenix
Не помогло.
Ну тогда ХЗ, нужно разбираться подробнее.

Цитата: Phoenix
Qt не нужно устанавливать из исходников, и так все работает.
Нет, на AMD процессорах сборки Qt привязаны к Intel-овским CPU-ID. Не устанавливается ни SDK
ни Libraries (не запускаются qmake и т.п.).

Поэтому собираю из исходников  Злой

Цитата: Phoenix
Кстати, QtSerialPort по моему устанавливается не в те каталоги. Я их вручную потом переместил.
Ок, это надо проверить.

Цитировать
Как запустить mac в виртуалке написать? Там есть нюансы, я дня 2 долбался.
Не, не надо. Я использую леопарда 10.6.8. с рутрекера Улыбающийся



Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1027 : Ноябрь 05, 2012, 16:36 »

2Phoenix,

Я вроде исправил ошибку, попробуй патч:

https://codereview.qt-project.org/#change,38868

И пожалуйста обязательно отпишись (можешь даже на Gerrit).
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1028 : Ноябрь 05, 2012, 18:01 »

Порт открывает, но данные не идут. Может действительно проблема в виртуалке. Я в командировку завтра еду, приеду поразбираюсь еще.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1029 : Ноябрь 05, 2012, 19:06 »

Цитата: Phoenix
Порт открывает, но данные не идут. Может действительно проблема в виртуалке.
Да, скорее всего проблема именно в ней (с пробрасываемым портом).

При попытке передачи 1 байта из МасOSX через этот порт, приемная сторона принимает 3 байта!!!  Шокированный
Если же пытаться в MacOSX принимать данные через этот порт (не важно, cu.serial1 или tty.serial1),
то не срабатывает QSocketNotifier и данные не принимаются.

Отлично работает только из виртуалки, если использовать USB/Serial шнурок (предварительно установив в гостевую
MacOSX драйвер этого шнурка). Для этого нужно в ВМ для гостевой MacOSX выбрать USB девайс (в моем случае это Prolific 2303),
тогда в MacOSX появится порт /dev/tty.usbserial + /dev/cu.usbserial. Вот любой из этих портов и нужно использовать (желательно cu.*).
В этом случае этот порт не является "прокидываемым" и работает как надо.
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1030 : Ноябрь 05, 2012, 20:09 »

Кстати, выскакивает:
Цитировать
QSocketNotifier::Exception is not supported on Mac OS X

В virtualbox я выбрал не порт а файл, в итоге данные проходят из гостя в хост без искажения.
« Последнее редактирование: Ноябрь 05, 2012, 21:20 от Phoenix » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1031 : Ноябрь 05, 2012, 21:24 »

Цитировать
QSocketNotifier::Exception is not supported on Mac OS X
Это фиг с ним, не критично. Потом исправлю.

Цитировать
В virtualbox я выбрал не порт а файл, в итоге данные проходят из гостя в хост без искажения.
т.е. патч работает?


Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1032 : Ноябрь 05, 2012, 21:46 »

т.е. патч работает?
Да, но данные не приходят от устройства. Сейчас нет возможности протестировать более полно. Данные проходят из Mac OS X(гость) в файл (а не порт) Linux (хост).
« Последнее редактирование: Ноябрь 05, 2012, 21:51 от Phoenix » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1033 : Ноябрь 05, 2012, 22:07 »

Ок. Значит это касяк VBox.
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1034 : Ноябрь 09, 2012, 22:13 »

QtSerialPort в маке на VirtualBox работает, но при необычных обстоятельствах.
Соединил com-порты двух компьютеров перекрестным кабелем. На первом компьютере linux x86-64, на втором - linux x86. Запустил на обоих компьютерах программу "terminal", убедился что данные передаются в обе стороны.  На первом компьютере закрыл программу "terminal" и запустил VirtualBox + Mac OS X. В Mac OS X запустил программу "terminal" - данные не передаются. Далее, не закрывая Mac, на первом компьютере запустил программу "terminal" и открыл порт. И данные между маком и вторым компьютером начали передаваться в обе стороны без искажений, а на первом компьютере просто запущена программа "terminal" и открыт порт, но ничего не передается.
Записан
Страниц: 1 ... 67 68 [69] 70 71 ... 88   Вверх
  Печать  
 
Перейти в:  


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