Software para un Scanner

Los pasos a seguir por un Programa (Software) para todo tipo de Scanner los detalla a continuación AUTOXUGA. Sólo debe tenerse en cuenta la Asignación de Velocidad al Puerto Serie que dependerá de la UCE que tenga el Coche ya que puede necesitar 250; 1200; 2400; 4800; 9600; 10400; 19200; 38400; 57600; 64200 etc. Baudios

COMIENZO: Lo 1º que se hace es ABRIR el Puerto Serie del Ordenador
hFile=CreateFile(lpszDevice, GENERIC_READ|GENERIC_WRITE,0,0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED,0);
2º.- Inicializacion del Puerto Serie
GetCommTimeouts(hFile,&cto); cto.ReadIntervalTimeout = MAXDWORD; cto.ReadTotalTimeoutConstant = 0; cto.ReadTotalTimeoutMultiplier = 0; SetCommTimeouts(hFile,&cto)); GetCommState(hFile,&dcb); dcb.fBinary=TRUE; dcb.fParity=FALSE; dcb.fDsrSensitivity=FALSE; dcb.fNull=FALSE; dcb.fAbortOnError=FALSE; dcb.fOutxCtsFlow=false; dcb.fOutxDsrFlow=false; dcb.fDtrControl=DTR_CONTROL_ENABLE; dcb.fOutX=false; dcb.fInX=false; dcb.fRtsControl=RTS_CONTROL_ENABLE; SetCommState(hFile,&dcb); PurgeComm(hFile, PURGE_TXCLEAR | PURGE_RXCLEAR);
NOTA: Segun el Protocolo que utilice el Coche o la UCE: ISO 9141, 9141-2, 14230, OBD I, OBD II, EOBD, VAG, VPW, PWM, CAN, LIN, etc. la velocidad (baudios) de inicializacion de la UCE sera distinta. El resto del Software es el utilizado para ISO 9141.
Por confidencialidad omitimos el contenido de los 10 a 30 paquetes (bytes) similares a: 03FC44BB09F603 utilizados en los distintos protocolos porque existin muchas empresas dedicadas unicamente al desarrollo de SCANNERs.
3º.- Asignación de 5 baudios al Puerto Serie
(GetCommState(hFile,&dcb)){ dcb.BaudRate = DWORD(5); dcb.ByteSize = BYTE(8); dcb.Parity = BYTE(NOPARITY); dcb.StopBits = BYTE(ONESTOPBIT); } SetCommState(hFile,&dcb);
4º.- Enviar la direccion de la UCE al Puerto Serie(depende del Protocolo usado y si tiene linea L o no, si tiene linea L, se envia la direccion por las dos lineas, y la linea L ya no intervendrá más)
5º.- Se espera unos 2000 miliseg para que responda la UCE(en algunas varían los miliseg)
tiempo1=Gettickcount; repeat tiempo=Gettickcount-tiempo; until tiempo=2005;
6º.- Se asignan 10400 Baudios al Puerto Serie (dependerá del tipo de UCE; UCEs antiguas velocidad menor comprendida entre los 240 y los 1200 baudios; UCEs mas modernas sobre 10400)
if (GetCommState(hFile,&dcb)){ dcb.BaudRate = DWORD(10400); dcb.ByteSize = BYTE(8); dcb.Parity = BYTE(NOPARITY); dcb.StopBits = BYTE(ONESTOPBIT); } SetCommState(hFile,&dcb);
SIGUE...