Serial.read() -> Array[8][8].
- Войдите на сайт для отправки комментариев
Чт, 31/05/2012 - 20:19
Здравствуйте.
Помогите, пожалуйста, сделать чтение данных с COM порта в двумерный массив.
Данные отправляются php скриптом. В итоге должн получится массив 8x8 каждый элемент которого состоит из 8 бит. Массив должен получится в виде: http://paste.org/49921
Задача срочна, работа будет оплачена.
Спасибо.
Что "получится должно" - понятно. А вот в каком виде данные приходят - не очень. В бинарном или текстовом, с разделителями или без? "Всем пакетом сразу" или "в час по чайной ложке"?
>Задача срочна, работа будет оплачена.
Ну, если срочная, то может стоило свои контакты оставить? Напрямую вся-ко быстрее мелочи выяснять.
Ладно, предположим у вас идет бинарный поток. Все принятые байты - данные.
ТОгда код будет выглядеть примерно так
#define MAX_X 8 // размер по X #define MAX_Y 8 // размер по Y // координаты текущей ячейки, в нее будет записан пришедший байт byte x=0; byte y=0; bool arrayIsFull=false; // флаг указывающий byte data[MAX_X][MAX_Y]; // собственно сам массив данных void setup(){ Serial.begin(9600); } void loop(){ if(!arrayIsFull && Serial.available()){ // что-то пришло и массив еще не полностью заполнен data[x][y]=Serial.read();// заполнили ячейку y++; // перешли к следующему столбцу if(y==MAX_Y){ // строка закончилась x++;// переходим на следующую строку y=0;// и возвращаемся к первому столбцу if(x==MAX_X){ // а строки уже тоже закончились, больше писать некуда arrayIsFull=true;// запоминаем это // **************** // тут можно написать логику которая должна сработать, когда массив полностью заполнился // **************** } } } }