|
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.
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.
-
|