Qualcuno mi sa dire perchè non va questo protocollo seriale ?


ho scaricato questo codice da internet ma me sembra non funzionare.
dal pc invio !100*
sullo sniffer seriale vedo !1100*
ma arduino non processa il messaggio.
praticamente sembra che non entri mai dopo il while !!

uso arduino mega con max232 e ricevo sulla porta1 e visualizzo messaggi sulla porta0
grazie per l'aiuto

alverman

questo il codice:

code: [select]

/*===========================
title: serial echo code v1.1
author: fayaz kadir
description: if send string starting "!" , ending "*", arduino responds "$y" valid data string, or $n invalid data string. can modify code use.
compatible board: arduino mega (but other arduino should work fine)
============================*/
char string[25];
int i=0;
int string_len;
int inbyte;
int last_inbyte;

void setup() {
  serial1.begin(9600); //intialising serial port
  serial.begin(9600); //intialising serial port
}

void loop()  // loop function
{
  inbyte = serial1.read();
  string_len=0;
   if (inbyte == '!') read_serial();  // if start of line ("!") found, call read_serial() function
}

void read_serial()  // function reading serial message
{
   serial.println ("sol found , reading");  // sol (start of line) found notice.
   serial.print("read : !\n");  //saying has read "!" on serial port
   while (inbyte != '*') // long eol not found, keep reading
     if (serial1.available() > 0) // if new data available
          {
            inbyte = serial1.read(); // read new byte
            serial.print("read : "); // display new byte
            string[string_len] = inbyte; // save data in character array
            serial.println(string[string_len]); // print characters recieved
            string_len++;}
      else if (serial1.available() == 0)
            {serial.println("eol not available, data string invalid"); // if eol not in string
            serial1.println("$n"); //fail signature
            break;
            }
if (inbyte == '*')
  {
       serial.println ("eol found, , full string was");  // echoes success message
       serial1.println ("$y"); //success signature
       for (i=0;i<(string_len-1);i++) serial.print(string[i]);
       serial.print ("\n");
   }
}

c'era un break di troppo !!

senza quello sembra funzionare


Arduino Forum > International > Italiano > Generale (Moderator: leo72) > Qualcuno mi sa dire perchè non va questo protocollo seriale ?


arduino

Comments

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial