COM0COM per Win10/11

Aperto da AZ6108, 07 Novembre 2024, 16:12:06

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

AZ6108

Se per caso qualcuno avesse la necessità di implementare delle seriali virtuali, ad esempio per "collegare" programmi diversi per il controllo della radio, il programma "com0com" è normalmente una delle soluzioni proposte, il problema è che tale programma installa dei driver (necessari per le seriali virtuali) senza una "firma digitale" valida, e questo ne impedisce in funzionamento in Windows 10/11, per ovviare al problema è sufficiente installare, al posto di com0com (che eventualmente va disinstallato), questo pacchetto

https://damn99.com/en/2021-03-13-com0com/

che contiene i driver aggiornati e correttamente "firmati", una volta completata l'installazione è sufficiente usare il tool di configurazione "a linea comando" di nome "setupc" per poter configurare le coppie di porte seriali che si desidera; ho provato il tutto su Win10 e su Win11 senza rilevare problemi, l'unica accortezza è quella di leggere attentamente il "readme" incluso del file di distribuzione e che contiene le istruzioni necessarie a configurare correttamente le porte
"If at first the idea is not absurd, then there is no hope for it"


AZ6108

Scaricare il file "7z" da http://files.akeo.ie/blog/com0com.7z

Estrarre i files in una cartella (es. C:\com0com)

Lanciare la console di "gestione dispositivi" avviando il comando "devmgmt.msc"

Posizionarsi nella cartella x64 (o i386 se su OS a 32 bit)

Fare click destro su "setupc.exe" e poi "esegui come amministratore"

Nella console comandi di "setupc" immettere i comandi visibili sotto (vengono visualizzate anche le relative risposte) cambiando, se desiderato i numeri delle due porte (COM8 e COM9 nell'esempio sotto), i comandi sono quelli visibili dopo i prompt "command>" il resto del testo riportato sono le risposte del programma "setupc"

command> install - - 
       CNCA0 PortName=-
       CNCB0 PortName=-
command> change CNCA0 PortName=COM8 
       CNCA0 PortName=-
change CNCA0 PortName=COM8
Restarted CNCA0 com0com\port \Device\com0com10
       CNCB0 PortName=-
ComDB: COM8 - logged as "in use"
command> change CNCB0 PortName=COM9 
       CNCA0 PortName=COM8
       CNCB0 PortName=-
change CNCB0 PortName=COM9
Restarted CNCB0 com0com\port \Device\com0com20
ComDB: COM9 - logged as "in use"
command> change CNCA0 EmuBR=yes 
       CNCA0 PortName=COM8
change CNCA0 PortName=COM8,EmuBR=yes
Restarted CNCA0 com0com\port \Device\com0com10
       CNCB0 PortName=COM9
command> change CNCB0 EmuBR=yes 
       CNCA0 PortName=COM8,EmuBR=yes
       CNCB0 PortName=COM9
change CNCB0 PortName=COM9,EmuBR=yes
Restarted CNCB0 com0com\port \Device\com0com20
command> list
       CNCA0 PortName=COM8,EmuBR=yes
       CNCB0 PortName=COM9,EmuBR=yes
command> quit 

a questo punto in "gestione dispositivi" verrà visualizzata la voce "com0com" contenente le due porte seriali virtuali e il "pair" che collega le due porte COM8 e COM9 appena create

com0com.png

qualsiasi dato inviato su COM8 verrà ricevuto da COM9 e, viceversa, qualsiasi dati inviato su COM9 verrà ricevuto da COM8

volendo aggiungere ulteriori coppie di porte virtuali sarà sufficiente rilanciare i comandi visti sopra ma cambiando i nomi delle porte (es. COM10 e COM11 invece di COM8 e COM9), per ulteriori dettagli vedere il readme incluso nel file contenente i driver

"If at first the idea is not absurd, then there is no hope for it"

AZ6108

#2
Una nota, installando il driver "com0com" di cui sopra al posto del "vecchio" pacchetto originale con firma "temporanea", Windows Update propone un aggiornamento dello stesso, il che significa che non solo il driver ha una firma "valida" ma che ha anche superato i vari test ed è considerato "ufficiale" ed "affidabile" da Microsoft, il che per lo meno garantisce che non si tratti di una "roba a casaccio"

Per cui, se a qualcuno servissero delle porte seriali virtuali, ad esempio per far comunicare tra loro vari programmi che gestiscono una radio o un apparato, direi che l'uso di "com0com" o, per lo meno, della versione di cui sopra, possa rappresentare una buona soluzione; certo non è comodo come altri programmi che presentano una qualche interfaccia grafica, ma alla fine basta imparare quei pochi comandi di configurazione per riuscire a gestire bene in tutto e crearsi tutte le "coppie" di porte virtuali di cui si necessita

Tra l'altro, esiste anche un altro "driver" che si chiama "com2tcp"

https://github.com/u-blox/com2tcp

e che, in pratica permette di "collegare" una porta seriale virtuale ad un'altra porta seriale "virtuale" poste sullo stesso computer o su due computer diversi, facendole comunicare tramite TCP/IP, il che ad esempio, permette di avere un dato programma su un computer "A" connesso ad una seriale (virtuale) che dialoga, tramite "com0com" e "com2tcp" con una seconda seriale (virtuale) con un altro programma in esecuzione su un computer "B", il tutto tramite una normale connessione di rete, per cui i due computer possono essere nella stessa stanza o... all'altro capo del mondo


"If at first the idea is not absurd, then there is no hope for it"