Не ругайтесь сильно, пытаюсь разобраться.
В каком формате в этом случае должны идти данные cо стороны ПК?
Например, массив цветов каждого пикселя картинки размером 5х1 (красный,черный,черный,белый,белый) в формате 5-6-5
(готовый для записи в дисплей) выглядит так:
Код: Выделить всё
const unsigned int array[5] = {
0xF800, 0x0000, 0x0000, 0xFFFF, 0xFFFF
};
Чтобы его получить, в Delphi мы с каждым пикселем картинки проделываем следующее:
Код: Выделить всё
...
// pix - цвет пикселя
// s - строка (string) с цветом в формате hex
r1:=GetRValue(pix) shr 3;
g1:=GetGValue(pix) shr 2;
b1:=GetBValue(pix) shr 3;
pix:= (r1 shl 11) + (g1 shl 5) + b1; // получили цвет
// можем перевести его в hex формат
s:=IntToHex(pix,4);
Т.е. для каждой из 5 точек знаем её цвет: F800, 0000, 0000, FFFF, FFFF
И можем его передать. Ну к примеру возьмем блок из 3 цветов. Т.е. 3 цвета получили -> отправили в дисплей, получили оставшиеся 2 -> отправили с дисплей.
В 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.
Т.е. при нажатии кнопки мы можем написать что то типа:
ComPort1.Write(0-ой элем. массива цветов); // F800
ComPort1.Write(1-й элем. массива цветов); // 0000
ComPort1.Write(2-й элем. массива цветов); // 0000
ComPort1.Write(3-й элем. массива цветов); // FFFF
ComPort1.Write(4-й элем. массива цветов); // FFFF
Распознаются ли эти цвета кодом приведенным
HekuToc?
Нельзя всё знать, достаточно понимать.