| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как передать 16-тиричное число через com порт? |
| Автор: mr_smit 11.2.2010, 19:42 | ||
| Здравствуйте. Необходимо передать изображение через 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 14.2.2010, 19:57 | ||||||||||
И всё что ли? Но это строка.
[Error]: Incompatible types: 'Word' and 'PAnsiChar'
Компилируется, но при нажатии на кнопку ошибка в этой строке PixColorArray[0]:=pix; Пример из справки к компоненту:
Если отправить 3 цвета подряд, то получаем: 63488201631 63488 = F800 = 1111100000000000 = красный 2016 = 07E0 = 0000011111100000 = зеленый 31 = 001F = 0000000000011111 = синий Как то ещё можно передавать? |
| Автор: mr_smit 17.2.2010, 20:06 | ||||||
| Нашел компонент TBComPort. У него функция:
Как эти 2 байта отправить в ком порт???????
|
| Автор: mr_smit 18.2.2010, 07:56 | ||
Свершилось!!!!!!!!!!!!!![]() Существенный прогресс!!!!!!!! Работает!!!!!!!! Я поставил компонент TBComPort
Т.е. делим полученный цвет на 2 отдельных байта, Hi и Lo, и побайтно отправляем. Сначала первый, затем второй. http://radikal.ru/F/i080.radikal.ru/1002/bc/9d05e4408e2a.jpg.html http://radikal.ru/F/s002.radikal.ru/i200/1002/b0/7e8041690a8a.jpg.html Я счастлив...!!! И это всё на ATMega8... Теперь осталось разобраться с выводов изображения в заданную область и передачей текста в дисплей. http://radikal.ru/F/i071.radikal.ru/1002/3e/b76590b0a7cf.jpg.html Единственное только картинка выводится ооочень долго, 4-5 сек, но я думаю это из-за скорости COM порта. Я поставил 38400. Надо будет увеличить. Потому что заливка экрана одним цветом происходила очень быстро, < 1сек. P.S. Кстати, в диспетчере устройств для TUSB 3410 можно выставить максимум 128000 бит/сек. Хотя вроде бы производитель обещает гораздо больше, странно. |