Show Posts
|
|
Pages: 1 [2] 3 4 ... 10
|
|
17
|
International / Italiano / Re: Conversione string to byte
|
on: April 27, 2012, 08:55:08 am
|
Beh per questo progetto, Paolo è tutto qui. Praticamente fa solo questo ........ è una specie di rs232 to midi tutto qui. Si tutto qui perchè adesso funziona  Cioa Alberto
|
|
|
|
|
18
|
International / Italiano / Re: Conversione string to byte
|
on: April 27, 2012, 08:12:37 am
|
Grazie lesto. Ora mi metto un poco in pausa  Comunque la tua soluzione è arrivata mentre stavo approcciando alla funzione che aveva suggerito Paolop la strtol della quale avevo trovato un codicino che funzionava e stavo cominciando ad capirla per poi adattarla alle mie esigenza. Sembra semplice !! Appena arrivata la tua soluzione ho smesso di studiare  e tengo la tua  La metto comunque in questo thread in caso servisse: /* strtol example */ #include <stdio.h> #include <stdlib.h>
int main () { char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff"; char * pEnd; long int li1, li2, li3, li4; li1 = strtol (szNumbers,&pEnd,10); li2 = strtol (pEnd,&pEnd,16); li3 = strtol (pEnd,&pEnd,2); li4 = strtol (pEnd,NULL,0); printf ("The decimal equivalents are: %ld, %ld, %ld and %ld.\n", li1, li2, li3, li4); return 0; }
Per completezza metto anche la tua funzione finita che ......... in futuro non si sa mai  void Midi_Send(byte cmd, byte data1, byte data2) {
Serial.write(cmd); Serial.write(data1); Serial.write(data2); }
byte strConv(String str) { byte a =0; /* Serial.print("CHAR 2: "); Serial.println(str.charAt(2)); Serial.print("CHAR 3: "); Serial.println(str.charAt(3)); */ if (str.charAt(2) >= '0' && str.charAt(2) <= '9'){ //estraggo 'B' a = str.charAt(2) - '0'; }else{ a = str.charAt(2) - 'A'+10; } a = a << 4; //muovo il valore di 4 bit a sinistra if (str.charAt(3) >= '0' && str.charAt(3) <= '9'){ //estraggo '1' a += str.charAt(3) - '0'; }else{ a += str.charAt(3) - 'A'+10; } return a; }
Grazie ancora. Alla prossima, Alberto
|
|
|
|
|
19
|
International / Italiano / [RISOLTO]: Conversione string to byte
|
on: April 27, 2012, 06:51:25 am
|
|
lesto
MI TTI COOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO !!!!!!!!
Non sai quanto sono felice cazzo E' da domenica che rompo le palle a destra e a sinistra e tu mi hai risolto un grandissimo problema. Per molti non sarà niente ma per me è tantissimo.
Non sai da quanto tempo volevo mettere quel [RISOLTO]
grazie per il tuo tempo prezioso speso per me
Alberto
|
|
|
|
|
20
|
International / Italiano / Re: Conversione string to byte
|
on: April 27, 2012, 05:42:04 am
|
Niente da fare  Ora uso ide 1.0 Se entro con 0xB0 ottengo: CHAR 2: B CHAR 3: 0 16 Questo è il Serial.print 10000 Questo è il Serial.print BIN 16 Questo è il Serial.print DEC 10 Questo è il Serial.print HEX #include <stdlib.h>
byte b1; byte b2; byte b3;
void setup() { Serial.begin(9600); }
void loop() {
String b = "0xB0"; String c = "0x02"; String d = "0x7F"; while (Serial.available()>0) { Serial.read(); b1=(strConv(b)); // b2=(strConv(c)); // b3=(strConv(d));
Serial.println(b1); Serial.println(b1,BIN); Serial.println(b1,DEC); Serial.println(b1,HEX);
// Midi_Send(176,01,127); } } void Midi_Send(byte cmd, byte data1, byte data2) { Serial.write(cmd); Serial.write(data1); Serial.write(data2); }
byte strConv(String str) { byte a =0;
Serial.print("CHAR 2: "); Serial.println(str.charAt(2)); Serial.print("CHAR 3: "); Serial.println(str.charAt(3));
if (str.charAt(2) >= '0' && str.charAt(2) <= '9'){ //estraggo 'B' a = str.charAt(2) - '0'; }else{ a = str.charAt(2) - 'A'; } a = a << 4; //muovo il valore di 4 bit a sinistra if (str.charAt(3) >= '0' && str.charAt(3) <= '9'){ //estraggo '1' a += str.charAt(3) - '0'; }else{ a += str.charAt(3) - 'A'; } return a; }
|
|
|
|
|
25
|
International / Italiano / Re: Conversione string to byte
|
on: April 27, 2012, 03:11:10 am
|
Grazie lesto per la pazienza e l'impegno che stai dimostrando  Ho provato ma non funziona. Qualsiasi valore che entro mi ritorna 10111111 cioè 191 cioè BF che nella tabella esadecimale corrispondono La conversione sembra funzionare ma risulta indifferente al dato che invio byte b1; byte b2; byte b3;
void setup() { Serial.begin(9600); }
void loop() {
String b = "0xB0"; String c = "0x02"; String d = "0x7F"; while (Serial.available()>0) { Serial.read(); b1=(strConv(b)); b2=(strConv(c)); b3=(strConv(d));
Serial.println(b3,BIN); Serial.println(b3,DEC); Serial.println(b3,HEX);
// Midi_Send(176,01,127); } } void Midi_Send(byte cmd, byte data1, byte data2) { Serial.write(cmd); Serial.write(data1); Serial.write(data2); }
byte strConv(String str) { char stringa[5]; str.toCharArray(stringa,5);
Serial.println(stringa[0]); Serial.println(stringa[1]); Serial.println(stringa[2]); Serial.println(stringa[3]); Serial.println(stringa[4]); Serial.println(stringa[5]);
byte a =0; if (stringa[3] >= '0' && stringa[3] <= '9'){ //estraggo 'B' a = stringa[3] - '0'; }else{ a = stringa[3] - 'A'; } a = a << 4; //muovo il valore di 4 bit a sinistra if (stringa[4] >= '0' && stringa[4] <= '9'){ //estraggo '1' a = stringa[4] - '0'; }else{ a = stringa[4] - 'A'; } return a; }
|
|
|
|
|
27
|
International / Italiano / Re: Conversione string to byte
|
on: April 26, 2012, 07:04:10 pm
|
Così gli passo la stringa e la converto in array di char ma non funziona !! byte b1; byte b2; byte b3;
void setup() { Serial.begin(9600); }
void loop() {
String b = "0xB0"; String c = "0x02"; String d = "0x7F"; while (Serial.available()>0) { Serial.read(); b1=(strConv(b)); b2=(strConv(c)); b3=(strConv(d));
// Serial.println(b1,BYTE); // Serial.println(b2,BYTE); // Serial.println(b3,BYTE);
Midi_Send(b1,b2,b3); } }
void Midi_Send(byte cmd, byte data1, byte data2) { Serial.println(cmd,DEC); Serial.println(data1,DEC); Serial.println(data2,DEC); }
byte strConv(String str) { //Serial.println(str); String cmd=str; char stringa[5]; String mystr=cmd.substring(0,5); mystr.toCharArray(stringa,5);
Serial.println(stringa[0]); Serial.println(stringa[1]); Serial.println(stringa[2]); Serial.println(stringa[3]);
byte a =0; if (stringa[2] >= '0' && stringa[2] <= '9'){ //estraggo 'B' a = stringa[2] - '0'; }else{ a = stringa[2] - 'A'; } a = a << 4; //muovo il valore di 4 bit a sinistra if (stringa[3] >= '0' && stringa[3] <= '9'){ //estraggo '1' a += stringa[3] - '0'; }else{ a += stringa[3] - 'A'; } return a; }
|
|
|
|
|
28
|
International / Italiano / Re: Conversione string to byte
|
on: April 26, 2012, 06:17:11 pm
|
|
Ascolta lesto, non ce la faccio proprio. I tuoi consigli sono stati utili ma ci ho perso un'altra giornata e non ho risolto.
Ora non vorrei perdere un'altra giornata con getarray, se è quello.
Non è possibile entrati nella funzione, ciclare la stringa e mettere il relativo char del carattere nell'array ? Anche qui a parole lo so dire ma a codice mi servirebbe una mano.
Grazie, Alberto
|
|
|
|
|