/* Esta funcion trata de cerrar cualquier conexion anteriormente abierta */ int Csp32Bridge::cspRestore() { int nRetStatus = COMMUNICATIONS_ERROR; // are we attempting to close a valid port? if (nCspActivePort >= COM1) { // close any previously opened ports... nRetStatus = SioDone(nCspActivePort); } // initialize the dll interface... cspInitParms(); // return status... if (nRetStatus < 0) return (COMMUNICATIONS_ERROR); else return (STATUS_OK); }
Revolver::~Revolver() { SioDone(m_RPF_parameters.com); }
/* Esta funcion obtiene informacion referente al puerto COM especificado en la clase */ int Csp32Bridge::cspGetCommInfo(int nComPort) { DWORD TimeMark; // Usado para medir el delay de tiempo int i; // Data leida del puerto serial/modem int portType; // SERIAL_RS232 | SERIAL_MODEM si el puerto es valido int Next; // indice para un arreglo char *Expect; // Un puntero a los datos esperados portType = SERIAL_RS232; // Esto asume que estamos en un puerto RS232 valido Expect = "OK"; // Esperemos un "OK" si todo va bien Next = 0; // Indice para Expect[] // Veamos si podemos acceder al puerto if ( SioReset(nComPort, RX_QUE_SIZE, TX_QUE_SIZE) < 0) return( SioWinError(NULL, 0)); // El puerto no es accesible, reportemos el problem // Establescamos las lineas de control RTS y CTS SioDTR(nComPort,'S'); SioRTS(nComPort,'S'); // Enviemos un retorno de acarreo para inicializar el puerto... SioPutc(nComPort,'\r'); // Si esto es un modem, deberia especificar un puerto DSRs if (SioDSR(nComPort) != 0) { /* Un conector DSR envolvente tambien deberia configurar un DSR, asi que debemos verificar * el "modem", enviemosle un comando AT*/ SioPutc(nComPort,'\r'); Sleep(250); // Dejemos que otras cosas corran SioPutc(nComPort,'A'); Sleep(250); // Dejemos que otras cosas corran SioPutc(nComPort,'T'); Sleep(250); // Dejemos que otras cosas corran SioPutc(nComPort,'\r'); // Si esto es un modem, deberiamos recibir un OK Next = 0; TimeMark = SioTimer() + 2000; while (SioTimer() < TimeMark) { // Leamos cualquier dato de entrada del puerto serial... i = SioGetc(nComPort); if (i > -1) { // Ok, tenemos un caracter, ahora a compararlo con la respuesta esperada... if ((char)i == Expect[Next]) { Next++; if (Next == 2) { portType = SERIAL_MODEM; break; } } } } // Fin del while (Era necesario comentarlo?) } // Liberemos el puerto ahora que tenemos la informacion SioDone(nComPort); // Y reportemos que tipo de dispositivo tenemos en frente return (portType); }