LINUX.ORG.RU

picoscope не виден через костыли созданные в qtcreator

 , ,


0

1

есть такие цифровые осциллографы picoscope (подлючается по usb).
через их софт осциллограф виден (usb 3.0).
а через qt (с qtcreator и их API (c code)) даже не открывается...
с ранними моделями (usb 2.0) такого не было [все фурычит].
вопрос собственно в:
может qt чего-то не хватает для общения с usb3.0?
в чем может быть проблема?
даже незнаю куда копать...

project.pro:

QT       += core gui serialport
LIBS += /opt/picoscope/lib/libps4000a.so
mw.cpp:
int8_t serial = 1;
int16_t *handle = new int16_t;
PICO_STATUS status = ps4000aOpenUnit(handle, &serial);
// PICO_STATUS status = ps4000aOpenUnit(int16_t *handle, int8_t *serial);
p.s. надеюсь телепаты не в отпуске (так как много не расписал)
p.s.s в support писал, сказали, что все должно работать :)
p.s.s.s и вообще, с ними кто то имел дело?

Deleted

Последнее исправление: rambler (всего исправлений: 1)

Зачем тебе serialport в qt если работаешь через родную либу?

int8_t serial = 1;

Очевидно не 1. Там в либе должен быть вызов для перечисления доступных устройств.

anonymous
()

Меня смущает handle, который создалим в куче, не проинициализировали, и сунули в функцию по значению (предполагаю, что либа сишная, т.е. ссылки не использутся).

annulen ★★★★★
()

All USB 3.0 devices When the device is plugged into a non-USB 3.0 port, it requires a two-stage power-up sequence. You must call this function if any of the following conditions arises: · USB power is required. · The power supply is connected or disconnected during use. · A 2-channel USB 3.0 scope is plugged into a USB 2.0 port (indicated if any function returns the PICO_USB3_0_DEVICE_NON_USB3_0_PORT status code). If you receive the PICO_USB3_0_DEVICE_NON_USB3_0_PORT status code from one of the ps4000aOpenUnit…() functions (ps4000aOpenUnit(), ps4000aOpenUnitWithResolution(), ps4000aOpenUnitAsync() or ps4000aOpenUnitProgress()), you must then call ps4000aChangePowerSource() to switch the device into non-USB 3.0-power mode.

Все ж написано

anonymous
()

serial это вообще не номер виртуального com порта, а буфер для строки с serial number. Ваш код писал человек вообще не читавший доку.

anonymous
()
Ответ на: комментарий от anonymous

serialport не удалил в этом топике, выходит для замешательства...
он используется для других устройств.

Deleted
()
Ответ на: комментарий от annulen

там используется два типа аргументов: «type value» и «type *value».
переписал через прямую инициализацию типа handle - результат тот же.
в lib2000, ps2000open сам присваивал значение этому handle (over 0),
а здесь всегда переписывает его в 0.
и вот эти open, ping пишут, что не может найти устройств.

Deleted
()
Ответ на: комментарий от anonymous

все бы ничего, но результат одинаковый как для usb2.0 так и usb3.0.
проблема появляется на предидущих шагах.
ps4000aPingUnit() и ps4000aOpenUnit() все возвращает сообщения:
PICO_NOT_FOUND /or/ PICO_INVALID_HANDLE

проблема в том что сам picoscope не виден.

Deleted
()
Ответ на: комментарий от anonymous

спасибо за вопрос!
уже разобрались.
ps4000aEnumerateUnits() возвращает список доступных осциллографов.
и оттуда можно ставить serial в ps4000aOpenUnit().

если мы не вызываем ps4000aEnumerateUnits(), то достаточно просто задать ps4000aOpenUnit(&handle, NULL); [int16_t handle]

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.