Terminaux sans Fil X64


Intercommunication XRML




Programme de Terminal XRML



Fonctions générales

Fonctions d'Input / Output (T_Read)

Fonctions de Listes

Fonctions de Variables

Fonctions de Goto



Toutes les fonctions sont définies dans la DLL 'RIOCOM.DLL'. La DLL doit être incorporée dans le langage de programmation utilisé. Les exemples sur 'Décharger' sont en VB. On peut utiliser l'émulateur pour mettre les exemples en fonctionnement sans qu'on doive faire recours à l'hardware externe. 
Le XRML fonctionne avec des écrans qui sont envoyés au terminal. Il peut être comparé au  HTML dans le sens que le terminal  demande au PC un écran et le PC l'envoie. Malgré tout, quand le terminal demande un écran au PC, le PC peut envoyer l'écran demandé ou d'autres écrans, par exemple, dans des situations d'erreur. el te PC l'envoie.
Les écrans que le PC envoie peuvent avoir une validité temporelle, c'est à dire, je peux envoyer un écran qui va être valide pour 10 secondes ou pour toujours.
Pour que le terminal envoie des données au PC, il envoie l'écran de retour au PC. Le programme du PC doit travailler avec le même code qu'on a utilisé pour créer cet écran et la DLL actualise les variables.





Fonctions Générales 


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

Cela ouvre le Port Série aux communications et initialise les communications. 
ComPort doit être 1,2,3...
BaudRate doit être 9600,19200,38400

Si le ComPort était 0 alors on cherche automatiquement un ComPort avec la base branchée. Dans cette situation, la fonction retourne à 0 s'il ne trouve pas la base ou le numéro du  ComPort ouvert.


TerminateComm
void __stdcall TerminateComm(int ComPort);

Cela ferme le port série.


T_ResetComunications
int __stdcall T_ResetComunications();

Cette commande permets à un terminal de réetablir la communication avec le PC après sortir et entrer dans l'application du PC.

Normalement, après que les communications soient coupées il faut apppuyer sur le button de reset du terminal.

Pour utiliser ce commande il est obligatoire que le programme du PC, en sortant, ait l'action   T_SaveScreens et, en reinitialisant, T_LoadScreens.

Si on n'a pas ces deux actions, T_SaveScreens et T_LoadScreens, le programme reste bloqué.


T_SaveScreens
int __stdcall T_SaveScreens(char *filename)

Pendant que la DLL communique avec les terminaux, elle garde dans la mémoireune copie de la mémoire des terminauxpour pouvoir optimiser les communications. 

Les terminaux, quand ils comuniquent avec le PC, transmettent seulement changements aux écrans. 

Cette fonction garde dans le disque l'état de la memoire des terminaux. 


T_LoadScreens
int __stdcall T_LoadScreens(char *filename)

Pendant que la DLL communique avec les terminaux, elle garde dans la mémoireune copie de la mémoire des terminauxpour pouvoir optimiser les communications. 

Les terminaux, quand ils comuniquent avec le PC, transmettent seulement changements aux écrans. 

Cette fonction lit dès le disque l'état de la mémoire des terminaux. 


T_SaveComunicationStatus
int __stdcall T_SaveComunicationStatus( char *filename)
Pendant que la DLL communique avec les terminaux, elle mantient en memoire une copie de la memoire des terminaux pour pouvoir optimiser les communications.
Cette fonction garde dans le disque dur l'état de la mémoire des terminaux referée aux communications.

L'usage de cette fonction évite de devoir faire T_ResetComunications si le PC était débranché.  


T_LoadComunicationStatus
int __stdcall T_LoadComunicationStatus( char *filename)
Pendant que la DLL communique avec les terminaux, elle mantient en memoire une copie de la memoire des terminaux pour pouvoir optimiser les communications.
Cette fonction lit du disque dur l'état de la mémoire des terminaux referées aux communications.

L'usage de cette fonction évite de devoir élire T_ResetComunications si le PC était débranché.


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

char *TerminalId
Indicateur pour le nom du terminal. Le nom doit être composé par: XXXXXXDD, d'où XXXXXX dans une instalation doit être égal et le DD doit être différent. Exemple: "TESTE 01","TESTE 02"

char *ScreenName
Indicateur pour le nom de l'écran. 
Le nom de l'écran peut avoir n'importe quelle taille.

char *ScreenFlags

int ScreenCursor
Position initiale du curseur dans l'écran. Il contabilise le numéro de Gets...() faits.

Int ScreenValidate
Seconde dans lequel l'écran perd de la validité. Le seconde actuel peut être calculé avec: ((Date - 35065) + Time) * 24 * 60 * 60 em VB


T_SendScreen
int __stdcall T_SendScreen();

Il envoie l'écran actuel au Terminal. L'envoi doit être fait apres réaliser un T_InitScreen.
Il envoie l'écran du PC au TERMINAL.



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

Quand on reçoit un écran du terminal, on doit actualiser nos variables dans le PC. Pour ce faire, on doit élire T_RefreshScreen suivi du même code qui a été utilisé pour créer l'écran.


T_SetLcdLightPower
int __stdcall T_SetLcdLightPower(char state);

Cela allume ou éteint l'illumination du Display.


T_SetSeconds
int __stdcall T_SetSeconds(int seconds);

en VB pour ajuster l'horloge du terminal, il peut être:
T_SetSeconds ((Date - 35065) + Time) * 24 * 60 * 60


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

Cela configure le Laser.
T_Beep
int __stdcall T_Beep(int duration,int periodo);

Cela fait un seul coup de sifflet dans le terminal


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

Il envoie l'écran à un buffer qui sera envoyé au PC.

ScreenName, Nom de lécran á envoyer.
scr_flags, modifie tous les flags de l'écran

Cette commande utilise les suivants flags:

#define scr_flag_update_pc_if_possible 4
Le terminal envoie cet écran par radio au PC mais il essaye seulement une fois.
S'il ne peut pas l'envoyer, il garde les données dans un buffer interne et il les envoie quand il sera possible. 

#define scr_flag_update_pc_now 8
Le terminal envoie cet écran par radio au PC, il essaye toujours. 
S'il ne peut pas l'envoyer, l'écran reste bloqué jusqu'à ce qu'on soit dans un endroit avec de la couveture.

#define scr_flag_update_pc_later 16
Le terminal envoie cet écran par radio au PC, mais non maintenant.
Cela met les donées sur un buffer d'envoie mais il n'essaye pas de les envoyer.


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

Cette commande est identique au précédent, mais elle ne met rien sur le buffer.

Cela envoie l'écran à Null. Son usage est important si l'on veut, par exemple, annuler l'envoi d'un écran.
On doit l'utiliser combinée avec le flag scr_flag_restore_fields_after_send
T_ChangeUpsideDown
int __stdcall T_ChangeUpsideDown(char flag);

Cela inverse le display. Cela ne fonctionne pas avec l'émulateur.


T_PrintString
int __stdcall T_PrintString(char *txt);

Cela imprime une string (séquence) sur l'écran dans la position actuelle du curseur.
T_PrintLarge
int __stdcall T_PrintLarge(char *txt);

Cela imprime une string (séquence) dans la position actuelle du curseur.
Source de taille grande. 

T_Print_Inverse

int __stdcall T_PrintInverse(char *txt);


Cela imprime centré en Inverse Video.
T_NewLine
int __stdcall T_NewLine();

Cela change de ligne

T_Cls
int __stdcall T_Cls();

Cela efface l'écran
T_WaitChar
char __stdcall T_WaitChar();

Cela retourne à la touche apuyée. 


T_Delay
int __stdcall T_Delay(int miliseconds);


Le Terminal reste arrêté. Ceci est utile pour montrer un écran de resultats sans obliger à appuyer sur une touche. 
T_CheckIfReceiveData
int __stdcall T_CheckIfReceiveData(char *TerminalId,char *Screen_Name,char *DataType,int *RawDataSize,char *RawData)

Periodiquement, on doit vérifier si on a de nouvelles données.
#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

Pour le programmateur les options screen zipped et screen unzipped sont la même chose. Quand le terminal demande un écran c'est parce qu'il ne l'a pas dans la mémoire et il a besoin de lui.
Reset est quand on fait reset sur le terminal.

Exemple 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

Quand on garde le programme dans l'EEPROM en réalité on est en train de garder le programme dans un fichier eeprom.bin.

Il peut être utilisé avec le DevKit pour recevoir un programme compilé qui sera envoyé au port série.  

Plusieurs émulateus peuvent fonctionner au même temps s'ils ont le  Terminal Id avec de différents noms.


T_SetFunctionKeys
int __stdcall T_SetFunctionKeys(char *txt)

Cette commande définit les touches de fonction qui vont être après visualisées avec le flag GetText_flag_ForceFunctionKeys.
Paramètres: char *txt
String (séquence) de quatre caractères, F1,F2,F3 et F4. Par exemple, si la fonction s'appelle T_SetFunctionKeys("1234"); elle est définie F1='1', F2='2', F3='3', F4='4'. Cette fonction doit être utilisée combinée avec les fonctions T_OnF1GotoScreen, T_OnF2GotoScreen...



T_ChangeScreenFormat
int __stdcall T_ChangeScreenFormat(int ScreenFormat)

Cette commande définit le type de source utilisé dans tous les écrans.

Ligne 1 --> (Lettre grande ) +1
Ligne 2 --> (Lettre grande ) +2
Ligne 3 --> (Lettre grande ) +4
Ligne 4 --> (Lettre grande ) +8
etc

Par exemple, pour un écran qui ait tout avec de la lettre petite:
T_ChangeScreenFormat(0)

Si on veut que la ligne 1 et la ligne 4 aient la lettre plus grande, on créera le commande:
T_ChangeScreenFormat(1+8)




Fonctions de Goto


T_GotoScreen
int __stdcall T_GotoScreen(char *ScreenName);

Quand on exécute cette commande, le Terminal va à l'écran  "ScreenName"

T_OnEscapeGotoScreen
int __stdcall T_OnEscapeGotoScreen(char *ScreenName);

Quand l'utilisateur appuye sur la touche Esc, le terminal va à l'écran "ScreenName"


T_OnF1GotoScreen
int __stdcall T_OnF1GotoScreen(char *ScreenName);

Quand l'utilisateur appuye sur la touche F1, le terminal va à l'écran "ScreenName"
Les touches de fonction doivent être definies avec la fonction "T_SetFunctionKeys" et activées dans un champ d'input avec text_flag GetText_flag_ForceFunctionKeys.


T_OnF2GotoScreen
int __stdcall T_OnF2GotoScreen(char *ScreenName);

Quand l'utilisateur appuye sur la touche F2, le terminal va à l'écran "ScreenName"
Les touches de fonction doivent être definies avec la fonction "T_SetFunctionKeys" et être activées dans un champ de l'input avec text_flag GetText_flag_ForceFunctionKeys.



T_OnF3GotoScreen
int __stdcall T_OnF3GotoScreen(char *ScreenName);

Quand l'utilisateur appuye sur la touche F3 le terminal va à l'écran "ScreenName.
Les touches de fonction doivent être definies avec la fonction "T_SetFunctionKeys" et activées dans un champ d'input avec text_flag GetText_flag_ForceFunctionKeys.



T_OnF4GotoScreen
int __stdcall T_OnF4GotoScreen(char *ScreenName);

Quand l'utilisateur appuye sur la touche F4, le terminal va à l'ecran "ScreenName"
Les touches de fonction doivent être definies avec la fonction "T_SetFunctionKeys" et activées dans un champ d'input avec text_flag GetText_flag_ForceFunctionKeys.




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

Si le contennu de la variable1 = variable2, le terminal va à l'écran "ScreenName"



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

Si le contennu de la variable1 > variable2, le terminal va à l'écran  "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 le contennu de la variable1 <> variable2 le terminal va à l'écran "ScreenName"







Fonctions du Browse



Les suivantes fonctions doivent être utilisées combinées et terminées avec la fonction T_Read

T_Read
int __stdcall T_Read();

Cette fonction est équivalente à l'ancienne fonction de read du clipper.
Après une série de  T_Say et T_Get... on doit terminer avec un T_Read.
Le Terminal, quand il exécute un T_Read, arrête et donne á l'utilisateur la possibilité d'éditer les champs de l'input. 
Pour sortir du T_Read on doit appuyer sur ESC ou alors un des T_Gets doit être le T_GetCheckEnter.

Cette fonction retourne à la ligne d'où elle est sortie du Read.

T_Say

int __stdcall T_Say(char *txt);

Elle doit être utilisée combinée avec T_Get... et T_Read.
En appuyant sur T_Read, le curseur est placé sur le texte du T_Say, et permet d'exécuter le T_Get...
T_NoSay
int __stdcall T_NoSay(unsigned char size);

On doit l'utiliser avec  T_Get... et T_Read.
Il doit être utilisé quand on veut que le curseur reste sur le champ de l'input avec une taille (size).


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

On doit l'utiliser avec T_Get... et T_Read.
Cela imprime le txt_fix et si le curseur était au dessus cela exécute le txt_rot.



Les suivantes fonctions doivnt être utilisées combuinées et terminées avec la fonction T_Read

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

'txt' doit être l'indicateur pour l'espace de mémoire libre pour recevoir le texte avec la taille 'size'.
Dans VB on doit déclarer une variable type string (séquence) et ensuite on initialise avec des espaces. Pour que la DLL interprète que la string est vide, on doit commencer avec chr(0) comme dans l'exemple précédent.
T_GetTextTemplate
int __stdcall T_GetTextTemplate(char *txt,char *templates,int flags)

'txt' doit être un indicateur pour l'espace libre pour recevoir le texte avec la taille
strlen (template).

En VB on doit déclarer une variable type string et ensuite on initialise avec des espaces. Pour que la DLL interprète que la séquence est vide on doit commencer avec chr(0) comme dans l'exemple précédent.

Dans le champ template on doit créer  un masque avec les caractères valides.
Exemple:

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);

Équivalent au GetText mais il reçoit un int de 32 bits au lieu d'une string.
Size est la taille du champ de l'input.
T_GetLink
int __stdcall T_GetLink(char *ScreenName,int Value,char FastKey);

Quand on appuye sur enter dans cette option l'écran est appelé "ScreenName".
Si on appuye sur une FastKey le curseur est déplacé au GetLink équivalent et on appelle à l'écran "ScreenName"

Exemple 2.


T_GetCheckEnter
int __stdcall T_GetCheckEnter();

Il doit être utilisé avec T_Say.
Exp.
T_Say "OK"
T_GetCheckEnter

Avec le curseur sur OK et la touche Enter appuyée, il fait qu'on abandonne l'écran. 


T_GetEditDate
int __stdcall T_GetEditDate();


Cela permet à l'utilisateur de changer la date du terminal. 



T_GetEditTime
int __stdcall T_GetEditTime();

Cela permet à l'utilisateur de changer l'heure du terminal.
T_GetOption
int __stdcall T_GetOption(int *position,char *List,int LenList,int NumberOfElements);

Cette option permet d'élire un élément d'une liste. Par exemple, un 'Yes' ou un 'No'.
T_GetOptionGotoScreen
int __stdcall T_GetOptionGotoScreen(int *position,char *List,int LenList,int NumberOfElements,char *ScreenList);

Cette option permet d'élire un élément d'une liste et aller à un écran selon l'élément choisi. Les éléments de la liste doivent être separés par le Chr(0), ainsi comme les éléments des écrans.  

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

Dans cet exemple, en sortant du  T_Read le programme va à l'écran1 ou à l'écran2 en fonction du 'Yes' ou 'No'


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

Fonction équivalente au T_GetNumerical mais avec des variables locales du terminal. 
Cela permet que l'utilisateur édite la valeur d'une variable locale du 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);


Fonctions avec des 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);




Fonctions des Listes



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

T_SetGetTextFromListFlags
int __stdcall T_SetGetTextFromListFlags(int flags)

Cela définit l'aspect du GetTextFromList dans tous les cas futurs.
Exemple: 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);

Cela crée dans la mémoire du terminal un index pour une liste. 'Size' est le nombre d'éléments que la liste peut contenir.
Le Terminal, internement, use  (8*size) bytes de mémoire, pour mantenir la liste.

La séquence des commandes pour créer une liste doit être:

T_CreateListIndex "utilisateurs",10
T_ActivateListIndex "utilisateurs"

T_PutTextOnList ... met dans la liste des "Utilisateurs" les différents éléments
T_PutTextOnList ... met dans la liste des "Utilisateurs" les différents éléments
T_PutTextOnList ... met dans la liste des  "Utilisateurs" les différents éléments

T_PutTextOnList peut être éxecuté dès de différents écrans. 
Après activer une liste, TOUS les T_PutTextOnList sont relationés avec la liste activée. 

T_GetTextFromList... va chercher un élément dans la liste activée. 

T_DestroyListIndex
int __stdcall T_DestroyListIndex(char *ListName);

Cela libere la mémoire du terminal, en détruisant la liste. 

T_ActivateListIndex
int __stdcall T_ActivateListIndex(char *ListName);

Cela active une liste.

T_DesactivateListIndex
int __stdcall T_DesactivateListIndex();

Cela désactive la liste activée. 

T_CreateListIndex "LISTE REPAS", 1000
T_ActivateListIndex "LISTE REPAS"

ListName > Nom qui aura une liste. Elle peut être une liste de repas ou d'utilisateurs. 
Min,Max sont les valeurs limites de la liste. Ces valeurs ne peuvent pas être très grandes, puisqu'elles occupent de la mémoire dans le terminal. 

Exemple,
T_CreateListIndex "LISTE DE REPAS", 1000
Occupe 8Kb de memoria RAM dans le terminal pour créer 1000 index. 

Pour Introduire des Donées dans une liste, on doit d'abord activer cette liste.
T_ActivateListIndex "LISTE DE REPAS"

Ensuite, on utilise le commande PutTextOnList pour introduire des données.






T_Cls
T_PrintInverse "MENU"
T_NewLine
T_Say "1-Commander"
T_GetLink "DONNÉES DE LA COMMANDE", 0, Asc("1")
T_NewLine
T_Say "2-Addition"
T_GetLink "ADDITION", 0, Asc("2")
T_NewLine
T_Say "3-Annuler"
T_GetLink "ANNULER", 0, Asc("3")
T_NewLine
T_Say "4-Heure"
T_GetLink "HEURE", 0, Asc("4")
T_NewLine
T_Beep 50, 50
T_Read

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

int Value (Optionnel si 0 n'est pas utilisé)
Pour être utilisé avec GetTextFromList, en appuyant sur Enter dans GetTextFromList si le Value était égal le terminal place le curseur sur ce champ. 

FastKey
Touche rapide pour entrer dans un Menu.






T_Cls
T_PrintInverse "Menu"
T_NewLine
T_NewLine
T_Say "1-Viande"
T_GetLink "VIANDE", 10, Asc("1")
T_NewLine
T_Say "2-Poisson"
T_GetLink "POISSON", 20, Asc("2")
T_NewLine
T_Say "3-Vins"
T_GetLink "VINS", 30, Asc("3")
T_NewLine
T_Say "4-Boissons"
T_GetLink "BOISSONS", 40, Asc("4")
T_NewLine
T_Say "5-Desserts"
T_GetLink "DESSERTS", 50, Asc("5")
T_NewLine
T_Beep 50, 50
T_Read




T_Cls
T_PrintInverse "COMMANDE"
T_NewLine
T_Say "Table :"
T_GetText table, 3, GetText_flag_Number
T_NewLine
st = "NON" + Chr(0) + "OUI" + Chr(0)
T_Say "Addition :"
T_GetOption adittion, st, Len(st), 2
T_NewLine
T_Say "OK"
T_GetLink "COMMANDER", 0, 0
T_Beep 50, 50
T_Read

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

int *position Indicateur pour la position du curseur. Après l'exécuter, la valeur est alterée.
char *List Indicateur pour une String (séquence) qui contient une liste de plusiers éléments, separés par chr(0)
int LenList Taille totale de la String (séquence)
int NumberOfElements Nombre des éléments dans la string






Suivi d'un 'Enter'
Le nom 'Ze Carioca' automatiquement est mis en venant de l'écran "UTILISATEURS", étant donné que 'Ze Carioca' est l'utilisateur numéro 1.


Password = Chr(0) + Space(10)
Utilisateur = 0
T_Cls
T_ActivateListIndex "LISTE UTILE"
T_PrintInverse "LOGIN"
T_NewLine


T_Say "Utilisateur:"
T_GetTextFromList Usuario, 10, "UTILISATEUR"
T_NewLine


nome = ListeUtilisateurs(Utilisateurs)


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


La Fonction GetTextFromList accepte un numéro comme un input.


Dans le Terminal Horizontal :
Si on appuye sur la touche  '.' , automatiquement on va à l'écran ScreenName.


Dans le Terminal Vertical :
Les touches de fonction montrent un '?' .
Si on appuye sur la touche 'F1', automatiquement on va à l'écran ScreenName.




Dans cette situation la valeur sur number est utilisée pour se placer dans le nouvel écran. 
Si dans le nouvel écran il y a une valeur dans le (champ (Value de PutTextOnList) = number) le curseur est placé là.


Si on crée une liste avec les fonctions correctes, quand on introduit un numéro suivi d'Enter, le texte corréspondant de la Liste apparaît.

Pour définir l'aspect de la ligne de l'input, on peut utiliser la fonction T_SetGetTextFromListFlags
. Cette fonction définit l'aspect de GetTextFromList dans tous les cas futurs.


int __stdcall T_GetTextFromList(int *number,int size,char *ScreenName);
int *number Indicateur pour un élément.
int size taille du champ de l'input.




heure = Time
T_Cls
T_PrintString ("Heure actuelle:")
T_NewLine
T_PrintLarge heure
T_NewLine
T_NewLine
T_NewLine
T_NewLine
T_Beep 50, 50
key = T_WaitChar
T_GotoScreen "MENU"





T_Cls
T_PrintInverse "DONNÉES PERSONNELLES"
T_NewLine
T_Say "Nom: "
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 "VIANDES"
T_NewLine
T_NewLine
T_Say "1-Bifteck"
T_GetLink "Bifteck", 0, Asc("1")
T_NewLine
T_PutTextOnList "Ragoût", 12, Asc("2")
T_NewLine
T_PutTextOnList "Oeufs ", 13, Asc("3")
T_NewLine
T_PutTextOnList "Côtellette, côte", 14, Asc("4")
T_NewLine
T_Beep 50, 50
T_Read

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

char *txt Texte qui retourne à T_GetTextFromList après appuyer sur enter.
int Value Valeur qui retourne à T_GetTextFromList après appuyer sur enter.
char FastKey Touche rapide.

P.S.
Si avant d'éxécuter cet écran on choisit T_ActivateListIndexon crée un index automatiquement.
En faisant T_GetTextFromList s'il y a un index et si on introduit un numéro valable, quand on appuye sur Enter automatiquement le champ est substitué par le texte valable.




Appuyer sur Enter et


l'écran sera dessiné à nouveau avec la ligne des commandes augmentée 3 *


T_Cls
T_PrintInverse "COMMANDE"
T_ActivateListIndex "LISTE REPAS"
T_NewLine
T_PrintString "Plat quantité"
T_NewLine
T_StartRepeat NombreCommandes
For n = 1 To NombreCommandes
T_NoSay 15
T_GetTextFromList plats(n), 15, "LISTE"
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

Quand on selectionne  GetRepeat, le code entre StartRepeat et EndRepeat est répété n fois. Dans l'exemple développé en haut, la ligne de demande des plats est augmentée 3 fois.




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

T_InitScreen TerminalId, "ESSAI", scr_flag_execute, 0, 0
T_Cls
T_PrintInverse "DONNÉES PERSONNELLES"
T_NewLine
T_Say "Nom: "
T_GetText nom, 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
Quand on envoye un écran au terminal avec cet attribut, le terminal laisse de recevoir des écrans et éxécute cet écran.

#define scr_flag_changed 2
Non utilisé

#define scr_flag_update_pc_if_possible 4
Le terminal envoie cet écran par radio au PC, mais il essaye seulement une fois. 
S'il ne peut pas l'envoyer, il garde les données dans un buffer interne et il les envoie quand il sera possible. 

#define scr_flag_update_pc_now 8
Le terminal envoie  cet écran au PC, il essaye toujours. 
S'il ne peut pas l'envoyer, il reste bloqué jusqu'à ce qu'il soit dans une zone avec de la couverture.

#define scr_flag_update_pc_later 16
Le terminal envoie cet écran par radio mais non pas maintenant. 
Il met les données dans le buffer d'envoi mais il n'essaye pas de les envoyer.

#define scr_flag_auto_destroy 32
Après voir cet écran, il perdra de la validité dans le terminal.

#define scr_flag_ask_pc_answer 64
Non pas usé

#define scr_flag_ask_pc_update 128
Non pas usé. 

#define scr_flag_restore_fields_after_send 256
Après envoyer par radio cet écran retourne à son aspect initial.

#define scr_flag_dont_stop 512
On doit l'utilser quand on veut envoyer un écran au terminal et l'éxécuter sans que le terminal arrête.
Cette option est très utile si l'on veut envoyer au terminal des écrans avec des listes pour que le terminal les assimille.
T_PutTextOnList



Text flags


#define text_flag_Protected 1
Le chanmp ne peut pas être édité. 

#define text_flag_AutoExit 2
Si le curseur est dans la dernière position, il sort.

#define text_flag_Password 4
****
#define text_flag_Number 8
Il accepte seulement des numéros.

#define text_flag_ExitEnter 16
Si on appuye sur Enter, on sort de l'écran.

#define text_flag_ExitAlways 32
Quand on sort du champ on sort de l'écran.

#define text_flag_Barcode 64
Cela allume le Barcode

#define text_flag_NotUnderline 128
Cela montre le champ de l'input non pas souligné.

#define text_flag_Link 256
NE PAS UTILISER

#define text_flag_NewText 512
Cela nettoye le texte

#define text_flag_NumberRightAligned 1024
Cela aligne une chiffre à la droite.

#define text_flag_DontShowZero 2048
Si le champ a la valeur zéro, il ne montre rien.

#define text_flag_ForceFunctionKeys 4096
Il montre les touches de fonction définies avec la fonction T_SetFunctionKeys .
Si on appuye sur une touche de fonction le terminal va à l'écran T_OnFxGotoScreen

#define text_flag_NoFunctionKeys 8096


#define Text_flag_AutoexitfieldON 16384
Équivalent à l'AutoExit, mais il sort dans le dernier caractère.
#define Text_flag_OnlyExitIfTemplateOK 32768
Si on est en train d'utiliser des templates pour lire des codes de barres, on sort de ce champ seulement si la lecture est OK.




T_Cls
T_PrintInverse "VARIABLES"
T_NewLine
T_WriteVariable "VALEUR1", 12
T_WriteVariable "UNITÉ", 1
T_AddVariable "VALEUR1", "VALEUR1", "UNITÉ"
T_Say "Result ."
T_GetVariable "VALEUR1", 10, 0
T_Read

Les variables utilisées dans le terminal sont locales. Elles sont dans la mémoire du terminal. Elles sont indépendantes par rapport à l'écran. 

Pour mantenir une variable dans la mémoire entre des resets du terminal on doit réserver les respectives variables dans le premier écran. 

T_ReserveVariable

On peut utiliser les fonctions conditionales pour avoir de petits programmes en fonctionement dans le terminal sans qu'on doive retourner au PC. 



Page Principale


Contactez-nous


Décharger


Manuel d'Intercommunication


Programa de terminal XRML