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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: ПРОСТО ПО-МО-ГИ-ТЕ! Qt Linux usb-cdc  (Прочитано 10785 раз)
Tumyq
Гость
« : Май 10, 2018, 21:19 »

В общем беда... Есть сканер штрих кода Newland em2028,  он подключается либо по ком порту,  либо как usb-cdc.  Завёл с полпинка его на виндовс с компортом. Перенёс его,  простите,  на проклятый линукс,  и началось.. На сайте производителя написано,  что в линукс драйвера не надо,  там должна быть нативная поддержка usb-pos,  usb-cdc. Мои мозги уже неделю бьются с этим безобразием! Они измождены и сроки давно вышли.  Он определяется как usb,  есть вендор,  есть пид.  Я использую все так же излюбленный и супер-пупер кроссплатформенный qserialport,  который то ли видит,  то ли не видит.  Не имея чего-то человеческого,  как диспетчер устройств,  я выискивал и перебирал все ttyS,  чтобы добраться до этой пакости. Кто-нибудь,  может мне помочь,  с какими волшебным правами и матерными словами должен работать простой компорт на этом прям мега-драйв прорывом линуксе?  Нет, я не хочу вызвать ненависть тех,  что пользуется его sudo. Но когда дело доходит до разработки - это же развалюха,  которую надо собирать из палок и всего,  что выкинуто добрыми людьми в инете.  Люди,  помогите,  а? Я уже и hidapi там пытался завести - глухо,  ни слова. Все компилится,  что не работает - не ясно
Записан
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #1 : Май 10, 2018, 21:33 »

я так думаю для начала нужно указать какой именно линукс ты используешь.
Записан
Tumyq
Гость
« Ответ #2 : Май 10, 2018, 21:52 »

Lubuntu,  ибо с ним более-менее начал дышать бедный atom от Intel.  И оболочка тоже была нужна
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Май 10, 2018, 22:37 »

А как именно он должен работать? Я когда-то работал со сканерами карт, они же вроде работают как клавиатуры, посылая обычный клавиатурный ввод. Мой сканер я просто подключил к Убунте, открыл leafpad, провёл картой и получил текст.
Записан
Tumyq
Гость
« Ответ #4 : Май 10, 2018, 23:19 »

Да, я тоже радовался, когда первый раз читал, что эти устройства так определяются, однако на винде 10 не определился и мне пришлось поставить драйвер с его оф. сайта, после чего оче6нь легко все подрубилось по ком порту. Проверял так - открыл текстовый файл, тыкнул туда курсором,и считало штрих код - в источниках пишут, что подобно клавиатуре то, что считано, будет прописано - это же хид. Но увы, не пишет оно просто так. Так только в легендах у кого-то на форумах случалось
Записан
Tumyq
Гость
« Ответ #5 : Май 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);

}

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

Сообщений: 480



Просмотр профиля
« Ответ #6 : Май 11, 2018, 08:47 »

Обычно все эти usb-com конверторы в линуксах как ttyUSBx определяются.
Записан

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

Сообщений: 451


Просмотр профиля
« Ответ #7 : Май 11, 2018, 09:19 »

ttyS* - это аппаратный com-порт в линуксе. Чтобы узнать имя порта сканера, надо прочитать журнал сообщений (как правило, /var/log/messages) после его подключения. Кроме того, чтобы работать с com-портом в линуксе, надо быть членом специальной группы. Имя группы можно узнать выполнив команду
Код
Bash
sudo ls -al /dev/ttyS*
Один из столбцов вывода будет содержать имя группы, в которую необходимо добавить пользователя.
Записан
zhbr
Гость
« Ответ #8 : Май 11, 2018, 10:51 »

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

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

Сообщений: 319


Просмотр профиля
« Ответ #9 : Май 11, 2018, 10:53 »

ttyS* - это аппаратный com-порт в линуксе. Чтобы узнать имя порта сканера, надо прочитать журнал сообщений (как правило, /var/log/messages) после его подключения. Кроме того, чтобы работать с com-портом в линуксе, надо быть членом специальной группы. Имя группы можно узнать выполнив команду
Код
Bash
sudo ls -al /dev/ttyS*
Один из столбцов вывода будет содержать имя группы, в которую необходимо добавить пользователя.

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

Сообщений: 319


Просмотр профиля
« Ответ #10 : Май 11, 2018, 10:56 »

По поводу dmesg.
Следует вынуть устройство и очистить журнал:
sudo dmesg -C
Затем вставить устройство и снова выполнить dmesg
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #11 : Май 11, 2018, 11:10 »

еще покажи
Код:
cat /etc/os-release

и кто же заставил тебя мучится с этим линуском, ведь на венде то все работало ?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #12 : Май 11, 2018, 11:17 »

> Обычно все эти usb-com конверторы в линуксах как ttyUSBx определяются.

Или ttyACMx.

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

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

ArchLinux x86_64 / Win10 64 bit
Tumyq
Гость
« Ответ #13 : Май 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"^^)

В общем, что с этим всем делать, по прежнему  - теряюсь в догадках.
« Последнее редактирование: Май 11, 2018, 14:06 от Tumyq » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #14 : Май 11, 2018, 14:04 »

Цитировать
нет - в dev только ttyS и tty.

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

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

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

ArchLinux x86_64 / Win10 64 bit
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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