Go Down

Topic: Conversione string to byte (Read 3088 times) previous topic - next topic

lesto

grande :)

è stato macchinoso debuggare a distanza, ma almeno hai visto un pò "la tecnica"  :smiley-mr-green:
se non hai capito il motivo per cui faccio - 'A' e - '0' dai un'occhiata alla tabella ascii, e in caso chiedi pure  
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

m.alverman

#31
Apr 27, 2012, 03:12 pm Last Edit: Apr 27, 2012, 03:17 pm by m.alverman Reason: 1
Grazie lesto.
Ora mi metto un poco in pausa  :smiley-mr-green:

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  :smiley-red: e tengo la tua  :smiley-mr-green:
La metto comunque in questo thread in caso servisse:

Code: [Select]

/* 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  8)

Code: [Select]

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

PaoloP

Complimenti.
Adesso l'ultima cosa da vedere è lo spazio utilizzato dalle due soluzioni e privilegiare quella più piccola.
Chissà perché ma lo spazio non basta mai. Uscisse anche un Arduino con 1024k riuscirei a riempirlo.  :smiley-roll-sweat:

m.alverman

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  :smiley-eek-blue:

Cioa Alberto

lesto


Complimenti.
Adesso l'ultima cosa da vedere è lo spazio utilizzato dalle due soluzioni e privilegiare quella più piccola.
Chissà perché ma lo spazio non basta mai. Uscisse anche un Arduino con 1024k riuscirei a riempirlo.  :smiley-roll-sweat:


sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

PaoloP

Se deve fare solo questo potresti pensare ad un Atmega standalone.  ;)

m.alverman

E' che ho bisogno di due porte seriali
Una riceve rs232 e l'altra spara su midi

PaoloP


E' che ho bisogno di due porte seriali
Una riceve rs232 e l'altra spara su midi


Potresti implementarle via software e lasciare quella hardware per il debug.

m.alverman

Potresti approfondire ?

Il fatto è che settimana prossima la devo usare, e penso che dovrò portarmi dietro la breadboard con il max.
Praticamente questo aggeggio lo uso in teatro della mia città dove lavoro per le riprese video.

Ho un convertitore rs232/lan con due porte rs232
Una rs232 la uso per il controllo remoto del controller pan/tilt/memorie di due telecamere panasonic brandeggiate
Una rs232 la uso con il convertitore rs232/midi arduino e con questo controllo il mixer video che riceve solo comandi midi.

Il tutto controllato da un programma che ho fatto in VB che funziona in laboratorio, ma il vero test lo farò settima prossima a caldo.

Non è che adesso ho molto tempo per girare attorno ancora al rs232/midi.

Quando avrò testato l'effettivo funzionamento di tutto l'ambaradam allora potrei pensarci.
Intanto dammi altre informazioni di come faresti tu  :smiley-mr-green:

Grazie ancora ragazzi per avermi dato respiro ......... chissa stanotte posso fare qualcosa con mia moglie  ]:D

Ah ah ah

Alberto

Go Up