/* Esta funcion maneja el overhead asociado al envio de comandos al dispositivo * CSP (Interrogation, Read Barcodes, Clear Barcodes, etc). */ int Csp32Bridge::cspSendCommand (char *aCommand, int nMaxLength) { int i; // Aseguremonos que tenemos un puerto seleccionado valido if (nCspActivePort < COM1) return( COMMUNICATIONS_ERROR ); // Un tiempo antes de enviar el mensaje Sleep ( 120 ); // Limpiemos la cola de recepcion while (SioGetc(nCspActivePort) >= 0); // Enviemos el string con el comando for ( i = 0; i < nMaxLength; i++) { SioPutc(nCspActivePort, aCommand[i]); } // Esperemos la respuesta nCspDeviceStatus = cspGetc(); aByteBuffer[0] = (char) nCspDeviceStatus; // Conversion del estado del dispositivo a los estados definidos en el .h nCspDeviceStatus *= -1; // Si no hay una respuesta, retornemos un error if ( nCspDeviceStatus > 0 ) return( COMMUNICATIONS_ERROR ); if ( nCspDeviceStatus != NO_ERROR_ENCOUNTERED ) return ( nCspDeviceStatus ); else return ( STATUS_OK ); }
void Revolver::TxByte(unsigned char v) { SioPutc(m_RPF_parameters.com, v); }
/* 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); }