Show Posts
Pages: 1 [2] 3 4 ... 10
16  International / Generale / Conversione byte to string on: May 15, 2012, 06:31:22 am
Buongiorno.
Avrei la necessità di convertire dei byte letti da un mixer midi (berhinger BCF2000) e trasmormarli in stringa.
Come si fa la conversione ?

Grazie, Alberto
17  International / Generale / Re: Conversione string to byte on: April 27, 2012, 12:02:34 pm
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
18  International / Generale / Re: Conversione string to byte on: April 27, 2012, 10:55:16 am
E' che ho bisogno di due porte seriali
Una riceve rs232 e l'altra spara su midi
19  International / Generale / 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  smiley-eek-blue

Cioa Alberto
20  International / Generale / Re: Conversione string to byte on: April 27, 2012, 08:12:37 am
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
21  International / Generale / [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
22  International / Generale / Re: Conversione string to byte on: April 27, 2012, 05:42:04 am
Niente da fare  smiley-kiss
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

Code:
#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;
}
23  International / Generale / Re: Conversione string to byte on: April 27, 2012, 05:28:08 am
Usavo ide 0023 ...... ora uso 1.0
24  International / Generale / Re: Conversione string to byte on: April 27, 2012, 04:15:34 am
Minchia Paolo mi hai aperto un mondo ............. che non capisco per niente  smiley-lol
25  International / Generale / Re: Conversione string to byte on: April 27, 2012, 03:36:45 am
con 0xB0 mi esce:
0:0
1:x
2:B
3:
4:U accentato
11001111
207
CF

Con 0x02
0:0
1:x
2:0
3:
4:U accentato
10111111
191
BF

Con 0x7F
0:0
1:x
2:7
3:
4:U accentato
101111
47
2F
26  International / Generale / Re: Conversione string to byte on: April 27, 2012, 03:15:00 am
B0 dovrebbe convertirlo in 176 cioè 10110000
27  International / Generale / Re: Conversione string to byte on: April 27, 2012, 03:11:10 am
Grazie lesto per la pazienza e l'impegno che stai dimostrando  smiley-eek-blue

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

Code:
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;
}
28  International / Generale / Re: Conversione string to byte on: April 27, 2012, 03:02:02 am
Si Midi_Send usa write ma per le prove uso print per vedere il dato.

Ora provo con la modifica che mi hai consigliato

Grazie
29  International / Generale / 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 !!

Code:
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;
}
30  International / Generale / 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
Pages: 1 [2] 3 4 ... 10