Cliente TCP

  • 17 Respuestas
  • 12774 Vistas

VictorR

  • Novato
  • *
  • Mensajes: 19
Re: Cliente TCP
« Respuesta #15 : mayo 16, 2013, 16:31:58 pm »
Buenísimo, sigo pendiente!
Gracias y Saludos!

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re: Cliente TCP
« Respuesta #16 : mayo 16, 2013, 20:51:29 pm »
Buenas tardes Victor,

Le dimos soporte de Cliente TCP para Pawn al PLC.

Para utilizarlo debes actualizar:


Adjunto a este post, te dejo un ejemplo completo en Pawn
que podes abrir con StxLadder. El programa configura
el cliente TCP, y dependiendo de la entrada discreta
activada, envía datos o realiza otras acciones.

Muestra a través de eventos los datos recibidos y estado
de transacciones en display LCD.

También te adjunto un programa en Microsoft Visual C# que
te permite crear un servidor TCP en puerto 9999
de la computadora así podes probar el cliente TCP desde
el PLC. Esta el código fuente y el binario.

Para ejecutarlo, fíjate el archivo "TcpTestServer" en carpeta
bin\Release.

En el siguiente post, te paso la documentación preliminar.
« Última Modificación: mayo 17, 2013, 10:04:32 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re: Cliente TCP
« Respuesta #17 : mayo 16, 2013, 20:53:57 pm »
Luego vamos a subir documentación detallada en una nota de
aplicación sobre las nueva interfaz, pero para que puedas
ir utilizando, te paso una breve reseña de las nuevas
funciones del cliente TCP (a modo preliminar).



TcpClInit(ServerIP, ServerPort=9999, Timeout=30)

Inicializa/Configura cliente TCP.

Entradas:

- ServerIP = Direccion IP del servidor.
- ServerPort = Puerto TCP del servidor.
- Timeout = Tiempo para esperar una respuesta del servidor
  en segundos (max. 125). Solo valido si el cliente se conecta
  al server, de otra forma el timeout es de 60 segundos.

Retorno:

- (  0  )  = Operacion exitosa.
- ( -1  )  = Error, Falla en inicializacion.
- ( -10 )  = Error, cliente conectado, desconectar antes.



Las siguientes dos funciones, activan los eventos
para recepcion y transmision.

TcpClSetRxEvent()
TcpClSetTxEvent()


Retorno:

- (  0 )  = Operacion exitosa.
- ( -1 )  = Error, el evento no pudo ser activado.

Hay dos eventos asincronicos:

@OnTcpClientRx() y @OnTcpClientTx(),
podes utilizarlos para obtener los estados de la conexión
o datos recibidos.



TcpClClose()

Cierra la conexion actual.

Retorno:

- (   0  ) = Conexion cerrada con exito.
- (  -1  ) = Error, cliente no conectado.
- (  -2  ) = Error, no hay conexion asignada.
- (  -4  ) = Error, la libreria no fue inicializada.



TcpClSend(Data[], Length=1, Pack=0)

Envia datos al servidor.

Entradas:

- Data[] = Array de valores para enviar.
- Length = Numero de bytes a enviar.
- Pack = Si es 1, los datos estan empaquetados (4 bytes por entero) en el array.

Retorno:

- (   0  ) = Operacion exitosa.
- (  -1  ) = Error, libreria ocupada.
- (  -2  ) = Error, conexion no asignada.
- (  -4  ) = Error, la libreria no fue inicializada.
- (  -10 ) = Error, direccion de array erronea.
- (  -20 ) = Error, valor de Length invalido.



TcpClGetRxLength()

Obtiene la cantidad de datos no leidos y recibidos.

Retorno:

- (  >0  )  = Numero de bytes recibidos.
- (   0  )  = No hay datos sin leer o recibidos.
- (  -1  )  = Error, no hay datos disponibles, comprobar conexion.
- (  -4  )  = Error, la libreria no fue inicializada.



TcpClGetRxData(Data[], Index=0, Max=1, Pack=0)

Obtiene los datos recibidos y no leidos.

Entradas:

- Data[] = Array donde los valores seran copiados.
- Index = Indice del array donde la copia comienza.
- Max = Numero de bytes a copiar (max. 50).
   Si es 0, copia todos los bytes recibidos (asegurar que array
   tiene el tamaño suficiente).
- Pack = Si es 1, los 4 bytes de datos seran empaquetados en cada elemento
   del array.

Retorno:

- (  0  ) = Operacion exitosa.
- ( -1  ) = Error, no hay datos disponibles para copiar.
- ( -2  ) = Valor de Max es invalido.
- ( -4  ) = Direccion de Data es erronea.



TcpClConnect()

Solo se conecta al servidor. No es necesario utilizarla para enviar
datos al servidor con TcpClSend(), ya que el cliente se conecta
automaticamente.

Retorno:

- (   0  ) = Operacion exitosa.
- (  -1  ) = Error, libreria ocupada.
- (  -2  ) = Error, conexion no asignada.
- (  -4  ) = Error, la libreria no fue inicializada.



TcpClGetLibStatus()

Obtiene el estado de la libreria, muy util para determinar si existe
un error en la conexion (en general numeros negativos)

Los posibles valores son:

Código: [Seleccionar]
TCPCL_STAT_TRY_TO_SEND  (127) // Intentando enviar datos.
TCPCL_STAT_LIB_NOT_INIT (126) // Libreria no inicializada.
TCPCL_STAT_INITIALIZED  (124) // La libreria fue inicializada.
TCPCL_STAT_CLOSED       (123) // Conexion cerrada por el cliente.
TCPCL_STAT_SEND_OK      (122) // Datos transmitidos con exito.

TCPCL_STAT_OK           (0)   // Libreria OK/Lista, datos transmitidos.

TCPCL_STAT_ERR_ABORTED  (-1)  // Error, conexion abortada.
TCPCL_STAT_ERR_CONN_TO  (-2)  // Error, conexion timeout.
TCPCL_STAT_ERR_CLOSED   (-3)  // Error, conexion cerrada por el host.
TCPCL_STAT_ERR_TO       (-4)  // Error, timeout en transaccion.
TCPCL_STAT_ERR_ALLOC    (-5)  // Error, no se pudo asignar conexion.
TCPCL_STAT_ERR_FUNC     (-6)  // Error, error interno.


« Última Modificación: mayo 17, 2013, 10:31:50 am por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com