C++ e Visual studio Code

Buonasera io ho un problema quando provo a compilare un programma compilato gia' precedentemente in c++( programma scritto in wiring da interfaccia IDE Arduino in origine ) in modo corretto su visual studio code. Io utilizzo l'applicazione sia per programmare in c++ sia in python . Quando vado a ricompilare un programma gia' funzionante in c++ , mi da il seguente errore :

ImportError: cannot import name 'Serial' from 'serial' (c:\users\loris.platformio\penv\lib\site-packages\serial_init_.py):
File "C:\Users\loris.platformio\penv\lib\site-packages\platformio\builder\tools\pioupload.py", line 26:
from serial import Serial, SerialException
[FAILED] Took 11.23 seconds .
Non riesco a capirne la ragione. Ho provato ad aggiornare anche il comando platformio ma ho lo stesso errore . Mi potete aiutare?.. Grazie mille

Ciao
Sarebbe molto utile vedere anche il programma.

#include <Wire.h>
#include <Octopus.h>
#include <HCSR04.h>
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#include <stdlib.h>

//octopus output
#define basePin 0
#define shoulderPin 1
#define elbowPin 2
#define wristPin 3
#define rotationPin 4
#define gripperPin 5

int gradi_servo = 180;
int durata = 20;
int frequenza = 40;

int ang = 0;
int pos = 0; // Variabile utilizzata per il riposizionamento dei servo alla posizione iniziale  a conclusione del ciclo

void posizioneIniziale() {
  // Fase di posizionamento dei servo
  Octopus.analogWrite(basePin, 180);
  delay(500);
  Octopus.analogWrite(shoulderPin, 150);
  delay(500);
  Octopus.analogWrite(elbowPin, 85);
  delay(500);
  Octopus.analogWrite(wristPin, 130);
  delay(500);
  Octopus.analogWrite(gripperPin, 150);
  delay(500);
  Octopus.analogWrite(rotationPin, 360);
  delay(500);
  // Fine fase di posizionamento dei servo
}
void setup(void)
{
  Wire.begin();
  Wire.setClock(100000); 
  Octopus.setPWMFreq(frequenza);
  posizioneIniziale();
}
void loop(void)
{
  pos = 0;
  delay(500);
  // Rotazione servo Base
  for (ang =180; ang <240; ang++) {
    Octopus.analogWrite(basePin, ang);
    delay(durata);
  }
  delay(80);
  // Movimento Servo Spalla
  for (ang = 150; ang < 285; ang++) {
    Octopus.analogWrite(shoulderPin, ang);
    delay(durata);
  }
  delay(80);
  // Rotazione del Polso
  for (ang = 130; ang < 195; ang++) {
    Octopus.analogWrite(wristPin, ang);
    delay(durata);
  }
  delay(80);
  // Movimento Servo Spalla
  for (ang = 290; ang < 308; ang++) {
    Octopus.analogWrite(shoulderPin, ang);
    delay(durata);
  }
  delay(80);
  // Movimento Servo Gomito
  for (ang = 85; ang < 86; ang++) {
    Octopus.analogWrite(elbowPin, ang);
    delay(durata);
  }
  delay(80);
  // Movimento Servo del polso per posizionarsi correttamente per prelavare l'oggetto
  for (ang = 195; ang < 205; ang++) {
    Octopus.analogWrite(wristPin, ang);
    delay(durata);
  }
  delay(80);
  // Chiude la Pinza per prendere l'oggetto
  for (ang = 150; ang < 360; ang++) { 
    Octopus.analogWrite(gripperPin, ang);
    delay(durata);
  }
  delay(80);
  // Sollevamento della Spalla
  for (ang = 315; ang > 225; ang--) {
    Octopus.analogWrite(shoulderPin, ang);
    delay(durata);
  }
  delay(80);
  // Riposiziona il polso in asse con Gomito e Spalla
  for (ang = 220; ang > 195; ang--) {
    Octopus.analogWrite(wristPin, ang);
    delay(durata);
  }
  delay(80);
  // Rotazione del Servo Base
  for (ang =240; ang >160; ang--) {
    Octopus.analogWrite(basePin, ang);
    delay(durata);
  }
  delay(80);
  // Aziona il Servo legato alla Rotazione per svuotare il contenuto dell'oggetto preso
  for (ang =360; ang >180; ang--) {
    Octopus.analogWrite(rotationPin, ang);
    delay(durata);
  }
  delay(800);
  for (ang =180; ang <360; ang++) {
    Octopus.analogWrite(rotationPin, ang);
    delay(durata);
  }
  delay(80);

  // Inizio Fase di Ritorno per riporre lìoggetto nello stesso punto in cui è stato preso
  for (ang =160; ang <240; ang++) {
    Octopus.analogWrite(basePin, ang);
    delay(durata);
  }
  delay(80);
  for (ang = 230; ang < 285; ang++) {
    Octopus.analogWrite(shoulderPin, ang);
    delay(durata);
  }
  delay(80);
  for (ang = 195; ang < 275; ang++) {
    Octopus.analogWrite(wristPin, ang);
    delay(durata);
  }
  delay(80);
  for (ang = 90; ang < 170; ang++) {
    Octopus.analogWrite(elbowPin, ang);
    delay(durata);
  }
  delay(80);
  for (ang = 275; ang < 285; ang++) {
    Octopus.analogWrite(wristPin, ang);
    delay(durata);
  }
  delay(80);
  // Apre la pinza e rilascia l'oggetto
  for (ang = 360; ang > 150; ang--) {
    Octopus.analogWrite(gripperPin, ang);
    delay(durata);
  }
  // Alzo il servomotore del Polso
  for (ang = 285; ang < 300; ang++) {
    Octopus.analogWrite(wristPin, ang);
    delay(durata);
  }
  delay(80);
  // Alzo il servomotore della Spalla
  for (ang = 285; ang > 225; ang--) {
    Octopus.analogWrite(shoulderPin, ang);
    delay(durata);
  }
  delay(80);
  // Fine della fase di ritorno in cui il braccio ha riposto l'oggetto nella  posizione dove è stato prelevato
  pos = 1; // Viene posto a 1 la variabile pos affinchè il braccio torni nella sua posizione iniziale prima di ripetere il ciclo.
  delay(80);
  // Se pos=1 esegui i cicli per il posizionamento del braccio
  if ( pos == 1 ) {
     posizioneIniziale();
  }
  delay(1000);
}
uint16_t to(int gradi)
{
  float ms_min;
  float ms_max;
  float ms_gradi;
  float valore_PWM;

  ms_min = 120; //Rappresenta il valore PWM pari a 1 ms (posizione 0°)
  ms_max = 470; //Rappresenta il valore PWM pari a 1 ms (posizione 180°)
  ms_gradi = (ms_max - ms_min) / gradi_servo;
  valore_PWM = ms_min + (ms_gradi * gradi);
  return (valore_PWM);
}

Il programma funzionava correttamente compilandolo in C++ su Visual Studio Code. Non capisco cosa sia accaduto a parte disinstallare , dal mio pc, visual studio 2019 e aggiornando alla 3.8.6 la versione di python. Grazie

Forse octopus va a usare la seriale e per questo usava qualcosa di Visual Studio Code.
A parte i riferimenti a octopus, non vedo nulla di problematico. Reinstalla Octopus.
Uhmm... La libreria Octopus che viene installata dal gestore librerie di Arduino IDE non è quella richiesta!

Installando questa Octopus, la compilazione viene completata:

Il problema non è nel codice C++, ma nello script python.
Tenta di importare la classe Serial e SerialException dal modulo serial, ma qualcosa va storto e non ci riesce.

Fai un'installazione pulita di tutto.
Disinstalla VSC e cancella completamente la cartella *c:\users\loris.platformio*
Poi reinstalli VSC e platformio (che in automatico quando compili installa tutto il necessario, python3 compreso)

In effetti potrebbe essere sufficiente anche la sola rimozione della cartella *c:\users\loris.platformio*

Leggendo:
"Buonasera io ho un problema quando provo a compilare un programma compilato gia' precedentemente in c++ in modo corretto su visual studio code."
avevo dedotto che, dopo di ciò, stava cercando di usare di nuovo l'IDE...

Eh lo so, ma quando compili con platformio eventuali errori degli script eseguiti a fine compilazione te li ritrovi comunque nel terminal in basso e quindi in qualche modo ci si può confondere.

Mi pare l'OP comunque afferma che compilava senza problemi, poi ora ricompilando non va più.
Mi pare una spiegazione plausibile possa essere un aggiornamento a qualcosa che ha cambiato un software necessario alla compilazione, ad esempio python.

Python non è necessario per la compilazione ma solo per l'upload. Platformio mette tutto il necessario compreso il python3 nella cartella utente dove magari è rimasto qualcosa della vecchia versione e quindi si incasina tutto.

Buongiorno ho provveduto a cancellare la :\users\loris.platformio\ . Avevo un ultimo problema che non mi riconosceva la libreria , gia' esistente, Octoups e l'ho inserita nella libreria corretta e la compilazione si è conclusa con successo. Grazie milel a tutti siete stati preziosissimi.