Estoy desarrollando una aplicación en C# usando una API ya hecha. Esta API tiene una función que permite "emular" un puerto serie, y necesito usarlo. El problema es que no puedo abrirlo, explico el error:
Primero creo el puerto serie virtual. Para comprobar que está funcionando escribo algo con el HyperTerminal, y todo va bien.
Luego, en el código, creo el puerto serie:
SerialPort ^sp=gcnew SerialPort("COM5",9600,Parity::None,8,StopBits::On e);
Esto no lanza excepción.
Cuando intento hacer sp->Open();, este si lanza excepción, y el mensaje es: "El parámetro no es correcto".
He probado a hacer esto mismo pero sin emular el puerto serie, en este caso al hacer Open() el mensaje de la excepción es: "El puerto 'COM5' no existe".
Con esto quiero decir que el programa si que detecta el puerto serie.
He probado a poner a true el DtrEnable y el RtsEnable, y nada.
¿Alguien sabe cuál es el fallo?
Gracias, saludos.
PD.: Adjunto el código:
Código:
int main(){ FrameLinkCamThread ^cam=nullptr; SerialPort ^sp=nullptr; try{ if(AllocConsole()){ SerialPort ^sp=gcnew SerialPort("COM5",9600,Parity::None,8,StopBits::One); sp->Open(); }else{ Console::WriteLine("AllocConsole() Error"); } }catch(InvalidOperationException ^ioe){ //Sacar por pantalla... }catch(IO::IOException ^io){ //Sacar por pantalla... }catch(ArgumentException ^ae){ Console::WriteLine(ae->Message); }catch(NullReferenceException ^io){ //Sacar por pantalla... } finally{ if(cam!=nullptr){ cam->destroyInstance(); } if(sp!=nullptr && sp->IsOpen) sp->Close(); Console::WriteLine("Press any key..."); Console::ReadLine(); FreeConsole(); } return 0; }