Pages: [1]   Go Down
Author Topic: [Risolto] Serial.print(?);  (Read 671 times)
0 Members and 1 Guest are viewing this topic.
Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti ho un problema, dovrei inviare una stringa via seriale, ci sono riuscito ma devo fare una cosa particolare ora, devo comporre una stringa mista parole e mista numeri, la seconda vorrei che sia una variabile decisa da me, e fattibile?

grazie

« Last Edit: September 28, 2012, 11:03:31 am by Iz2rpn » Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tipo:

Code:
int valore = analogRead(0);
Serial.print("valore=");
Serial.println(valore);

?
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

in questo modo non mi prende la variabile, spiego meglio il formato della stringa deve essere questo:

Quote
FA00007100000;

quindi il primo FA e fisso il resto numerico ma poi trasformato in stringa di testo, ma che deve essere una variabile, decisa da me.
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7079
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sinceramente... non ho capito la domanda.  smiley-roll-sweat smiley-neutral
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il numero "trasformato in stringa" deve avere sempre la stessa lunghezza ? In tal caso vanno aggiunti manualmente degli zeri di "padding".

E comunque mi pare che - a parte la questione della lunghezza complessiva - il mio esempio sia quello che ti serve.
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora io devo inviare tramite usb FA00007100000; e fin qui ci sono se la scrivo:

Quote
serial.print("FA00007100000;")

il programma che mi legge la porta usb risponde e fa quello che deve fare, ma io devo cambiare il valore 00007100000 con un variabile e non so come manipolare una stringa e poi riunirla smiley

@tuxduino: ho provato ma non funziona
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7079
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai provato a vedere qui e dintorni? --> http://arduino.cc/en/Tutorial/StringConstructors
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@tuxduino: ho provato ma non funziona

Che cosa hai provato ? Cosa vuol dire "non funziona" ? Posta codice, risultato atteso e ottenuto. Qualsiasi informazione aggiuntiva può essere utile ad aiutarti. Per ora siamo abbastanza sul vago...
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

eccomi qui dopo aver tirato qualche testata al monitor

Quote
int c = 7100000;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
   Serial.print("FA00007100000;");
  }
 
 
 


void loop() {


  // converting a constant string into a String object:
  String stringTwo =  String("FA0000"); 
  String stringTree = String(c);
  // concatenating two strings:
  String stringOne =  String(stringTwo +  stringTree + ";");
  // prints "This is a string with more":
  Serial.println(stringOne);     

  // do nothing while true:
  while(true);

}

mi restituisce un valore finale strano non corrisponde a quello che voglio io ma cmq ora il codice funziona e il programma risponde
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il processo è giusto ma sto sbagliando, non riesco a visualizzare la variabile "c" come stringa
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7079
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

int c = 7100000;

Ora ti tiro le orecchie!!  smiley-twist smiley-twist smiley-twist
Code:
int

Description
Integers are your primary datatype for number storage, and store a 2 byte value. This yields a range of -32,768 to 32,767 (minimum value of -2^15 and a maximum value of (2^15) - 1).

usa unsigned long  smiley-mr-green
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e io me le faccio tirare ora funziona riesco a fare quello che voglio grazie ragazzi, cosi imparo a non leggere la descrizione delle variabili smiley-razz
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Potresti usare Serial.print() multiple.

Cerca in rete sprintf().
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@tuxduino: mmmh no sarebbe troppo un caos di codice in questo modo ho più flessibilità nel codice dove posso controllare solo un tipo di dato, questo dato che sto modificando deve cambiare la frequenza radio della mia radio scusate il gioco di parole e ora funziona perfettamente, il primo serial.print mi serve per settare la frequenza di partenza, ho messo quella perché ci sono affezionato smiley-razz

codice rivisitato:

Quote
unsigned long b = 8100000;


void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
   Serial.print("FA00007100000;");
  }
 
 
 


void loop() {


  // converting a constant string into a String object:
  String stringTwo =  String("FA0000");
 
  String stringTree = String(b);   
 
  // concatenating tree strings:
  String stringOne =  String(stringTwo +  stringTree + ";");
  // prints FA00008100000; for radio
  Serial.print(stringOne); 
delay(1000); 

 while(true);

}
Logged

Pages: [1]   Go Up
Jump to: