PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Arduino проекты (http://pccar.ru/forumdisplay.php?f=195)
-   -   Вопрос по Ардуино. Хелп плиз-(( (http://pccar.ru/showthread.php?t=12588)

ancc 12.07.2010 16:03

так если в массив за раз попадет несколько ваших команд которые вы печатаете последовательно, вторая разве будет работать?

CyberSubaru 12.07.2010 16:07

КОРКА.
добавил вывод счетчика главных циклов.
РАБОТАЕТ КАК ШВЕЙЦАРСКИЕ ЧАСЫ.

ввожу
Цитата:

ATSQWERTY
код
PHP код:

 int loopc;
void setup() 

    
Serial.begin(115200); 
//  Serial.println("ECU READY"); 
loopc=0;



int cmd[64];
int i;
int pin;
int maxdata;




void loop() 

  
  
maxdata=0;
  
loopc++;
  
   for(
i=0;i<64;i++) {cmd[i]=0;}
   
   
i=0;

   while (
Serial.available()>0
      {  
       
cmd[i]=Serial.read();
       
Serial.print(cmd[i],BYTE);   
       
Serial.print(loopc,DEC);   
       
i++;
       
maxdata++;
       } 
//  Serial.flush(); 
 
   
if ((cmd[0]==65)and(cmd[1]==84))
   {
      
Serial.println("\r\n"); 
      
Serial.println("AT OK"); 

       switch (
cmd[2])
       {
       case 
73: {      //'I'
               
                
};
               break;
       
       case 
71: {        //'G'
                  
pin=cmd[3];
                };
                break;     
       
       case 
83:   {      //'S'
                        
Serial.println("SET COMMAND /PIN "); 
                         
pin=cmd[3];
                        
// Serial.println(pin,BYTE); 
                        // Serial.println(cmd[4],BYTE); 

                         
                         
switch (cmd[4])
                         {
                           case 
1pinMode(pinINPUT); break;
                           case 
2pinMode(pinOUTPUT); break;
                           case 
3digitalWrite(pin,cmd[5]);break;
                           case 
4analogWrite(pin,cmd[5]);break;
                         };  
                         
                         
Serial.println("\r\n"); 

                   };
               break;
       }
       
    }
 
      


результат

Цитата:

A-9008T-9008S-9008Q-9008W-9008E-9008R-9008T-9008Y-9008

AT OK
SET COMMAND /PIN


A23933T23933S23933Q23933W23933E23933R23933T23933Y23933

AT OK
SET COMMAND /PIN


A-26026T-26026S-26026Q-26026W-26026E-26026R-26026T-26026Y-26026

AT OK
SET COMMAND /PIN


A-11042T-11042S-11042Q-11042W-11042E-11042R-11042T-11042Y-11042

AT OK
SET COMMAND /PIN


A3653T3653S3653Q3653W3653E3653R3653T3653Y3653

AT OK
SET COMMAND /PIN


A17269T17269S17269Q17269W17269E17269R17269T17269Y1 7269

AT OK
SET COMMAND /PIN


A32459T32459S32459Q32459W32459E32459R32459T32459Y3 2459

AT OK
SET COMMAND /PIN


ЕЩЕ БОЛЬШЕ КОРКА

ЗАКОМЕНТИЛ
Цитата:

// Serial.print(loopc,DEC);
РЕЗУЛЬТАТ ИСПОРТИЛСЯ
Цитата:

ATSQWERTYAT

AT OK
SQWERTYATSQWERTYATS

AT OK
SET COMMAND /PIN


QWERTYAT

AT OK
SQWERTYATSQWERTYAT

AT OK
SQWERTYAT

AT OK
SQWERTY

CyberSubaru 12.07.2010 16:11

Цитата:

Сообщение от ancc (Сообщение 148847)
так если в массив за раз попадет несколько ваших команд которые вы печатаете последовательно, вторая разве будет работать?

на данный момент в массиве только одна команда.
он каждый раз перед чтением порта обнуляется.

CyberSubaru 12.07.2010 17:48

Вот вывод массива с номерами элементов
номер через слэш

Цитата:

A/0T/1S/2Q/3W/4E/5R/6T/7Y/8

AT OK
SET COMMAND /PIN


A/0T/1S/2Q/3W/4E/5R/6T/7Y/8

AT OK
SET COMMAND /PIN


A/0T/1S/2Q/3W/4E/5R/6T/7Y/8

AT OK
SET COMMAND /PIN


A/0T/1S/2Q/3W/4E/5R/6T/7Y/8

AT OK
SET COMMAND /PIN


A/0T/1S/2Q/3W/4E/5R/6T/7Y/8

AT OK
SET COMMAND /PIN

CyberSubaru 12.07.2010 18:51

проблема решилась заменой Serial.print() на delay(1);
во как!
точнее обошел проблему))


Часовой пояс GMT +4, время: 21:10.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot