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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как загрузить BMP-файл в QByteArray (в бинарном виде)  (Прочитано 21144 раз)
-QT-
Гость
« Ответ #15 : Октябрь 14, 2008, 20:00 »

Цитировать
Кодировка для BMP - это сильно!
Брось заниматься глупостями. Лучше изучи доки по своей железячке - скорее всего она либо предпологает какой-то специальный заголовок для картинки, либо ожидает не "сырые" данные а например в base64, а может и то и другое.
Кроме того, она может не понимать какие-то из разновидностей BMP формата.

просветите по поводу форматов.
Кодировка в ВМР это конечно нонсенс но я передаю данные в ком-порт с помощью QextSerialPotr и использую для этого
QByteArray  который, как мне известно может хранить данные в UTF-8. Но факт на лицо железяка пакет не принимает и плюется ошибками. Все остальные пакеты, которые я формирую проходят перекодирование, но они формируются из
QString & char* в QByteArray.

По поводу доки все проштудировано и проконсультировано с производителем железа. Если они ничего не утаили Улыбающийся
то получает она(железка) данные в формате 0х1В+ВМР после того как я отправлю контрольный пакет и получу в ответ байт
готовности к приему данных.
Все так и идет, только при передаче данных возникает таймаут, что означает что за отведенное время получено больше или
меньше информации чем требуется.
« Последнее редактирование: Октябрь 14, 2008, 20:13 от -=QT=- » Записан
-QT-
Гость
« Ответ #16 : Октябрь 14, 2008, 20:03 »

Статья хорошая, но к кроссплатформенности не имеет никакого отношения.
Привязка к платформе не возможна по первичным требованиям.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #17 : Октябрь 14, 2008, 20:34 »

iconv есть в POSIX.1-2001, хотя я тут тоже не понимаю причём тут кодировки к бинарным данным. Тестируйте железку, что она от вас ожидает, а что вы шлёте.
Записан
Tonal
Гость
« Ответ #18 : Октябрь 14, 2008, 22:48 »

UTF-8 - это кодировка текста. А у тебя бинарные данные. Так что не мешай тёплое с мягким.
QByteArray хранит массив байтов. Ему всё равно что именно ты туда положил текст в какой-нибудь кодировке или BMP-шку.

В чём могут быть проблемы при передаче:
1. Железка может ожидать конкретный подформат (например только чёрнобелые снизу вверх)
2. Железка может ожидать не весь файл, а только структуру с изображением (см. как устроен файл BMP)
3. Ты можешь посылать неверно, например, ожидается байт со значением 0х1В и сразу за ним данные ВМР а у тебя там может проскочить ещё 1, 2 левых байта.
4. Есть ограничение на размер ВМР-шки которую можно залить.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #19 : Октябрь 15, 2008, 03:02 »

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

Юра.
-QT-
Гость
« Ответ #20 : Октябрь 15, 2008, 09:02 »

В чём могут быть проблемы при передаче:
1. Железка может ожидать конкретный подформат (например только чёрнобелые снизу вверх)
А как проверить что файл действительно чёрнобелый, это каким-то образом
отображается в заголовке или есть другие признаки ?
Записан
Tonal
Гость
« Ответ #21 : Октябрь 15, 2008, 10:58 »

В файле содержится вся информация нужная для отображения. Улыбающийся
Хотя получить её можно и из QPixmap или QImage - свойство depth.
Ну и вообще ассистент по ним почитай. Улыбающийся
Записан
-QT-
Гость
« Ответ #22 : Октябрь 17, 2008, 10:38 »

Всем спасибо за ответы !

Дело было в двух вещах.
Первый баг затихарили производители железа, что передавать блок данных
нужно сразу в течении 200 мс.
А второй подкрался в том что нужно передавать черно-белое изображение в реально
однобитовом цвете, Улыбающийся а не черно-белое в многобитной кодировке, это мне нужно было
внимательнее выискивать информацию в доке и спецификации.

А по итогу все заработало как часы.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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