Pagina 1 di 2

Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 29 ott 2025, 21:16
da alien75
Salve, sto cercando di far comunicare il seguente codice python via USB con ARDUINODUE.
In pratica questo codice allegato (prova.py) al click del pulsante invia una strinda di 18 caratteri in formato char. Ciascun elemento dlela lista values può avere un valore massimo di 10000 quindi
essendo rappresentato da un integer viene spezzettato in due byte quindi due caratteri.
Dall'altra parte della USB c'è un ARDUINODUE che deve leggere ricomporre e stampare i valori
a 8bit e convertirli in int per poi stamparli sul monitor seriale dell' IDE di ARDUINODUE.
Sto cercando una lib per arduino che possa unire i due byte per comporre l'integer di partenza.
Allego i due sorgenti.
Potete aiutarmi per favore a trovare tale lib?

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 29 ott 2025, 22:03
da NoNickName
Codice: Seleziona tutto
import struct


{...}

Codice: Seleziona tutto
   while True:
        if ser.in_waiting >= 2:
            # Legge 2 byte dalla seriale
            raw_bytes = ser.read(2)
            # Converte i 2 byte in un intero (little endian)
            value = struct.unpack('<H', raw_bytes)[0]
            print(f"Valore ricevuto: {value}")



struct.unpack('<H', ...) interpreta quei 2 byte come un intero unsigned short in formato little endian (<H).
Se il tuo dispositivo invia in big endian, usa '>H' invece di '<H'.

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 30 ott 2025, 5:15
da alien75
Va bene pure per il C di ARDUINO questo codice ?
Ho provato quest ocodice per ARDUINO ma non funziona.

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 30 ott 2025, 6:30
da alien75
alien75 ha scritto:Va bene pure per il C di ARDUINO questo codice ?
Ho provato quest ocodice per ARDUINO ma non funziona.


Ho provato questo codice ma oltre al valore inviato dal python mi da pure altro:
Codice: Seleziona tutto
define MAX_BUFFER 2
int i = 0;
char b[MAX_BUFFER];
int risultato;
void setup(void)
{
  Serial.begin(9600);
  while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("OK!");
}



int convertiByteInInt(byte byte1, byte byte2) {
  // byte1 è il byte più significativo (MSB), byte2 è il meno significativo (LSB)
  // Sposta il primo byte di 8 posizioni a sinistra per fare spazio al secondo byte
  // Esegui un OR bitwise per combinare i due byte
  return (byte1 << 8) | byte2;
}

void loop() {
 
  while((Serial.available())>=0)
  {     
  b[i] = Serial.read();

  risultato = convertiByteInInt(b[0], b[1]);
  i++;
  if (i==2)
  {
    i = 0;
    b[0] = '0';
  } 
   // Il risultato sarà 0x1234 in esadecimale, che è 4660 in decimale
    /*if(risultato >= 813)
    {*/
      Serial.print("Il valore intero è: ");
      Serial.println(risultato);
    //}
  }
}

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 30 ott 2025, 20:20
da standardoil
Io sto abbandonando Arduino e il C
Ma mi sembra che sul forum di arduino, che un poco frequento ancora, ci fosse tempo fa uno con un problema simile
Magari prova a sentire la

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 30 ott 2025, 20:43
da alien75
Mi hanno bloccato nel forum ARDUINO, perché ho violato le loro regole.

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 30 ott 2025, 23:58
da NoNickName
alien75 ha scritto:Va bene pure per il C di ARDUINO questo codice ?
Ho provato quest ocodice per ARDUINO ma non funziona.


Ma non hai detto python?

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 31 ott 2025, 9:14
da standardoil
Non è una bella presentazione, la tua

Ti posso dire solo che difficilmente troverai quello che cerchi

Perché siccome non leggi i manuali non capisci di cosa hai bisogno e cerchi cose sbagliate

Auguri

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 31 ott 2025, 10:04
da djnz
alien75 ha scritto:In pratica questo codice allegato (prova.py) al click del pulsante invia una strinda di 18 caratteri in formato char. Ciascun elemento dlela lista values può avere un valore massimo di 10000 quindi
essendo rappresentato da un integer viene spezzettato in due byte quindi due caratteri.

Diciamo che prima di pensare alla ricezione, bisognerebbe essere sicuri di cosa si sta trasmettendo: esattamente quanti byte, ed esattamente ciascuno cosa rappresenta.

Re: Problema a trovare una libreria per leggere int da USB

MessaggioInviato: 31 ott 2025, 13:22
da alien75
NoNickName ha scritto:
alien75 ha scritto:Va bene pure per il C di ARDUINO questo codice ?
Ho provato quest ocodice per ARDUINO ma non funziona.


Ma non hai detto python?


Leggi bene il problema iniziale prima: c'è un programma in python lato PC che comunica via USB con arduino, nel quale c' è un programma in C che legge i caratteri che gli arrivano dal python