Проверка кода.
- Войдите на сайт для отправки комментариев
Чт, 18/08/2016 - 10:26
Добрый день.
Возникла ситуация. Необходимо передать данные в ком порт устройства, после задержки на инициализацию.
Была написанна программа, но что-то не заладилось.
Требуется 6 раз отослать по 2 пакета ( pas, pas1), потом 1 раз отослать ok,ok1. Если потребуется то отсылается и пакет skip.
Все пакеты по отдельности отправляются нормально, но вместе программа отрабатывает только первый цикл. почему-то отсылает 2 раза заголовок пакетов (0хАА) и стопится.
Где может быть косяк?
АТмега8А, внутренний 8МГц.
void setup() {
Serial.begin(115200);
}
void loop() {
char pas[]={0xAA,0x73,0x01,0x92,0x01,0x6C,0xCC,0x33,0xC3,0x3C,'\0'}; // Первый пакет данных 0
char pas1[]={0xAA,0x72,0x01,0x92,0x01,0x6C,0xCC,0x33,0xC3,0x3C,'\0'}; // Второй пакет данных 0
char ok[]={0xAA,0x73,0x01,0xE5,0x01,0xAF,0xCC,0x33,0xC3,0x3C,'\0'}; // Первый пакет данных 1
char ok1[]={0xAA,0x72,0x01,0xE5,0x01,0xAF,0xCC,0x33,0xC3,0x3C,'\0'}; // Второй пакет данных 1
char skip[]={0xAA,0x70,0x0F,0xCC,0x33,0xC3,0x3C,'\0'};
int i=0, j=0;
delay (13500);
for (int i=0; i<6; i++){ // отправка пакета 0 , 6 раз
for (int j=0; j<10; j++){ // побайтная отправка первого пакета 0
Serial.write(pas[j]);
}
delay(150); //задержка 150 мс
for (int j=0; j<10; j++){ // побайтная отправка второго пакета 0
Serial.write(pas1[j]);
}
Serial.flush();
}
delay(100);
for (int i=0; i<1; i++){
for (int j=0; j<10; j++);{
Serial.write(ok[j]); // побайтная отправка 1 пакета 1
}
delay(100);
for (int j=0; j<10; j++);{
Serial.write(ok1[j]); // побайтная отправка 2 пакета 1
}
}
delay(100);
//for (int i =0; i<7; i++){
// Serial.write(skip[i]);
// }
while(1);
}

Это, как я понимаю кусочек программы? Или она работает у Вас именно в таком виде? Т.е. кратинка с результатами точно от этой программы безо всяких изменений?
Строки 24 и 29 - чушь. Там точка с запятой ненужная. Это как минимум, чего заметил.
Строки 24 и 29 - чушь. Там точка с запятой ненужная. Это как минимум, чего заметил.
А, так потому такая хрень и происходит - как раз два байта (первые) передаются, и больше ничего. Отлично! А я не заметил этого.