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:
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
senza quello sembra funzionare
Arduino Forum > International > Italiano > Generale (Moderator: leo72) > Qualcuno mi sa dire perchè non va questo protocollo seriale ?
arduino
Comments
Post a Comment