Topic permanente di programmazione newbie

QuercusPetraea:
Confermo che avrdude ha problemi con numeri di COM alti (ma non ne conosco il limite massimo).

Windows, ogni volta che viene collegato un dispositivo USB di tipo CDC (Vcom), assegna una nuovo numero di porta seriale se sono soddisfatte queste due condizioni, Vid e Pid del device USB non ancora registrato e numero di serie non ancora registrato, questo modo di procedere è sia un vantaggio che uno svantaggio al tempo stesso.
Può fare molto comodo che windows mappi differentemente due device Vcom identici, cioè stesso Pid e Vid, ma con diverso numero di serie, perché in questo modo posso collegare due, o più, diversi Arduino avendo la certezza che avranno sempre lo stesso numero di Vcom quando collegati alla stessa porta seriale indipendentemente da quanti altri dispositivi CDC ho collegato nel tempo a quella porta, per contro con questo modo di procedere è facile trovarsi nel tempo con un numero enorme di Vcom assegnate e non tutti i programmi sono capaci di accedere a valori della Vcom alti, anzi spesso sono limitati solo fino a 10.
Da notare che cambiare semplicemente il numero della porta ad una periferica esistente non sempre funziona se prima non si disinstalla il precedente device.
C'è un modo per evitare che Windows assegni nuovi numeri di Vcom ogni volta che si collega un device con lo stesso Pid e Vid, ma con numero seriale diverso, basta aggiungere una voce al registry, poi apro un topic dedicato a questa cosa, in questo modo ogni volta che si collega un Arduino dello stesso modello, anche se sono schede diverse, viene usato sempre e solo il numero di Vcom assegnato alla prima connessione.
Per fare piazza pulita di tutte le Vcom assegnate nel tempo, di cui la maggior parte spesso non viene più utilizzata, c'è un modo semplicissimo, basta aggiungere alle variabili di sistema la voce "devmgr_show_nonpresent_devices" e settarla a 1, in questo modo andando nella "gestione periferiche" basta attivare attivare dal menù "visualizza" la voce "mostra periferiche nascoste" per vedere tutte le periferiche che sono state installate anche se non in uso o scollegate, dopo di che aprire la voce relativa alle porte COM e LPT per vedere tutta la lista e a questo punto eliminare le porte di troppo usando l'opzione disinstalla.
Fatto quanto sopra quando si collega nuovamente una delle periferiche cancellate sarà necessario reinstallare i driver e verrà assegnata il primo numero più basso di Vcom disponibile.
Esempio pratico ho le porte da 1 a 28 assegnate a schede "fantasma", la 29 e la 30 assegnate al cellulare, disinstallo dalla 1 alla 28 e quando ricollego Arduino dopo la procedura di installazione dei driver gli viene assegnata la porta 2 o la 3, dipende dalla mother board perché le prime due sono quasi sempre riservate alle seriali hardware anche se non presenti.