![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: нет Всего: 4 |
Здравствуйте. Необходимо передать изображение через com порт в контроллер.
1. Чтобы получить цвет каждого пиксела, мы с каждым пикселем картинки проделываем следующее:
Т.е. для каждой из 5 точек знаем её цвет: F800, 0000, 0000, FFFF, FFFF ![]() 2. Дисплей работает в -5-6-5- (-R-G-B-) режиме цветопередачи. Это означает, что в потоке данных первые 5 бит устанавливают красный цвет, следующие 6 - зеленый, и последние 5 синий. (0xFFFF белый, 0x0000 черный). 3. Необходимо передать цвета каждого пикселя картинки контроллеру ATMega8, а он отправит их в дисплей. ![]() 4. В Delphi использую компонент CPortLib. Для записи в порт у него есть: Write - Writes non-typed variable to output buffer. WriteAsync - Writes non-typed variable to output buffer in asynchronous mode. WriteStr - Writes string type variable to output buffer. WriteStrAsync - Writes string type variable to output buffer in asnychronous mode. 5. Как их передать? Как разбить на 8+8? Т.е. как передать 16-тиричное число через com порт? Это сообщение отредактировал(а) mr_smit - 11.2.2010, 20:56 |
|||
|
||||
mr_smit |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: нет Всего: 4 |
И всё что ли? Но это строка.
[Error]: Incompatible types: 'Word' and 'PAnsiChar'
Компилируется, но при нажатии на кнопку ошибка в этой строке PixColorArray[0]:=pix; Пример из справки к компоненту:
Если отправить 3 цвета подряд, то получаем: 63488201631 63488 = F800 = 1111100000000000 = красный 2016 = 07E0 = 0000011111100000 = зеленый 31 = 001F = 0000000000011111 = синий Как то ещё можно передавать? |
||||||||||
|
|||||||||||
mr_smit |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: нет Всего: 4 |
Нашел компонент TBComPort.
У него функция:
Как эти 2 байта отправить в ком порт???????
|
||||||
|
|||||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: нет Всего: 4 |
Свершилось!!!!!!!!!!!!!
![]() Существенный прогресс!!!!!!!! Работает!!!!!!!! Я поставил компонент TBComPort
Т.е. делим полученный цвет на 2 отдельных байта, Hi и Lo, и побайтно отправляем. Сначала первый, затем второй. ![]() ![]() Я счастлив...!!! И это всё на ATMega8... Теперь осталось разобраться с выводов изображения в заданную область и передачей текста в дисплей. ![]() Единственное только картинка выводится ооочень долго, 4-5 сек, но я думаю это из-за скорости COM порта. Я поставил 38400. Надо будет увеличить. Потому что заливка экрана одним цветом происходила очень быстро, < 1сек. P.S. Кстати, в диспетчере устройств для TUSB 3410 можно выставить максимум 128000 бит/сек. Хотя вроде бы производитель обещает гораздо больше, странно. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |