Terminales Sin Cables X64


Interconexión XRML




Programa de Terminal XRML



Funciones Generales

Funciones de Input / Output (T_Read)

Funciones de Listas

Funciones de Variables

Funciones de Goto



Todas las Funciones están definidas en la DLL 'RIOCOM.DLL'. La DLL tiene que ser incorporada en el lenguaje de programación utilizado. Los ejemplos en 'Descargar' están en VB. Puede utilizarse el emulador para poner en funcionamiento los ejemplos sin tener que recurrir al hardware externo.

El XRML funciona con pantallas que se envían al terminal. Puede compararse con el HTML en la medida en que el terminal pide al PC una pantalla y el PC la envía. Con todo, cuando el terminal pide una pantalla al PC éste puede mandar la pantalla solicitada u otras, por ejemplo, en situaciones de error.
Las pantallas que el PC envía pueden tener una validez temporal, o sea, puedo enviar una pantalla al terminal que va a ser válido por 10 segundos o para siempre.
Para que el terminal envíe datos al PC, envía la pantalla de vuelta al PC. El programa del PC debe correr exactamente el mismo código que se usó para generar esa pantalla y la DLL actualiza las variables.

Vamos a ver ahora cómo funciona el programa. El Timer está continuamente sondeando si hay información que la antena quiera comunicar a la aplicación. El diagrama resume la parte importante de este proceso.

DIAGRMA1


Entonces, si algo ocurre, vemos que tenemos dos opciones: recibir una pantalla del terminal o que nos pregunte por ella.

Si recibe, el procedimiento es el siguiente:

procedure TForm1.ReceiveScreen(TerminalID,ScrName:String);
begin
  T_RefreshScreen(TerminalId, ScrName);
  DoScreen(ScrName);
//AQUÍ TIENE LA INFORMACIÓN EN EL ORDENADOR CENTRAL, A PARTIR DE AQUÍ SU APLICACIÓN DEBE UTILIZARLA COMO NECESITE
end;

Este proceso actualiza las variables del PC con las introducidas en el terminal. Después de un refresh, debe crearse la pantalla en cuestión para disponer de las variables en el PC, por tanto DoScreen. Aquí ya tiene la información. En este punto
acabaría esta llamada del TIMER.

La otra opción sería un AskScreen. Primero debemos saber cuádo se producen y cómo. Las posibilidades son muchas; en general, todas aquellas funciones que tienen como parámetro el nombre de una pantalla producen un AskScreen.
Otra situación es cuando el terminal hace un reset y pulsa una tecla, la pantalla por la que pregunta es siempre por defecto 'START'. El PC entonces puede enviarle pantallas (las que quiera) y las envía como no ejecutables (en la función T_InitScreen con flags distintas de scr_flag_execute) y la última como ejecutable (scr_flag_execute).
En este momento el terminal empieza a funcionar como off-line y con la funcionalidad programada.

Las otras situaciones funcionan de forma análoga a este ejemplo:
En el procedimiento DoScreen se diseñan las pantallas, por tanto aquí las posibilidades son muchas. En este ejemplo:

procedure TForm1.DoScreen(ScrName:String);
begin
if Pchar(ScrName)='LE REF'
 then
  begin

   T_Say('>');
   T_GetText(barcode,10,GetText_flag_Barcode + GetText_flag_ExitEnter);
   T_NewLine;
   T_PrintString('>');
   T_PrintString(Description);

   T_Beep(50,50);
   T_Read;
   T_SendScreenToPc('LE REF', scr_flag_update_pc_now + scr_flag_auto_destroy );
   T_GotoScreen('LE REF');
  end;
end;

Aquí hay muchas cosas que necesitan de análisis pero la última función (T_GotoScree) le dice al terminal que vaya a la pantalla LE REF. Lo que ocurre es que el terminal llamará a esta pantalla, que en este caso es ella misma. Aquí se produce un AskScreen porque se había destruído con la scr_flag_auto_destroy y tiene que cargarla de nuevo. Puede que la pantalla a la que el programa le dice que vaya esté en memoria, por lo tanto no hará falta que ocurra un AskScreen. También pueden enviarse el número de pantallas que el diseñador de la aplicación estime necesarias

Sólo falta saber qué pasa cuando ocurre un AskScreen.
La mayoría de los programas siguen esta secuencia:
-SE INICIALIZAN O DAN VALOR A LAS VARIABLES A LAS QUE SE HACE REFERENCIA EN ESA PANTALLA Y SE HACE UN T_InitScreen.
-SE CREA LA PANTALLA (DoScreen)
-SE ENVÍA T_SendScreen.

Ésta es la forma habitual que toma AskScreen.






Funciones Generales


InitializeComm
int __stdcall InitializeComm(int ComPort,int BaudRate);

Abre el Puerto Serie a las comunicaciones e inicia las comunicaciones.
ComPort debe ser 1,2,3...
BaudRate debe ser 9600,19200,38400

Si el ComPort fuera 0 entonces se busca automáticamente un ComPort con la base conectada. En esta situación, la función vuelve a 0 si no encuentra la base o el número del ComPort Abierto.


TerminateComm
void __stdcall TerminateComm(int ComPort);

Cierra el puerto.


T_ResetComunications
int __stdcall T_ResetComunications();

Este comando permite que un terminal restablezca la comunicación con el PC después de salir y entrar en la aplicación del PC.

Normalmente, después de romperse las comunicaciones es preciso pulsar el botón de reset del terminal.

Para utilizar este comando es obligatorio que el programa en el PC al salir tenga la acción T_SaveScreens y al reiniciar, T_LoadScreens.

Si no se tienen estas dos acciones, T_SaveScreens y T_LoadScreens, el programa se bloquea.


T_SaveScreens
int __stdcall T_SaveScreens(char *filename)

Mientras la DLL comunica con los terminales, va manteniendo en memoria una copia de la memoria de los terminales para poder optimizar las comunicaciones.

Los terminales, al comunicar con el PC, sólo transmiten cambios a las pantallas.

Esta función guarda en el disco el estado de la memoria de los terminales.


T_LoadScreens
int __stdcall T_LoadScreens(char *filename)

Mientras la DLL comunica con los terminales, va manteniendo en la memoria una copia de la memoria de los terminales para poder optimizar las comunicaciones.

Los terminales, al comunicar con el PC, sólo transmiten variaciones a las pantallas.

Esta función lee desde el disco el estado de la memoria de los terminales.


T_SaveComunicationStatus
int __stdcall T_SaveComunicationStatus( char *filename)
Mientras la DLL comunica con los terminales, va manteniendo en memoria una copia de la memoria de los terminales para poder optimizar las comunicaciones.

Esta función guarda en el disco el estado de la memoria de los terminales referida a las comunicaciones.

El uso de esta función evita tener que pulsar T_ResetComunications si el PC fue desconectado.


T_LoadComunicationStatus
int __stdcall T_LoadComunicationStatus( char *filename)
Mientras la DLL comunica con los terminales, va manteniendo en memoria una copia de la memoria de los terminales para poder optimizar las comunicaciones.

Esta función lee del disco el estado de la memoria de los terminales referida a las comunicaciones.

El uso de esta función evita tener que elegir T_ResetComunications si el PC fue desconectado.


T_InitScreen
int __stdcall T_InitScreen(char *TerminalId,char *ScreenName,int ScreenFlags,int ScreenCursor,int ScreenValidate);

char *TerminalId
Indicador para el nombre del terminal. El nombre debe estar compuesto por: XXXXXXDD, donde XXXXXX en una instalación debe ser igual y el DD debe ser diferente. Ejemplo: "TESTE 01","TESTE 02"

char *ScreenName
Indicador para el nombre de la pantalla.
El nombre de la pantalla puede tener cualquier tamaño.

char *ScreenFlags

int ScreenCursor
Posición inicial del cursor en la pantalla. Contabiliza el número de Gets...() realizados.

Int ScreenValidate
Segundo en que la Pantalla pierde validez. El segundo actual puede calcularse con: ((Date - 35065) + Time) * 24 * 60 * 60 em VB


T_SendScreen
int __stdcall T_SendScreen();

Envía la pantalla actual hacia el Terminal. El envío debe ser efectuado depués de realizar un T_InitScreen.
Envía la pantalla del PC al TERMINAL.



T_RefreshScreen
int __stdcall T_RefreshScreen(char *TerminalId,char *ScreenName);

Siempre que se recibe una pantalla del terminal se deben actulizar nuestras variables en el PC. Para eso, se debe seleccionar T_RefreshScreen seguido del mismo código que fue utilizado para crear una pantalla.


T_SetLcdLightPower
int __stdcall T_SetLcdLightPower(char state);

Conecta o desconecta la iluminación del Display.


T_SetSeconds
int __stdcall T_SetSeconds(int seconds);

en VB para ajustar el reloj del terminal puede ser:
T_SetSeconds ((Date - 35065) + Time) * 24 * 60 * 60


T_SetLaserParameter
int __stdcall T_SetLaserParameter(int parameter,int value);

Configura el Láser.

T_Beep
int __stdcall T_Beep(int duration,int periodo);

Realiza un pitido en el Terminal.


T_SendScreenToPc
int __stdcall T_SendScreenToPc(char *ScreenName,int scr_flags);

Envía la Pantalla a un buffer que será enviado al PC.

ScreenName, Nombre de la pantalla que se envía.
scr_flags, Modifica todas las flags de esta pantalla

Este comando utiliza las siguientes flags:

#define scr_flag_update_pc_if_possible 4
El terminal envía esta pantalla por radio al PC pero sólo lo intenta una vez.
Si no consigue enviarla, guarda los datos en un buffer interno y los envía cuando sea posible.

#define scr_flag_update_pc_now 8
El terminal envía esta pantalla por radio al PC, intenta siempre.
Si no consigue enviarla, la pantalla queda bloqueada hasta estar en una zona con cobertura.

#define scr_flag_update_pc_later 16
El terminal envía esta pantalla por radio al PC, pero no ahora.
Pone los datos en el buffer de envío pero no intenta enviarlos.


T_SendScreenToNull
int __stdcall T_SendScreenToNull(char *ScreenName,int scr_flags);

Este comando es idéntico al anterior, pero no pone nada en el buffer.

Envía la pantalla para Null. Su uso es importante si se quiere por ejemplo cancelar el envío de una pantalla.
Se debe usar combinado con la flag scr_flag_restore_fields_after_send

T_ChangeUpsideDown
int __stdcall T_ChangeUpsideDown(char flag);

Invierte el display. No funciona en el emulador.


T_PrintString
int __stdcall T_PrintString(char *txt);

Imprime una string (secuencia) en la pantalla en la posición actual del cursor.

T_PrintLarge
int __stdcall T_PrintLarge(char *txt);

Imprime una string (secuencia) en la pantalla en la posición actual del cursor.
Fuente de tamaño grande.

T_Print_Inverse

int __stdcall T_PrintInverse(char *txt);


Imprime centrado en Inverso Vídeo.

T_NewLine
int __stdcall T_NewLine();

Cambia de Línea

T_Cls
int __stdcall T_Cls();

Borra la pantalla
T_WaitChar
char __stdcall T_WaitChar();

Retorna a la tecla presionada.


T_Delay
int __stdcall T_Delay(int miliseconds);


El Terminal queda parado. Esto es útil para mostrar una pantalla de resultado sin obligar a presionar una tecla.
T_CheckIfReceiveData
int __stdcall T_CheckIfReceiveData(char *TerminalId,char *Screen_Name,char *DataType,int *RawDataSize,char *RawData)

Periódicamente, se debe verificar si tenemos datos nuevos.

#define data_type_send_screen_zipped 1
#define data_type_ask_screen 2
#define data_type_reset 3
#define data_type_send_screen_unzipped 4
#define data_type_softreset 5
#define data_type_send_CAddress 6
#define data_type_send_raw_data 7

Para el programador las opciones screen zipped y screen unzipped son lo mismo.
Cuando el terminal pide una pantalla es porque no la tiene en la memoria y la necesita.
Reset es cuando se realiza un reset en el terminal.

Ejemplo en VB:

Private Sub Timer1_Timer()
Dim TerminalId As String
Dim ScreenName As String
Dim DataType As Byte
TerminalId = Space(8)
ScreenName = Space(50)
Do While T_CheckIfReceiveData(TerminalId, ScreenName, DataType)
ScreenName = Trim(ScreenName)
If Len(ScreenName) > 0 Then
ScreenName = Left(ScreenName, Len(ScreenName) - 1)
End If
Select Case DataType
Case data_type_reset
' Reset (TerminalId)
Case data_type_send_screen_zipped
ReceiveScreen TerminalId, ScreenName
Case data_type_send_screen_unzipped
ReceiveScreen TerminalId, ScreenName
Case data_type_ask_screen
AskScreen TerminalId, ScreenName
End Select
ScreenName = Space(50)
Loop
End Sub

Al guardar el programa en la EEPROM en realidad se está grabando el programa en un archivo eeprom.bin.


Puede ser utilizado con el DevKit para recibir un programa compilado que se envíe al puerto serie.


Varios emuladores pueden funcionar al mismo tiempo si tienen el Terminal Id con nombres diferentes.


T_SetFunctionKeys
int __stdcall T_SetFunctionKeys(char *txt)

Este comando define las teclas de función que después van a ser visualizadas con la flag GetText_flag_ForceFunctionKeys.
Parámetros: char *txt
String (secuencia) de cuatro caracteres, siendo F1,F2,F3 y F4. Por ejemplo, si la función se llama T_SetFunctionKeys("1234"); se define F1='1', F2='2', F3='3', F4='4'. Esta función debe ser utilizada combinada con las funciones T_OnF1GotoScreen, T_OnF2GotoScreen...


T_ChangeScreenFormat
int __stdcall T_ChangeScreenFormat(int ScreenFormat)

Este comando define el tipo de fuente usado en todas las pantallas.

Línea 1 --> (Letra grande ) +1
Línea 2 --> (Letra grande ) +2
Línea 3 --> (Letra grande ) +4
Línea 4 --> (Letra grande ) +8
etc

Por ejemplo para una pantalla que tenga todo con letra pequeña:
T_ChangeScreenFormat(0)

Si queremos que la línea 1 y la línea 4 tengan letra más grande, crearemos el comando:
T_ChangeScreenFormat(1+8)


T_DefineMultipleBases
int __stdcall T_DefineMultipleBases(int position,char *txt,char *base_name)

Permite que el terminal, después de arrancar pregunte a qué base debe conectarse. Puede tener interés para usar el mismo terminal con programas diferentes o con PC diferentes.

El base_name debe ser el nombre de la base, por ejemplo 'BAS00'(nombre de la base por defecto).




Funciones de Goto


T_GotoScreen
int __stdcall T_GotoScreen(char *ScreenName);

Cuando se ejecuta este comando, el Terminal se traslada a la pantalla "ScreenName"


T_OnEscapeGotoScreen
int __stdcall T_OnEscapeGotoScreen(char *ScreenName);

Cuando el usuario pulsa la tecla Esc, el terminal va a la pantalla "ScreenName"


T_OnF1GotoScreen
int __stdcall T_OnF1GotoScreen(char *ScreenName);

Cuando el utilizador presione la tecla F1, el terminal va a la pantalla "ScreenName"
Las teclas de función se deben definir con la función "T_SetFunctionKeys" y activarse en un campo de input con text_flag GetText_flag_ForceFunctionKeys.


T_OnF2GotoScreen
int __stdcall T_OnF2GotoScreen(char *ScreenName);

Cuando el utilizador presione la tecla F2, el terminal va a la pantalla "ScreenName"
Las teclas de la función deben definirse con la función "T_SetFunctionKeys" y activarse en un campo de input con text_flag GetText_flag_ForceFunctionKeys.



T_OnF3GotoScreen
int __stdcall T_OnF3GotoScreen(char *ScreenName);

Cuando el usuario presiona la tecla F3 el terminal va a la pantalla "ScreenName.
Las teclas de función deben ser definidas con la función "T_SetFunctionKeys" y activadas en un campo de input con text_flag GetText_flag_ForceFunctionKeys.



T_OnF4GotoScreen
int __stdcall T_OnF4GotoScreen(char *ScreenName);

Cuando el usuario presiona la tecla F4, el terminal va a la pantalla "ScreenName"
Las teclas de función deben definirse con la función "T_SetFunctionKeys" y activarse en un campo de input con text_flag GetText_flag_ForceFunctionKeys.




T_IfVar1EqVar2Goto
int __stdcall T_IfVar1EqVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);

Si el contenido de la variable1 = variable2, el terminal va a la pantalla "ScreenName"



T_IfVar1GreaterVar2Goto
int __stdcall T_IfVar1GreaterVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);

Si el contenido de la variable1 > variable2 el terminal va a la pantalla "ScreenName"



T_IfVar1LessVar2Goto
int __stdcall T_IfVar1LessVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);


T_IfVar1NotEqVar2Goto
int __stdcall T_IfVar1NotEqVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);

Si el contenido de la variable1 <> variable2 el terminal va a la pantalla "ScreenName"







Funciones de Browse



Las siguientes funciones deben utilizarse combinadas y terminadas con la función T_Read

T_Read
int __stdcall T_Read();

Esta función es equivalente a la ya antigua función de read del clipper.
Después de una serie de T_Say y T_Get... se debe terminar con un T_Read.
El Terminal, cuando ejecuta un T_Read para y da al usuario la posibilidad de editar los campos de input.
Para salir del T_Read se debe pulsar ESC o entonces uno de los T_Gets debe ser el T_GetCheckEnter.

Esta función vuelve a la línea en que se salió del Read.

T_Say

int __stdcall T_Say(char *txt);

Se debe utilizar combinado con T_Get... y T_Read.
Al pulsar T_Read, el cursor se posiciona en el texto del T_Say, y permite ejecutar el T_Get...

T_NoSay
int __stdcall T_NoSay(unsigned char size);

Se debe utilizar en conjunto con T_Get... y T_Read.
Debe usarse cuando se quiere que el cursor permanezca encima del campo de input con un tamaño (size).


T_Scroll
int __stdcall T_Scroll(char *txt_fix,char *txt_rot);

Se debe utilizar combinado con T_Get... y T_Read.
Imprime el txt_fix y si el cursor estuviera encima ejecuta el txt_rot.



Las siguientes funciones deben usarse combinadas y terminadas con la función T_Read

T_GetText
int __stdcall T_GetText(char *txt,int size,int flags);

'txt' debe ser un indicador para una zona de memoria libre para recibir el texto con el tamaño 'size'.
En VB se debe declarar una variable tipo string (secuencia) y enseguida se inicializa con espacios. Para que la DLL interprete que la string está vacía, se debe comenzar con chr(0) como en el ejemplo anterior.

T_GetTextTemplate
int __stdcall T_GetTextTemplate(char *txt,char *templates,int flags)

'txt' debe ser un indicador para una zona libre para recibir el texto con el tamaño strlen (template).

En VB se debe declarar una variable tipo string y enseguida se inicializa con espacios. Para que la DLL interprete que la secuencia está vacía se debe comenzar con chr(0) como en el ejemplo anterior.

En el campo template se debe crear una máscara con los caracteres válidos.
Ejemplo:

T_Say "5 Alpha :"
T_GetTextTemplate barcode, "%%%%%", GetText_flag_Barcode
T_NewLine

T_Say "5 Alpha/Num :"
T_GetTextTemplate barcode, "@@@@@", GetText_flag_Barcode
T_NewLine

T_Say "5 Num :"
T_GetTextTemplate barcode, "#####", GetText_flag_Barcode
T_NewLine

T_Say "5 Q+4 :"
T_GetTextTemplate barcode, "Q###", GetText_flag_Barcode
T_NewLine



T_GetTextFromList
int __stdcall T_GetTextFromList(int *number,int size,char *ScreenName);

T_GetNumerical
int __stdcall T_GetNumerical(int *Number,int size,int flags);

Equivalente al GetText pero recibe un int de 32 bits en vez de una string.
Size es el tamaño del campo de input.

T_GetLink
int __stdcall T_GetLink(char *ScreenName,int Value,char FastKey);

Cuando se pulsa enter en esta opción la pantalla se llama "ScreenName".
Si se pulsa una FastKey el cursor se mueve al GetLink equivalente y llama la pantalla "ScreenName"

Ejemplo 2.


T_GetCheckEnter
int __stdcall T_GetCheckEnter();

Debe ser utilizado con T_Say.
Exp.
T_Say "OK"
T_GetCheckEnter

Hace, con el cursor en OK y la tecla Enter presionada, que se abandone la pantalla.


T_GetEditDate
int __stdcall T_GetEditDate();


Permite al utilizador alterar la fecha del terminal.



T_GetEditTime
int __stdcall T_GetEditTime();

Permite al utilizador cambiar la hora del terminal.

T_GetOption
int __stdcall T_GetOption(int *position,char *List,int LenList,int NumberOfElements);

Esta opción permite seleccionar un elemento de una lista. Por ejemplo, un'Yes' o 'No'.

T_GetOptionGotoScreen
int __stdcall T_GetOptionGotoScreen(int *position,char *List,int LenList,int NumberOfElements,char *ScreenList);

Esta opción permite seleccionar un elemento de una lista y saltar a una pantalla de acuerdo con el elemento seleccionado. Los elementos de la lista se deben separar por el Chr(0), así como los elementos de las pantallas.

Ejemplo:
T_GetOptionGotoScreen ( posición, "Yes"+chr(0)+"No"+chr(0) , 8 , 2 , "Ecran1"+chr(0)+"Ecran2"+chr(0) )

En este ejemplo, al salir de T_Read el programa salta a la pantalla1 o a la pantalla2 en función de 'Yes' o 'No'


T_GetVariable
int __stdcall T_GetVariable(char *VariableName,int size,int flags);

Función equivalente al T_GetNumerical pero con variables locales del terminal.
Permite que el usuario edite el valor de una variable local del terminal.

T_StartRepeat
int __stdcall T_StartRepeat(int *times);


T_EndRepeat
int __stdcall T_EndRepeat();


T_GetRepeat
int __stdcall T_GetRepeat(unsigned char times);


T_PutTextOnList
int __stdcall T_PutTextOnList(char *txt,int Value,char FastKey);

T_GetExitNow
int __stdcall T_GetExitNow()

El terminal abandona la función T_Read si el cursor está sobre esta línea.




Funciones con Variables


T_ReserveVariable
int __stdcall T_ReserveVariable(char *VariableName);

T_WriteVariable
int __stdcall T_WriteVariable(char *VariableName,int valor);

T_ReadVariable
int __stdcall T_ReadVariable(char *VariableName);

T_AddVariable
int __stdcall T_AddVariable(char *VariableNameDest,char *VariableNameSrc1,char *VariableNameSrc2);

T_MulVariable
int __stdcall T_MulVariable(char *VariableNameDest,char *VariableNameSrc1,char *VariableNameSrc2);

T_DivVariable
int __stdcall T_DivVariable(char *VariableNameDest,char *VariableNameSrc1,char *VariableNameSrc2);

T_IfVar1EqVar2Goto
int __stdcall T_IfVar1EqVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);

T_IfVar1GreaterVar2Goto
int __stdcall T_IfVar1GreaterVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);

T_IfVar1LessVar2Goto
int __stdcall T_IfVar1LessVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);

T_IfVar1NotEqVar2Goto
int __stdcall T_IfVar1NotEqVar2Goto(char *VariableName1,char *VariableName2,char *ScreenName);




Funciones de Listas



T_PutTextOnList
int __stdcall T_PutTextOnList(char *txt,int Value,char FastKey);

T_SetGetTextFromListFlags
int __stdcall T_SetGetTextFromListFlags(int flags)

Define el aspecto de GetTextFromList en todos los casos futuros.
Ejemplo: T_SetGetTextFromListFlags GetText_flag_NotUnderline + GetText_flag_DontShowZero


T_GetTextFromList
int __stdcall T_GetTextFromList(int *number,int size,char *ScreenName);

T_CreateListIndex
int __stdcall T_CreateListIndex(char *ListName,int size);

Crea en la memoria del terminal un índice para una lista. 'Size' es el número de elementos que la lista puede contener.
El Terminal internamente gasta (8*size) bytes de memoria, para mantener la lista.

La secuencia de comandos para crear una lista debe ser:

T_CreateListIndex "usuarios",10
T_ActivateListIndex "usuarios"

T_PutTextOnList ... pone en la lista de "Usuarios" los diferentes elementos
T_PutTextOnList ... pone en la lista de "Usuarios" los diferentes elementos
T_PutTextOnList ... pone en la lista de "Usuarios" los diferentes elementos

T_PutTextOnList puede ejecutarse desde varias pantallas diferentes.
Después de activar una lista, TODOS los T_PutTextOnList están relacionados con la lista activada.

T_GetTextFromList... Va a buscar un elemento en la Lista activada.

T_DestroyListIndex
int __stdcall T_DestroyListIndex(char *ListName);

Libera la memoria del terminal, destruyendo la lista.

T_ActivateListIndex
int __stdcall T_ActivateListIndex(char *ListName);

Activa una lista.

T_DesactivateListIndex
int __stdcall T_DesactivateListIndex();

Desactiva la lista activada.

T_CreateListIndex "LISTA COMIDAS", 1000
T_ActivateListIndex "LISTA COMIDAS"

ListName > Nombre que se dará a una lista. Puede ser una lista de comidas o de usuarios.
Min,Max son los valores límites de la lista. Estos valores no pueden ser muy grandes, pues ocupan memoria en el terminal.

Ejemplo,
T_CreateListIndex "LISTA COMIDAS", 1000
Ocupa 8Kb de memoria RAM en el terminal para crear 1000 índices .

Para Introducir Datos en una lista, primero se debe activar dicha lista.
T_ActivateListIndex "LISTA COMIDAS"

Seguidamente, se utiliza el comando PutTextOnList para introducir datos.






T_Cls
T_PrintInverse "MENÚ"
T_NewLine
T_Say "1-Pedir"
T_GetLink "DATOS DEL PEDIDO", 0, Asc("1")
T_NewLine
T_Say "2-Conta"
T_GetLink "CUENTA", 0, Asc("2")
T_NewLine
T_Say "3-Anular"
T_GetLink "ANULAR", 0, Asc("3")
T_NewLine
T_Say "4-Hora"
T_GetLink "HORA", 0, Asc("4")
T_NewLine
T_Beep 50, 50
T_Read

int __stdcall T_GetLink(char *ScreenName,int Value,char FastKey);

int Value (Opcional si 0 no es usado)
Para ser utilizado combinado con GetTextFromList, al pusar Enter en GetTextFromList si el Value fuera igual el Terminal posiciona el cursor en ese campo.

FastKey
Tecla rápida para entrar en un menú.






T_Cls
T_PrintInverse "Menú"
T_NewLine
T_NewLine
T_Say "1-Carne"
T_GetLink "CARNE", 10, Asc("1")
T_NewLine
T_Say "2-Pescado"
T_GetLink "PESCADO", 20, Asc("2")
T_NewLine
T_Say "3-Vinos"
T_GetLink "VINOS", 30, Asc("3")
T_NewLine
T_Say "4-Bebidas"
T_GetLink "BEBIDAS", 40, Asc("4")
T_NewLine
T_Say "5-Postres"
T_GetLink "POSTRES", 50, Asc("5")
T_NewLine
T_Beep 50, 50
T_Read




T_Cls
T_PrintInverse "PEDIDO"
T_NewLine
T_Say "Mesa :"
T_GetText mesa, 3, GetText_flag_Number
T_NewLine
st = "NO" + Chr(0) + "SÍ" + Chr(0)
T_Say "Factura :"
T_GetOption factura, st, Len(st), 2
T_NewLine
T_Say "OK"
T_GetLink "PEDIR", 0, 0
T_Beep 50, 50
T_Read

int __stdcall T_GetOption(int *position,char *List,int LenList,int NumberOfElements);

int *position Indicador para la posición del cursor. Después de ejecutalo, el valor es alterado.
char *List Indicador para una String (secuencia) que contiene una lista de varios elementos, separados por chr(0)
int LenList Tamaño total de la String (secuencia)
int NumberOfElements Número de elementos en la string






Seguido de un 'Enter'
El nombre 'Ze Carioca' automáticamente se pone viniendo de la pantalla "USUARIOS", visto que 'Ze Carioca' es el usuario número 1.


Password = Chr(0) + Space(10)
Usuario = 0
T_Cls
T_ActivateListIndex "LISTA ÚTIL"
T_PrintInverse "LOGIN"
T_NewLine


T_Say "Usuario:"
T_GetTextFromList Usuario, 10, "USUARIO"
T_NewLine


nome = ListaUsuarios(Usuario)


T_Say "Password:"
T_GetText Password, 10, GetText_flag_ExitEnter + GetText_flag_Underline
T_NewLine
T_Beep 50, 50
T_Read


La Función GetTextFromList acepta un número como input.


En el Terminal Horizontal :
Si se pulsa la tecla '.' , automáticamente se pasa a la pantalla ScreenName.


En el Terminal Vertical :
Las teclas de función muestran un '?' .
Si se pulsa la tecla 'F1', automáticamente se pasa a la pantalla ScreenName.




En esta situación el valor en number se usa para colocarse en la nueva pantalla.
Si en la nueva pantalla existe un valor en el (campo (Value de PutTextOnList) = number) el cursor se coloca ahí.


Si se crea una lista con las debidas funciones, al introducir un número seguido de Enter aparece el texto correspondiente de la Lista.

Para defenir el aspecto de la línea de input, se puede utilizar la función T_SetGetTextFromListFlags
. Esta función define el aspecto de GetTextFromList en todos sus casos futuros.


int __stdcall T_GetTextFromList(int *number,int size,char *ScreenName);
int *number Apuntador para un elemento.
int size tamaño del campo del input.




hora = Time
T_Cls
T_PrintString ("Hora actual:")
T_NewLine
T_PrintLarge hora
T_NewLine
T_NewLine
T_NewLine
T_NewLine
T_Beep 50, 50
key = T_WaitChar
T_GotoScreen "MENÚ"





T_Cls
T_PrintInverse "DATOS PERSONALES"
T_NewLine
T_Say "Nombre: "
T_GetText nome, 10, GetText_flag_Underline
T_NewLine
T_NoSay 5
T_GetText tel, 10, GetText_flag_Underline
T_NewLine
T_Read





T_Cls
T_PrintInverse "CARNES"
T_NewLine
T_NewLine
T_Say "1-Filete"
T_GetLink "Filete", 0, Asc("1")
T_NewLine
T_PutTextOnList "Guiso", 12, Asc("2")
T_NewLine
T_PutTextOnList "Huevos ", 13, Asc("3")
T_NewLine
T_PutTextOnList "Chuletas", 14, Asc("4")
T_NewLine
T_Beep 50, 50
T_Read

int __stdcall T_PutTextOnList(char *txt,int Value,char FastKey);

char *txt Texto que vuelve a T_GetTextFromList después de pulsar enter.
int Value Valor que vuelve a T_GetTextFromList después de pulsar enter.
char FastKey Tecla rápida.

P.S.
Si antes de ejecutar esta pantalla se selecciona T_ActivateListIndex se crea un índice automáticamente.
Al hacer T_GetTextFromList si existe un índice y si se introduce un número válido, cuando se pulsa Enter automáticamente el campo se sustituye por el texto válido.




Pulsar Enter y



la pantalla se rediseña con la línea de pedidos aumentada 3 *


T_Cls
T_PrintInverse "PEDIDO"
T_ActivateListIndex "LISTA COMIDAS"
T_NewLine
T_PrintString "Plato cantidad"
T_NewLine
T_StartRepeat NúmeroPedidos
For n = 1 To NúmeroPedidos
T_NoSay 15
T_GetTextFromList platos(n), 15, "LISTA"
T_PrintString " "
T_NoSay 4
T_GetNumerical qt(n), 4, 0
T_NewLine
T_EndRepeat
Next
T_Say "(+++)"
T_GetRepeat 3
T_NewLine
T_Read

Al seleccionar GetRepeat, el código entre StartRepeat y EndRepeat se repite n veces.
En el ejemplo desarrollado más arriba, la línea de pedir los platos se aumenta 3 veces.




Dim nombre As String
Dim tel As String
tel = Chr(0) + Space(10)
nombre= Chr(0) + Space(10)

T_InitScreen TerminalId, "PRUEBA", scr_flag_execute, 0, 0
T_Cls
T_PrintInverse "DATOS PERSONALES"
T_NewLine
T_Say "Nombre: "
T_GetText nombre, 10, GetText_flag_Underline
T_NewLine
T_Say "Tel : "
T_GetText tel, 10, GetText_flag_Underline
T_NewLine
T_Read


T_SendScreen



ScrFlags


#define scr_flag_execute 1
Al enviar una pantalla al terminal con este atributo, el terminal deja de recibir pantallas y ejecuta esta pantalla.

#define scr_flag_changed 2
No Usado

#define scr_flag_update_pc_if_possible 4
El terminal envía esta pantalla por radio al PC, pero sólo lo intenta una vez.
Si no consigue enviarla, guarda los datos en un buffer interno y los envía cuando sea posible.

#define scr_flag_update_pc_now 8
El terminal envía esta pantalla al PC, lo intenta siempre.
Si no consigue enviarla, se queda bloqueado hasta estar en una zona con cobertura.

#define scr_flag_update_pc_later 16
El terminal envía esta pantalla por radio al PC pero no ahora.
Pone los datos en el buffer de envío pero no los intenta enviar.

#define scr_flag_auto_destroy 32
Después de ver esta pantalla, perderá validez en el terminal.

#define scr_flag_ask_pc_answer 64
No Usado.

#define scr_flag_ask_pc_update 128
No Usado.

#define scr_flag_restore_fields_after_send 256
Después de enviar por radio esta pantalla vuelve al aspecto inicial.

#define scr_flag_dont_stop 512
Se debe utilizar cuando se quiere enviar una pantalla al terminal y ejecutarla sin que el terminal pare.
Esta opción resulta muy útil si se quiere enviar al terminal pantallas con listas para que el terminal las asimile.
T_PutTextOnList



Text flags


#define text_flag_Protected -1
El Campo no puede ser editado.

#define text_flag_AutoExit -2
Si el cursor está en la última posición, sale.

#define text_flag_Password -4
****
#define text_flag_Number -8
Sólo acepta números.

#define text_flag_ExitEnter -16
Si se presiona Enter, se sale de la Pantalla.

#define text_flag_ExitAlways -32
Al salir del campo se sale de la Pantalla.

#define text_flag_Barcode -64
Conecta el Barcode

#define text_flag_NotUnderline -128
Muestra el campo de Input No Subrayado.

#define text_flag_Link -256
NO UTILIZAR

#define text_flag_NewText -512
Limpia el Texto

#define text_flag_NumberRightAligned -1024
Alinea un número a la derecha.

#define text_flag_DontShowZero -2048
Si el campo tiene valor cero, no muestra nada.

#define text_flag_ForceFunctionKeys -4096
Muestra las teclas de función definidas con la función T_SetFunctionKeys .
Si se pulsa una tecla de función el terminal va a la pantalla T_OnFxGotoScreen

#define text_flag_NoFunctionKeys -8096


#define Text_flag_AutoexitfieldON -16384
Equivalente al AutoExit, pero sale en el último caracter.
#define Text_flag_OnlyExitIfTemplateOK -32768
Si se está utilizando templates para leer códigos de barras, sólo sale de este campo si la lectura está OK.




T_Cls
T_PrintInverse "VARIABLES"
T_NewLine
T_WriteVariable "VALOR1", 12
T_WriteVariable "UNIDAD", 1
T_AddVariable "VALOR1", "VALOR1", "UNIDAD"
T_Say "Result ."
T_GetVariable "VALOR1", 10, 0
T_Read

Las variables utilizadas en el terminal son locales del terminal. Están en la memoria del terminal. Son independientes de la pantalla.

Para manter una variable en la memoria entre resets del terminal deben reservarse las respectivas variables en la primera pantalla.

T_ReserveVariable

Se pueden usar las funciones condicionales para tener pequeños programas funcionando en el terminal sin que se tenga que volver al PC.



Página Principal


Contáctenos


Descargar


Manual de Interconexión


Programa de terminal XRML