He probado la versión 0.3, que me permite por fin
operar contra DS200 (y por tanto, la comodidad de
hacer las pruebas en casa). He aquí dos pequeños
problemas:
- DSRouter no registra en el log, ni hace broadcast
del Inicio de Pausa, Fin de Pausa ni de la pulsación
del GO que aborta la carrera. En el log hay una
entrada en blanco para estos eventos, con fecha y hora
solamente. Las he comentado dentro del mismo log.
Están hacia el final del archivo.
- Hay un mensaje de error recurrente (SendData -
IOException = 'Unable to write data to the transport
connection.' en socket ..), que corresponde a la
siguiente circunstancia (sobre programa en VBasic, con
Winsock). El winsock cliente ha sido cerrado
(Winsock.Close), el programa ha terminado su
ejecución, el programa se ha vuelto a reiniciar y el
winsock cliente se ha conectado con DSRouter A TRAVES
DE OTRO LOCALPORT. La razón de cambiar el LocalPort es
porque rara vez o ninguna la conexión se produce
reutilizando el mismo LocalPort de la conexión
anterior. (Quizás no utilizo el procedimiento adecuado
para retomar la conexión)
A pesar del mensaje de error en el log, la conexión
establecida funciona correctamente CASI SIEMPRE. En
una ocasión, los datos no llegaron, y eso fue lo que
me llevó a fijarme en el error en el log.
La conexión la realizo mediante el siguiente bucle:
Winsock1.RemoteHost = Winsock1.LocalIP
Winsock1.RemotePort = 7000
Winsock1.LocalPort = 7001
On Error Resume Next
While Winsock1.State <> sckConnected
Winsock1.Close
Winsock1.Connect
pausa = Timer
While Winsock1.State = sckConnecting And
(pausa + 3) > Timer
DoEvents
Wend
If Winsock1.State = sckConnected Then
MsgBox ("Conectado por el Puerto " + Format
(Winsock1.LocalPort))
Else
resp = MsgBox("No hay conexión con
DSRouter por el puerto " + Format(Winsock1.LocalPort),
vbOKCancel)
If resp <> vbOK Then
Unload Me
Exit Sub
End If
Winsock1.Close
Winsock1.LocalPort = Winsock1.LocalPort + 1
End If
Wend
Log de pruebas
Logged In: NO
El tema del LocalPort es mucho menos crítico sobre Windows
2000 (el s.o. del PC del club). Prácticamente, la conexión
al DSRouter funcionó a la primera casi siempre reutilizando
el mismo puerto de la conexión anterior, y en algunos casos
a la segunda, reutilizando un segundo puerto. Cuando la
conexión fue rechazada, sobre Windows 2000, hubo un evento
de error en el control Winsock. En Windows 98 (lo siento,
ser tan antiguo) no hubo en ningún caso evento de error.
Muy fiable el funcionamiento del DSRouter. Varias horas de
funcionamiento, sin problemas, con varios coches en la
pista. Rápido: el programa cliente registraba el paso de los
coches instantáneamente, sin demoras.
Registrar los eventos de Inicio y Fin de Pausa, y el de
Carrera Abortada, me parece imprescindible.
Logged In: YES
user_id=1469844
Los comandos de Pausa y de carrera abortada no estan
implementados en el proctocolo. Me pondre con ello lo antes
posible.
Sobre lo segundo que comentas lo probare para detectar el
problema.
Muchas gracias! Te mantendre informado de todo
Un saludo
Roberto