Desarrollo de un Software para un escaner

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 por los distintos protocolos por existir 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);

NOTA: Para Mantener la comunicacion es necesario estar intercambiando paquetes de 7 a 12 bytes cada uno en una cadencia de 200 a 500 mseg para que no se rompa la comunicacion entre la UCE y el Ordenador.
COMUNICACION CON LA UCE: 7º.- Leer los Codigos(bytes) de la UCE
ReadFile(hFile,pData,iLen,pdwRead,lpOverlapped)) Ejemplo: pData=0x55;
8º.- Enviar Codigos(bytes) a la UCE
WriteFile(hFile,pData,iLen,pdwWritten,lpOverlapped)); WriteFile(hFile,$F0,iLen,pdwWritten,lpOverlapped)); WriteFile(hFile,$55,iLen,pdwWritten,lpOverlapped)); WriteFile(hFile,$BB,iLen,pdwWritten,lpOverlapped));
.........sigue rutina de programación similar que omitimos. Los datos que se envian y reciben de la UCE dependerá del tipo de UCE según tipo de Inyección.
***Para conocer los Códigos que envían los SCANNER de las Marcas a la UCE, se pone un ANALIZADOR FLUJO DE DATOS/OSCILOSCOPIO en paralelo al Scanner de la Marca y ya se sabe la SECUENCIA de datos enviados (03,FC,44,BB,09,F6,03 etc). Esta es la "sofisticada" Técnica

NOTA: La forma de terminar la comunicacion suele ser comun en todos los Protocolos.
FINAL: 9º.- Enviar los datos pendientes de la UCE al Puerto Serie (buffer)
FlushFileBuffers(hFile) EscapeCommFunction(hFile, SETDTR)
10º.- Cerrar el puerto serie
closeHandle(hFile);
*Este "misterioso" SOFTWARE se GUARDÓ con mucho CELO. A partir de ahora lo DUDAMOS porque los CLIENTES comprenderán la "sofisticada" TÉCNICA.


Alfa Romeo 1; Esquema Circuitos Corriente Inyección Motor
El Esquema del ALFA ROMEO 145 1.3 de la figura representa los distintos COMPONENTES del Sistema de Inyección Magneti Marelli. Los Scanner sólo son capaces de VERIFICAR parte de los mismos, con ESCASA fiabilidad.