Pages: 1 2 [3]   Go Down
Author Topic: Conversione string to byte  (Read 2450 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10461
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grande smiley

è 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  
Logged

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

Cremona
Offline Offline
Full Member
***
Karma: 2
Posts: 148
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
/* 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  smiley-cool

Code:
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
« Last Edit: April 27, 2012, 08:17:46 am by m.alverman » Logged

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

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
Logged

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

Cremona
Offline Offline
Full Member
***
Karma: 2
Posts: 148
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10461
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

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

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

Se deve fare solo questo potresti pensare ad un Atmega standalone.  smiley-wink
Logged

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

Cremona
Offline Offline
Full Member
***
Karma: 2
Posts: 148
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

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.
Logged

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

Cremona
Offline Offline
Full Member
***
Karma: 2
Posts: 148
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-twist

Ah ah ah

Alberto
Logged

Pages: 1 2 [3]   Go Up
Jump to: