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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: usb hid - hex  (Прочитано 4759 раз)
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;
}

Спасибо.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 22, 2014, 11:17 »

Всем привет, пишу программу на QT C++ столкнулся с проблемой получении данных с hid устройства.

Мне показалось, или в вашем куске кода нет Qt? Улыбающийся
Записан

kazakoff
Гость
« Ответ #2 : Декабрь 22, 2014, 12:59 »

Ну да в данном случае нет, так как это тестовый вариант и он на чистом C++, а вообще основной проект на Qt так что можно варианты с применением Qt
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Декабрь 22, 2014, 13:08 »

Может попробовать загонять данные в QByteArray, оттуда делать split и получать List<QByteArray>, после чего делать List<QByteArray>::removeAll, далее пройтись по элементам списка и объединить их?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Декабрь 22, 2014, 13:16 »

а вам только числа 3x нужно извлекать?
Записан
kazakoff
Гость
« Ответ #5 : Декабрь 22, 2014, 15:32 »

Числа,текст, текст с пробелами.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Декабрь 22, 2014, 15:37 »

Быть может это
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Декабрь 22, 2014, 15:42 »

Или QChar::​isLetterOrNumber и QChar::​isSpace
Записан
kazakoff
Гость
« Ответ #8 : Январь 09, 2015, 14:06 »

__Heaven__ спасибо, помогло isalnum   Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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