SEND PACKET

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 11 (Modificado)


SEND PACKET ({docRef; }paquete)

ParámetroTipoDescripción
docRefDocRefNúmero de referencia del documento o
canal actual (puerto serial o documento)
paqueteCadena | BLOBCadena o BLOB a enviar

Descripción

El comando SEND PACKET envía un paquete a un puerto serial o a un documento. Si docRef se especifica, el paquete se escribe en el documento referenciado por docRef. Si docRef no se especifica, el paquete se escribe para el puerto serial o documento previamente abierto por el comando SET CHANNEL.

Un paquete es sólo una serie simple de datos, generalmente una cadena de caracteres.

Usted también puede pasar un BLOB en paquete. Esto le permite evitar las restricciones relacionadas con la codificación de los caracteres enviados en modo texto (ver ejemplo 2).

Nota: Cuando usted pasa un BLOB en paquete, el comando no tiene en cuenta ningún conjunto de caracteres definido por el comando USE CHARACTER SET. El BLOB se envía sin ninguna modificación.

Antes de utilizar SEND PACKET, debe abrir un puerto serial o un documento con SET CHANNEL, o abrir un documento con uno de los comandos de gestión de documentos.

Cuando escribe un documento, el primer SEND PACKET comienza a escribir al comienzo del documento a menos que el documento hubiera sido abierto con Append document. Hasta el momento en que el documento se cierra, cada paquete subsiguiente se añade a los paquetes enviados anteriormente.

Nota: Este comando es útil para un documento abierto con SET CHANNEL. Por otra parte, para un documento abierto con Open document, Create document y Append document, usted puede utilizar los comandos Get document position y SET DOCUMENT POSITION para obtener y cambiar la ubicación en el documento donde ocurrirá la próxima escritura (SEND PACKET) o lectura (RECEIVE PACKET).

Importante: En modo no Unicode (modo compatibilidad), SEND PACKET escribe datos ASCII Mac OS en plataformas Windows y Macintosh. Los datos ASCII Mac OS utilizan ocho bits. Los caracteres ASCII estándar sólo utilizan los siete bits inferiores. Muchos ordenadores y periféricos no utilizan los ocho bits de la misma manera que Windows/Macintosh. Si la cadena a enviar contiene datos que utilizan el octavo bit, asegúrese de crear un mapa ASCII para traducir los caracteres ASCII, y ejecutar USE CHARACTER SET antes de utilizar SEND PACKET. También puede utilizar la función Mac to Windows (para mayor información, consulte el ejemplo de esta función). Protocolos como XON/XOFF utilizan ciertos códigos ASCII inferiores para establecer comunicación entre los equipos. Asegúrese de no enviar tales códigos ASCII, ya que podrían interferir con el protocolo o incluso romper la comunicación.

Ejemplos

1. El siguiente ejemplo escribe datos de campos en un documento. Escribe los campos como campos de longitud fija. Si un campo es de longitud menor a la especificada, el campo se llena con espacios. (es decir, se añaden espacios para alcanzar la longitud especificada.) Aunque el uso de campos de longitud fija es un método ineficiente de almacenamiento de datos, algunos sistemas informáticos y ciertas aplicaciones todavía lo utilizan:

   $vhDocRef := Create document ("")  ` Creación de un documento 
   If (OK=1)  ` ¿Se creó el documento? 
      For ($vlRegistro; 1; Records in selection ([Personas]))  ` Bucle para cada registro
            ` Envío de un paquete creado a partir de una cadena de 15 espacios que contiene el campo Nombre 
         SEND PACKET ($vhDocRef; Change string(15 * Char(Space); [Personas]Nombre;1))
            ` Envío de un segundo paquete creado a partir de una cadena de 15 espacios que contiene el campo Apellido 
            ` Este podría estar en el primer SEND PACKET, pero se separa por claridad 
         SEND PACKET ($vhDocRef; Change string (15 * Char(Space); [Personas]Apellido; 1)) 
         NEXT RECORD([Personas]) 
      End for
         ` Envío de Char(26), utilizado como marcador de fin de registro por algunos ordenadores 
      SEND PACKET ($vhDocRef; Char(SUB ASCII Code))
      CLOSE DOCUMENT ($vhDocRef)  ` Cierre del documento
   End if

2. Este ejemplo ilustra el envío y recuperación de caracteres extendidos vía un BLOB en un documento:

   C_BLOB($enviar_blob)
   C_BLOB($recibir_blob)
   TEXT TO BLOB("âzértÿ";$enviar_blob;UTF8 Text without length)
   SET BLOB SIZE($enviar_blob;16;255)
   $enviar_blob{6}:=0
   $enviar_blob{7}:=1
   $enviar_blob{8}:=2
   $enviar_blob{9}:=3
   $enviar_blob{10}:=0
   $vlDocRef:=Create document("blob.test") 
   If (OK=1) 
      SEND PACKET($vlDocRef;$enviar_blob)
      CLOSE DOCUMENT($vlDocRef)
   End if
   $vlDocRef:
=
Open document(document)
   If (OK=1)
      RECEIVE PACKET($vlDocRef;$recibir_blob;65536)
      CLOSE DOCUMENT($vlDocRef)
   End if

Ver también

Get document position, RECEIVE PACKET, SET DOCUMENT POSITION.


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente