Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Tumyq от Май 10, 2018, 21:19



Название: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 10, 2018, 21:19
В общем беда... Есть сканер штрих кода Newland em2028,  он подключается либо по ком порту,  либо как usb-cdc.  Завёл с полпинка его на виндовс с компортом. Перенёс его,  простите,  на проклятый линукс,  и началось.. На сайте производителя написано,  что в линукс драйвера не надо,  там должна быть нативная поддержка usb-pos,  usb-cdc. Мои мозги уже неделю бьются с этим безобразием! Они измождены и сроки давно вышли.  Он определяется как usb,  есть вендор,  есть пид.  Я использую все так же излюбленный и супер-пупер кроссплатформенный qserialport,  который то ли видит,  то ли не видит.  Не имея чего-то человеческого,  как диспетчер устройств,  я выискивал и перебирал все ttyS,  чтобы добраться до этой пакости. Кто-нибудь,  может мне помочь,  с какими волшебным правами и матерными словами должен работать простой компорт на этом прям мега-драйв прорывом линуксе?  Нет, я не хочу вызвать ненависть тех,  что пользуется его sudo. Но когда дело доходит до разработки - это же развалюха,  которую надо собирать из палок и всего,  что выкинуто добрыми людьми в инете.  Люди,  помогите,  а? Я уже и hidapi там пытался завести - глухо,  ни слова. Все компилится,  что не работает - не ясно


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: demal от Май 10, 2018, 21:33
я так думаю для начала нужно указать какой именно линукс ты используешь.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 10, 2018, 21:52
Lubuntu,  ибо с ним более-менее начал дышать бедный atom от Intel.  И оболочка тоже была нужна


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Alex Custov от Май 10, 2018, 22:37
А как именно он должен работать? Я когда-то работал со сканерами карт, они же вроде работают как клавиатуры, посылая обычный клавиатурный ввод. Мой сканер я просто подключил к Убунте, открыл leafpad, провёл картой и получил текст.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 10, 2018, 23:19
Да, я тоже радовался, когда первый раз читал, что эти устройства так определяются, однако на винде 10 не определился и мне пришлось поставить драйвер с его оф. сайта, после чего оче6нь легко все подрубилось по ком порту. Проверял так - открыл текстовый файл, тыкнул туда курсором,и считало штрих код - в источниках пишут, что подобно клавиатуре то, что считано, будет прописано - это же хид. Но увы, не пишет оно просто так. Так только в легендах у кого-то на форумах случалось


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 10, 2018, 23:27
Если кому-то нужен код, прилагаю, он на Винде работает, он  же на линуксе с измененным параметром - не работает, а ведь говорится, что библиотека Qt кроссплатформенная

Код:
#include "barcodescanner.h"

BarcodeScaner::BarcodeScaner(QObject *parent) :
    QObject(parent)
{

QSerialPort * serial = new QSerialPort("/dev/ttyS0");

    if(!serial->setBaudRate(QSerialPort::Baud9600))
        qDebug() << serial->errorString();
    if(!serial->setDataBits(QSerialPort::Data8))
        qDebug() << serial->errorString();
    if(!serial->setParity(QSerialPort::NoParity))
        qDebug() << serial->errorString();
    if(!serial->setFlowControl(QSerialPort::HardwareControl))
        qDebug() << serial->errorString();
    if(!serial->setStopBits(QSerialPort::OneStop))
        qDebug() << serial->errorString();
    if(!serial->open(QIODevice::ReadOnly))
        qDebug() << serial->errorString();

connect(serial, &QSerialPort::readyRead,
            this, &BarcodeScaner::read_barecode_scan);
}

BarcodeScaner::~BarcodeScaner()
{
     delete serial;
}

void BarcodeScaner::read_barecode_scan()
{    
    QByteArray datas = serial->readAll();  
    QString datas_str = QString(datas).left(13);
    emit resultReady(datas_str);

}

Как говорится, тут ломаться то нечему.
Я не знаю, может, кто-то может научить отыскивать в этом "все есть файл" файл подключаемого компорта....


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Kurles от Май 11, 2018, 08:47
Обычно все эти usb-com конверторы в линуксах как ttyUSBx определяются.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Hellraiser от Май 11, 2018, 09:19
ttyS* - это аппаратный com-порт в линуксе. Чтобы узнать имя порта сканера, надо прочитать журнал сообщений (как правило, /var/log/messages) после его подключения. Кроме того, чтобы работать с com-портом в линуксе, надо быть членом специальной группы. Имя группы можно узнать выполнив команду
Код
Bash
sudo ls -al /dev/ttyS*
Один из столбцов вывода будет содержать имя группы, в которую необходимо добавить пользователя.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: zhbr от Май 11, 2018, 10:51
можно набрать команду dmesg - запомнить последнюю строчку, затем воткнуть устройство, опять выполнить dmesg и увидишь чего нового добавилось.

правами над устройствами обычно udev рулит. можно составить правила под конкретные vid pid.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: kai666_73 от Май 11, 2018, 10:53
ttyS* - это аппаратный com-порт в линуксе. Чтобы узнать имя порта сканера, надо прочитать журнал сообщений (как правило, /var/log/messages) после его подключения. Кроме того, чтобы работать с com-портом в линуксе, надо быть членом специальной группы. Имя группы можно узнать выполнив команду
Код
Bash
sudo ls -al /dev/ttyS*
Один из столбцов вывода будет содержать имя группы, в которую необходимо добавить пользователя.

И скорее всего это будет dialout. То есть следует добавить пользователя в эту группу и перелогиниться.
Также, в качестве превентивных мер, стоит посмотреть не установлен ли modemmanager в систему. Если естановлен, то удалить его и ребутнуться.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: kai666_73 от Май 11, 2018, 10:56
По поводу dmesg.
Следует вынуть устройство и очистить журнал:
sudo dmesg -C
Затем вставить устройство и снова выполнить dmesg


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: qate от Май 11, 2018, 11:10
еще покажи
Код:
cat /etc/os-release

и кто же заставил тебя мучится с этим линуском, ведь на венде то все работало ?


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: kuzulis от Май 11, 2018, 11:17
> Обычно все эти usb-com конверторы в линуксах как ttyUSBx определяются.

Или ttyACMx.

ТС, просто возьми terminal пример от qtserialport открой настройки и там будут отображаться
все имеющиеся в системе порты. И даже можешь заиспользовать сам terminal для приема данных.

PS: А вот гневно писать о том, в чем не разобрался - не нужно. Там просто в гугле 15 минут
поиска и все становится ясно.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 11, 2018, 13:31
Всем снова здравствуйте. Выше писали про группу и добавление туда юзера, это было проделано еще до моего обращения, да - был dialout.

ttyUSB и ttyACM(как указано в оф.доках) я тоже искал , нет - в dev только ttyS и tty.

Работать должен просто на считывание - поднесли штрих код, он считал и отправил.

Сегодня воспользовался ls usb -v нашел по пид и вид, и обнаружил это чудо в bus 0004, а там в файле 0006(но это выделяется динамически, то есть номер файлика меняется)

НЕ ПО ТЕМЕ(этот абзац можно не читать): Гневать защитников мощного линукса я не хотел, и вовсе не писал это со злостью,  это мой крик о помощи. Просто поймите, я , вроде как, юзаю кроссплатформенную Qt, и само собой хочу видеть в этом удобство, но самой главной проблемой теперь для меня стало устройство линукса, которое дает о себе знать на каждом мелком шагу. У меня вообще уже складывается впечатление, что чтобы что-то заработало на нем - это большая удача. Например, я хотел повернуть экран, надо найти xorg.conf -> нет файла xorg.conf, надо создать-> создаю, надо остановить gdb -> нет gdb ->устанавливаю gdb, останавливаю gdb, создаю файл, перекидываю его в нужную папку, начинаю редактировать -> нельзя, надо права-> открываю его в лучезарной консоли редактором nano с sudo, редактирую-> отлично! оно после перезагрузки сразу стало перевернутым-> ...а мышки то нет...-> и после этого еще много разных вариантов настроек в секциях device, монитор, inputdevice...но мышь так и не появилась. А ведь мне надо просто перевернуть экран. Что будет, когда я захочу что-то добавить в автозагрузку - боюсь себе представить. Лично для меня его привлекательность пока видится только в его бесплатности и отсутствии тормозов, которые в винде со временем появляются, но за это надо очень дорого заплатить. как сказал бы Шаукан из Мортал Комбата "Your soul is main"^^)

В общем, что с этим всем делать, по прежнему  - теряюсь в догадках.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: kuzulis от Май 11, 2018, 14:04
Цитировать
нет - в dev только ttyS и tty.

Значит нужный драйвер не подгрузился.

1. Смотри что говорит dmesg при втыкании/вытыкании девайса, о чем писали выше.

2. Через lsusb (флаги с какими запускать сам поищи) посмотри дескриптор USB у-ва,
он должен соответствовать спецификации USB CDC-ACM.


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 11, 2018, 14:28
переткнул, почистил, использовал dmesg

Код:
[ 5584.697623] usb 4-2: USB disconnect, device number 11
[ 5590.121352] usb 4-2: new full-speed USB device number 12 using uhci_hcd
[ 5590.626397] usb 4-2: New USB device found, idVendor=1eab, idProduct=0d01
[ 5590.626403] usb 4-2: New USB device strings: Mfr=25, Product=42, SerialNumber=101
[ 5590.626407] usb 4-2: Product: USB DataPipe
[ 5590.626411] usb 4-2: Manufacturer: Auto-ID
[ 5590.626414] usb 4-2: SerialNumber: 11111111111111
[ 5592.137379] usb 4-2: USB disconnect, device number 12
[ 5592.961261] usb 4-2: new full-speed USB device number 13 using uhci_hcd
[ 5593.237313] usb 4-2: New USB device found, idVendor=1eab, idProduct=0d02
[ 5593.237319] usb 4-2: New USB device strings: Mfr=25, Product=42, SerialNumber=101
[ 5593.237322] usb 4-2: Product: USB DataPipe
[ 5593.237326] usb 4-2: Manufacturer: Auto-ID
[ 5593.237329] usb 4-2: SerialNumber: 11111111111111

Я там в отчаянии использовал wine эмулятор, чтоб поставить драйвер в формате .msi(на оф.сайте было заявлено, что они идут и для линукс, но дистр был в .msi), теперь не ясно - это подцепились собственные дрова или те, что я ставил





Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 11, 2018, 14:29
еще покажи
Код:
cat /etc/os-release

и кто же заставил тебя мучится с этим линуском, ведь на венде то все работало ?


Релиз такой:

Код:
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial



Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: qate от Май 11, 2018, 14:31
Например, я хотел повернуть экран, надо ....

это что я щас прочитал за садомазо отчет ?
ты где нашел эти руководства ?
на год их написания смотрел ?
какой нах xorg, все делается мышой - в окне настройка экранов https://www.youtube.com/watch?v=yQIVMW7QiDM




Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: qate от Май 11, 2018, 14:44
А вообще нужно обращаться к производителю железяки - для венды он дрова приложил, а для linux пусть также приложит или инструкцию
Если он этого не сделал, значит ему наплевать на этот вариант использования


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 11, 2018, 15:10
Например, я хотел повернуть экран, надо ....

это что я щас прочитал за садомазо отчет ?
ты где нашел эти руководства ?
на год их написания смотрел ?
какой нах xorg, все делается мышой - в окне настройка экранов https://www.youtube.com/watch?v=yQIVMW7QiDM





ну-ну, мышкой.. я ведь не фильмы смотреть ставил версию, этот Ubuntu парализует бедный atom,
вскоре там вообще не будет оболочки.

Как я и писал , производителю не все равно, он просто указывает, что в линушке все должно быть нативным, драйверов не надобно


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: qate от Май 11, 2018, 15:46
Как я и писал , производителю не все равно, он просто указывает, что в линушке все должно быть нативным, драйверов не надобно

врет значит
напиши им с указанием dmesg, пусть укажут как все "просто" не получается


Название: Re: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc
Отправлено: Tumyq от Май 11, 2018, 16:27
Как я и писал , производителю не все равно, он просто указывает, что в линушке все должно быть нативным, драйверов не надобно

врет значит
напиши им с указанием dmesg, пусть укажут как все "просто" не получается


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