Удача с электронной книгой.
Oct. 31st, 2012 01:36 pmЧто-то в связи с болезнью никак не могу добраться до ЖЖ, собраться с мыслями и написать данный простенький пост. Грёбаная осень!
Забегая вперёд скажу, что мне удалось по UART передать картинку, всё благодаря товарищу
paracloud, который мне точно указал что делать в этом посте http://dlinyj.livejournal.com/609986.html .
Говоря простым языком, нужно настроить консоль. Я набросал небольшую програмку
По сути программа перенастраивает терминал и отключает эхо. После чего "вслепую" вводим на книжке
cat /dev/tty > result.raw
а на компе вводим
sudo cat img.raw > /dev/ttyUSB0
И спустя, примерно, минуту получаем исходный файл на книжке. Консоль удаётся вернуть только после перезагрузки книжки. Это файл вполне себе видится и выводится на экран без потерь и артефактов.
Это был топорный тестовый вариант, в стиле "а можно ли?"
Далее, я решил написать программу, которая не создаёт промежуточный файл, а принимает данные в буфер, а затем этот буфер копирует во фреймбуффер. ( Ознакомится можно под катом )
Здесь настраивается блокирующее чтение:
fcntl(0, F_SETFL, 0); //read com-port is the bloking
Которое не делает бесконечный цикл, а блокирует оператор read до появления данных.
Не знаю, что я делаю не так. Пограмма честно отрабатывает, но выводит тупо чёрный экран, по завершению приёма. Увы...
Надо разбираться дальше.
Забегая вперёд скажу, что мне удалось по UART передать картинку, всё благодаря товарищу
Говоря простым языком, нужно настроить консоль. Я набросал небольшую програмку
#include <stdio.h> ... int main (int argc, char* argv[]) { struct termios oldtty, newtty; fcntl(0, F_SETFL, 0); //read com-port is the bloking tcgetattr(0, &oldtty); newtty = oldtty; newtty.c_iflag = IGNBRK; newtty.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN); newtty.c_oflag = 0; newtty.c_cflag &= ~PARENB; newtty.c_cflag |= CS8; newtty.c_cc[VMIN] = 1; newtty.c_cc[VTIME] = 1; tcsetattr(0, TCSANOW, &newtty); return 0; }
По сути программа перенастраивает терминал и отключает эхо. После чего "вслепую" вводим на книжке
cat /dev/tty > result.raw
а на компе вводим
sudo cat img.raw > /dev/ttyUSB0
И спустя, примерно, минуту получаем исходный файл на книжке. Консоль удаётся вернуть только после перезагрузки книжки. Это файл вполне себе видится и выводится на экран без потерь и артефактов.
Это был топорный тестовый вариант, в стиле "а можно ли?"
Далее, я решил написать программу, которая не создаёт промежуточный файл, а принимает данные в буфер, а затем этот буфер копирует во фреймбуффер. ( Ознакомится можно под катом )
Здесь настраивается блокирующее чтение:
fcntl(0, F_SETFL, 0); //read com-port is the bloking
Которое не делает бесконечный цикл, а блокирует оператор read до появления данных.
Не знаю, что я делаю не так. Пограмма честно отрабатывает, но выводит тупо чёрный экран, по завершению приёма. Увы...
Надо разбираться дальше.

