Ho installato, apparentemente con successo, com0com v2.2.2.0 su un computer Windows 7 a 64 bit.porta virtuale com0com non trovata
avvio l'utilità di comando, così:
command> install PortName=COM9 PortName=COM8
CNCA0 PortName=COM9
CNCB0 PortName=COM8
ComDB: COM8 - logged as "in use"
ComDB: COM9 - logged as "in use"
command> busynames COM?*
COM3
COM4
COM5
COM6
COM8
COM9
COMPOSITEBATTERY
Nota: registrato come "in uso" non è un messaggio di errore?
poi cerco di aprire COM8 come questo
m_hIDComDev = CreateFileA(szCodedPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if(m_hIDComDev == NULL || m_hIDComDev == INVALID_HANDLE_VALUE) {
wchar_t * lpMsgBuf;
DWORD dw = ::GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL);
myErrorMsg = (char*)malloc(200);
sprintf(myErrorMsg,"Error creating connection %s (%s) %S",
szPort,szCodedPort,lpMsgBuf);
Questo viene a mancare con
Error creating connection COM8 (COM8) The system cannot find the file specified.
Ho provato sia "COM8" e "\\.\COM8"
.
Si noti che la stessa chiamata a CreateFileA funziona perfettamente su una porta COM "reale".
D: Qualcuno può dirmi qual è il problema?
A: Su Windows 7 64 bit è necessario abilitare il test dei driver non firmati.
Eseguire un prompt dei comandi come amministratore. (Non è appena sufficiente per correre da un account con privilegi di amministratore. Vedere here per i dettagli su come fare questo.)
Digitare il comando
bcdedit -set TESTSIGNING ON
riavvio. (Windows inserirà una nota "modalità test" in basso a destra del desktop)
per Windows 8 questo metodo non funziona in modo soddisfacente o facilmente. Ecco some discussion dei problemi e soluzioni alternative.
In alternativa si potrebbe provare un signed version - NON ho provato da solo.
Mostra 'COM8 - registrato come" in uso "' - è probabile che il tuo problema. –
@Jonathon Reinhart Hai familiarità con com0com? Il messaggio "in uso", secondo i suggerimenti nella documentazione, implica solo che queste porte COM sono state assegnate dal driver com0com e pertanto non verranno assegnate di nuovo.Se il sistema operativo pensava che fossero occupati, mi avrebbe dato un errore diverso. PER QUANTO NE SO! – ravenspoint
"In uso" è normalmente un messaggio di errore. Bello dell'open source, puoi leggere il codice per vedere cosa significa in realtà. –