Russian Qt Forum

Программирование => С/C++ => Тема начата: kazakoff от Декабрь 22, 2014, 10:06



Название: usb hid - hex
Отправлено: kazakoff от Декабрь 22, 2014, 10:06
Всем привет, пишу программу на QT C++ столкнулся с проблемой получении данных с hid устройства.

Проблема в том что приходит hex с лишними данными для меня.

вот так.

Код:
0a0000000000000039300000000000000d000000000000000a0000000000000039310000000000000d000000000000000a0000000000000038390000000000000d000000000000000a0000000000000

а мне нужно всего лишь

Код:
393039313839

если не в hex то
Код:
909189 
ну я думаю это понятно =).

я хотел сделать так
Код:
if (port[i] != 00)
но это конечно же неправильно))

Так вот вопрос в том можно ли сделать фильтр?

Вопрос зачем? делает лишние пробелы.

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

Вот кусок кода

Код:
int main(int argc, char* argv[])
{
    int res;
    unsigned char buf[256];
    #define MAX_STR 255
    wchar_t wstr[MAX_STR];
    hid_device *handle;
    int i;


    // Set up the command buffer.
    memset(buf,0x00,sizeof(buf));
    buf[0] = 0x01;
    buf[1] = 0x81;


     handle = hid_open(0x16c0, 0x05df, NULL);
    if (!handle) {
        printf("unable to open device\n");
        return 1;
    }

    res = 0;

    int s=1;


    while (s<=10) {

    res = hid_read(handle, buf, sizeof(buf));

        for (i = 0; i < res; i++)


            //if (port[i] != 00) {

                printf("%02hhx", buf[i]);


            s++;
    }

    printf("\n");

    hid_close(handle);
    hid_exit();

    return 0;
}

Спасибо.


Название: Re: usb hid - hex
Отправлено: gil9red от Декабрь 22, 2014, 11:17
Всем привет, пишу программу на QT C++ столкнулся с проблемой получении данных с hid устройства.

Мне показалось, или в вашем куске кода нет Qt? :)


Название: Re: usb hid - hex
Отправлено: kazakoff от Декабрь 22, 2014, 12:59
Ну да в данном случае нет, так как это тестовый вариант и он на чистом C++, а вообще основной проект на Qt так что можно варианты с применением Qt


Название: Re: usb hid - hex
Отправлено: __Heaven__ от Декабрь 22, 2014, 13:08
Может попробовать загонять данные в QByteArray, оттуда делать split и получать List<QByteArray>, после чего делать List<QByteArray>::removeAll, далее пройтись по элементам списка и объединить их?


Название: Re: usb hid - hex
Отправлено: __Heaven__ от Декабрь 22, 2014, 13:16
а вам только числа 3x нужно извлекать?


Название: Re: usb hid - hex
Отправлено: kazakoff от Декабрь 22, 2014, 15:32
Числа,текст, текст с пробелами.


Название: Re: usb hid - hex
Отправлено: __Heaven__ от Декабрь 22, 2014, 15:37
Быть может это (http://www.cplusplus.com/reference/cctype/isalnum/)


Название: Re: usb hid - hex
Отправлено: __Heaven__ от Декабрь 22, 2014, 15:42
Или QChar::​isLetterOrNumber (http://doc.qt.io/qt-5/qchar.html#isLetterOrNumber-2) и QChar::​isSpace (http://doc.qt.io/qt-5/qchar.html#isSpace-2)


Название: Re: usb hid - hex
Отправлено: kazakoff от Январь 09, 2015, 14:06
__Heaven__ спасибо, помогло isalnum   :)