Hola a todos.
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;
}