Programa
de Terminal XRML
-
-
Funções
Gerais
-
-
Funções
de Input / Output (T_Read)
-
-
Funções
de Listas
-
-
Funções
de Variaveis
-
-
Funções de
Goto
-
Funções
de Duplicação de ecrans Offline
Funções
de RFID
Todas as funções
estão definidas na DLL 'RIOCOM.DLL'. A DLL tem que ser
incorporada na Linguagem de programação utilizada.
Os exemplos em Download estão em VB. Pode ser utilizado o
emulador para correr os exemplos sem ter que se recorrer a
hardware externo.
O XRML
funciona com ecrans que são enviados para o terminal.
Pode ser comparado com o HTML na medida em que o terminal pede
ao PC um ecran e o PC o envia. No entanto quando o terminal pede
um ecran ao PC este pode enviar o ecran pedido ou outros ecrans,
por exemplo em situações de erro. Os ecrans que
o PC envia podem ter uma validade temporária, ou seja
posso enviar um ecran para o terminal que vai ser valido por 10
segundo ou para sempre. Para o terminal enviar dados para o
PC envia o ecran de volta para o PC. O programa do PC deve
correr exactamente o mesmo código que usou para gerar
esse ecran e a DLL actualiza as variáveis.
Vamos ver como funciona. O Timer esta continuamente
à procura de informação que a antena enviará
para a aplicação. O diagrama resume a parte
importante deste procedimento.
Então, se acontecer alguma coisa,
podemos ver que temos duas opções: receber um ecran
do terminal ou o terminal pedir-nos um ecran.
Se receber,
o procedimento é o seguinte: procedure
TForm1.ReceiveScreen(TerminalID,ScrName:String); begin
T_RefreshScreen(TerminalId, ScrName);
DoScreen(ScrName); //AQUI TEM A INFORMAÇÃO, A
PARTIR DE AQUI A SUA APLICAÇÃO TERÁ DE
UTILIZAR-LA COMO FOR NECESSÁRIO end;
Este
procedimento actualiza as variáveis do PC com as
introduzidas no terminal. Depois dum refresh e dum DoScreen
as variáveis estão actualizadas no PC. Neste ponto
já tem a informação. E termina esta chamada
do TIMER.
A outra opção é um
AskScreen. Primeiro temos de saber quando se produz e como. As
possibilidades são muitas, em geral todas as funções
que têm como parâmetro o nome dum ecran produzem um
AskScreen. Outra situação é quando o
terminal faz um reset e uma tecla é carregada, o ecran
pelo qual se pergunta é sempre por defeito 'START'.
O PC então pode enviar ecrans (os que quiser) e os envia
como não executáveis (na função
T_InitScreen com flags diferentes scr_flag_execute) e o
último como executável(scr_flag_execute). Neste
momento o terminal começa a funcionar como off-line e com
a funcionalidade programada.
As outras situações
funcionam de forma análoga a este exemplo: No
procedimento DoScreen são desenhados os ecrans, por tanto
as possibilidades são muitas. Neste exemplo:
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;
Existem
muitas coisas que precisam duma análise, mas a última
função (T_GotoScree) diz ao terminal que vá
ao ecran LE REF. O que acontece é que o terminal chama
este ecran, que neste caso é ele próprio. Aqui um
AskScreen é produzido porque o ecran tinha sido destruído
com a scr_flag_auto_destroy e tem de ser carregado de novo. Pode
ser que o ecran que o programa quer esteja na memoria e não
faça com que aconteça um AskScreen. Também
pode ser enviado o número de ecrans que o programador ache
necessário.
A maioria dos programas quando
acontece um AskScreen seguem a seguinte sequência:
-SÃO
INICIALIZADOS OU DÃO VALOR ÁS VARIAVEIS ÁS
QUE UMA REFERENCIA É FEITA NESTE ECRAN E É FEITO
UM T_InitScreen. -O ECRAN É CRIADO
(DoScreen) -O ECRAN É ENVIADO
T_SendScreen.
Esta é a maneira habitual do
AskScreen.
-
Funções
Gerais
-
InitializeComm
-
int __stdcall InitializeComm(int ComPort,int
BaudRate);
-
-
Abre a Porta série para comunicações
e inicializa as comunicações.
-
ComPort deve ser 1,2,3...
-
BaudRate deve ser 9600,19200,38400
-
-
Se a ComPort for 0 então é procurado
automaticamente uma ComPort com a base ligada.
-
Nesta situação a função
retorna 0 se não encontrar a base ou o numero da ComPort
Aberta.
-
ForceResetOnAllTerminal void
__stdcall ForceResetOnTerminal();
Esta função
deve ser usada depois do T_InitializeComm, e faz com que os
terminais se o PC for desligado no meio de uma sessão
façam um restet automático, evitando assim ter que
se fazer um reset.
- TerminateComm
-
void __stdcall
TerminateComm(int ComPort);
-
-
Fecha a porta.
ForceResetOnTerminal void __stdcall
ForceResetOnTerminal(char *TerminalId);
Da proxima vez que
este terminal tentar comunicar vai receber uma ordem para fazer
um reset.
- T_ResetComunications
-
int __stdcall
T_ResetComunications();
-
-
Este comando permite que um
terminal restabeleça comunicações com o PC
depois de se sair e entrar na aplicação do PC.
-
-
Em situação
normal depois de haver uma quebra nas comunicações
é preciso fazer um reset no botão de reset do
terminal.
-
-
Para utilizar este comando é
obrigatório que
o programa no PC ao sair faça T_SaveScreens e ao
reiniciar faça T_LoadScreens.
-
-
Se não
se fizer T_SaveScreens e T_LoadScreens o programa encrava.
-
- T_SaveScreens
-
int __stdcall
T_SaveScreens(char *filename)
-
-
Enquanto a DLL comunica com
os terminais vai mantendo em memoria uma copia da memoria dos
terminais para poder optimizar as comunicações.
-
-
Os terminais ao comunicarem
com o PC só transmitem alterações aos
ecrans.
-
-
Esta função
grava em disco o estado da memoria dos terminais.
-
- T_LoadScreens
-
int __stdcall
T_LoadScreens(char *filename)
-
-
Enquanto a DLL comunica com
os terminais vai mantendo em memoria uma copia da memoria dos
terminais para poder optimizar as comunicações.
-
-
Os terminais ao comunicarem
com o PC só transmitem alterações aos
ecrans.
-
-
Esta função le
do disco o estado da memoria dos terminais.
-
- T_SaveComunicationStatus
-
int __stdcall
T_SaveComunicationStatus( char *filename)
-
Enquanto a DLL comunica com
os terminais vai mantendo em memoria uma copia da memoria dos
terminais para poder optimizar as comunicações.
-
-
Esta função
grava em disco o estado da memoria dos terminais referente ás
comunicações.
O uso desta função
evita ter que se fazer T_ResetComunications se o PC for
desligado.
-
- T_LoadComunicationStatus
-
int __stdcall
T_LoadComunicationStatus( char *filename)
-
Enquanto a DLL comunica com
os terminais vai mantendo em memoria uma copia da memoria dos
terminais para poder optimizar as comunicações.
-
-
Esta função lé
do disco o estado da memoria dos terminais referente ás
comunicações.
O uso desta função
evita ter que se fazer T_ResetComunications se o PC for
desligado.
-
- T_InitScreen
-
int __stdcall T_InitScreen(char *TerminalId,char
*ScreenName,int ScreenFlags,int
ScreenCursor,int ScreenValidate);
-
-
char *TerminalId
-
Ponteiro para o nome do
terminal. O nome deve ser composto por : XXXXXXDD, onde XXXXXX
numa instalação deve ser igual e o DD deve ser
diferente. Exp. "TESTE 01","TESTE 02"
-
-
char *ScreenName
-
Ponteiro para o nome do
Ecran.
-
O nome do ecran pode ser de
qualquer tamanho.
-
-
char *ScreenFlags
-
-
int ScreenCursor
-
Posição inicial
do cursor no ecran. Conta o numero de Gets...() realizados.
-
-
Int ScreenValidate
-
Segundo em que o Ecran perde
validade.
-
O Segundo actual pode ser
calculado por:((Date - 35065) + Time) * 24 * 60 * 60 em VB
-
- T_SendScreen
-
int __stdcall T_SendScreen();
-
-
Envia o Ecran actual para o Terminal. Deve ser
efectuado depois de se fazer um T_InitScreen.
-
Envia Ecran do PC para o TERMINAL.
-
- T_WaitAnyScreenFromPc
int
__stdcall T_WaitAnyScreenFromPc();
-
-
O Terminal fica para sempre á espera que o
PC envie algum ecran.
- T_RefreshScreen
-
int __stdcall T_RefreshScreen(char *TerminalId,char
*ScreenName);
-
-
Sempre que se recebe um Ecran do terminal deve-se
actualizar as nossas variáveis no PC. Para isso deve-se
fazer T_RefreshScreen seguido do mesmo codigo que foi utilizado
para criar um Ecran.
-
- T_SetLcdLightPower
-
int __stdcall T_SetLcdLightPower(char state);
-
-
Liga ou desliga a iluminação do
Display.
-
- T_SetSeconds
-
int __stdcall T_SetSeconds(int seconds);
-
-
Em VB para acertar o relógio de terminal
pode ser:
-
T_SetSeconds ((Date - 35065) + Time) * 24 * 60 * 60
RIOCOM_AutoAdjustSeconds
int __stdcall RIOCOM_AutoAdjustSeconds()
Acerta as horas no terminal em todas as comunicações
com o PC. As Horas internas do PC são enviadas para o
terminal.
T_ReadSeconds
int __stdcall T_ReadSeconds();
Retorna o
numero de segundos no terminal.
- T_SetLaserParameter
-
int __stdcall T_SetLaserParameter(int parameter,int
value);
-
-
Configura o Laser.
- T_Beep
-
int __stdcall T_Beep(int duration,int periodo);
-
-
Faz um Beep no Terminal.
-
- T_Alarm
int
__stdcall T_Alarm(char delay,char freq_duration,char
freq_min,char freq_max,char repeat_n)
-
Faz um beep um pouco mais elaborado. O
seguinte código exemplifica o que acontece.
FOR
X=1 TO repeat_n FOR N= freq_min TO
freq_max
Beep(delay,N) NEXT NEXT
- T_SendScreenToPc
-
int __stdcall T_SendScreenToPc(char *ScreenName,int
scr_flags);
-
-
Envia o Ecran para um buffer que será
enviado para o PC.
-
-
ScreenName , Nome do ecran a enviar.
-
scr_flags , Altera todas as flags deste ecran.
-
-
Este comando utiliza as seguintes flags:
-
-
#define scr_flag_update_pc_if_possible 4
-
O terminal envia este ecran por radio para o PC mas
só tenta 1 vez.
-
Se não conseguir enviar guarda os dados num
buffer interno e envia quando possível.
-
-
#define scr_flag_update_pc_now 8
-
O terminal envia este ecran por radio para o PC ,
tenta para sempre.
-
Se não conseguir enviar fica encravado até
estar numa zona com cobertura.
-
-
#define scr_flag_update_pc_later 16
-
O terminal envia este ecran por radio para o PC mas
não agora.
-
Põe os dados no buffer de envio mas não
tenta enviar.
-
- T_SendScreenToNull
-
int __stdcall T_SendScreenToNull(char
*ScreenName,int scr_flags);
-
-
Este comando é identico ao anterior mas não
põe nada no buffer.
-
-
Envia o Ecran para Null. Importante usar se se
quiser por exemplo cancelar o envio de um ecran.
-
Deve-se usar em conjunto com a flag
scr_flag_restore_fields_after_send
- T_ChangeUpsideDown
-
int __stdcall T_ChangeUpsideDown(char flag);
-
-
Inverte o display. Não funciona no emulador.
-
- T_PrintString
-
int __stdcall T_PrintString(char *txt);
-
-
Imprime uma string no ecran na posição
actual do cursor.
- T_PrintLarge
-
int __stdcall T_PrintLarge(char *txt);
-
-
Imprime uma string no ecran na posição
actual do cursor.
-
Fonte grande.
- T_PrintInverse
int
__stdcall T_PrintInverse(char *txt);
-
Imprime centrado em Inverso Vídeo.
- T_NewLine
-
int __stdcall T_NewLine();
-
-
Muda de Linha
- T_Cls
-
int __stdcall T_Cls();
-
-
Apaga o Ecran
- T_WaitChar
-
unsigned char __stdcall T_WaitChar();
-
-
Retorna a tecla primida.
-
- T_Delay
-
int __stdcall T_Delay(int miliseconds);
-
-
O Terminal fica parado . Útil para mostrar
um ecran de resultado sem obrigar a primir uma tecla.
-
T_CheckIfReceiveData
-
int __stdcall T_CheckIfReceiveData(char
*TerminalId,char *Screen_Name,char *DataType,int
*RawDataSize,char *RawData)
-
-
Deve-se periodicamente verificar se temos dados
novos.
-
-
#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 o programador o screen zipped ou unzipped é
o mesmo.
-
Quando o terminal pede um ecran é porque não
o tem em memoria e precisa dele.
-
Reset é quando se faz um reset ao terminal.
-
-
Exemplo em 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
-
-
Ao gravar o programa na
eeprom na realidade está-se a gravar o programa num
ficheiro eeprom.bin.
-
-
Pode ser utilizado com o
devkit e receber um programa compilado que se envie para a porta
série.
-
-
Podem vários
emuladores correr ao mesmo tempo desde que tenham o TerminalId
com nomes diferentes.
-
- T_SetFunctionKeys
int
__stdcall T_SetFunctionKeys(char *txt)
Este comando
define as teclas de função que depois vão
ser visualizadas com a flag
GetText_flag_ForceFunctionKeys. Parametros:
char *txt String de 4 caracteres sendo F1,F2,F3 e F4. Por
exemplo se se chamar a função
T_SetFunctionKeys("1234"); define-se o F1='1', F2='2',
F3='3', F4='4'. Esta função deve ser utilizada em
conjunto com as funções T_OnF1GotoScreen,
T_OnF2GotoScreen...
T_SetLargeFunctionKeys
- int
_stdcall T_SetLargeFunctionKeys(char *txt,unsigned char
NumberOfKeys)
Este comando define as teclas de função
que depois vão ser visualizadas com a flag
GetText_flag_ForceFunctionKeys.
A
diferença da função anterior é que
permite definir mais do que um caracter por tecla.
Exemplo:
T_SetLargeFunctionKeys("MENU"+chr(27)+"SAIR"+chr(27),5)
O
Primeiro parametro é o texto a aparecer no ecran. O
ultimo caracter é a tecla que vai ser enviada para o
terminal quando se carrega na respectiva tecla de função.
Para quase todas as aplicações o caracter 27 (ESC)
é o ideal pois faz com que o T_Read termine.
O
Segundo parametro é o numero de caracteres por tecla.
Neste exemplo "MENU"(4) + chr(27)(1) =(5)
Assim
ficaria definida a primeira e a segunda tecla de
função. Podem-se definir 8 teclas de função.
Para aceder ao segundo grupo de 4 deve-se primir o Shift( Seta
para cima).
Esta função pode ser utilizada
em conjunto com as funções T_OnF1GotoScreen,
T_OnF2GotoScreen... -
-
T_ChangeScreenFormat
int
__stdcall T_ChangeScreenFormat(int ScreenFormat)
Este
comando define o tipo de fonte usado em todos os ecrans.
Linha 1 --> (Letra grande ) +1 Linha 2 -->
(Letra grande ) +2 Linha 3 --> (Letra grande ) +4 Linha
4 --> (Letra grande ) +8 etc
Por exemplo para um
ecran todo com letra pequena : T_ChangeScreenFormat(0)
Linha
1 e 4 c/ letra grande: T_ChangeScreenFormat(1+8)
#define
f_DefineMultipleBases 107
#define f_GetExit 108
T_DefineMultipleBases int
__stdcall T_DefineMultipleBases(int position,char *txt,char
*base_name)
Permite
que o terminal depois de arrancar pergunte a que base se deve
ligar. Pode ter interesse para usar o mesmo terminal com
programas diferentes, ou com PC's diferentes.
O
base_name de ser o nome da base, por exemplo 'BAS00'(nome da base
por defeito).
Funções
de Goto
-
T_GotoScreen
-
int __stdcall
T_GotoScreen(char *ScreenName);
-
-
Quando este comando for
executado o Terminal muda para o ecran "ScreenName"
-
T_OnEscapeGotoScreen
-
int __stdcall
T_OnEscapeGotoScreen(char *ScreenName);
-
-
Quando o utilizador primir a
tecla Esc o terminal vai para o ecran "ScreenName"
-
- T_OnF1GotoScreen
-
int __stdcall
T_OnF1GotoScreen(char *ScreenName);
-
-
Quando o utilizador primir a
tecla F1 o terminal vai para o ecran "ScreenName"
-
As teclas de função devem ser
definidas com a função "T_SetFunctionKeys"
e activadas num campo de input com a text_flag
GetText_flag_ForceFunctionKeys.
-
- T_OnF2GotoScreen
-
int __stdcall
T_OnF2GotoScreen(char *ScreenName);
-
-
Quando o utilizador primir a
tecla F2 o terminal vai para o ecran "ScreenName"
As
teclas de função devem ser definidas com a função
"T_SetFunctionKeys" e
activadas num campo de input com a text_flag
GetText_flag_ForceFunctionKeys.
-
-
- T_OnF3GotoScreen
-
int __stdcall
T_OnF3GotoScreen(char *ScreenName);
-
-
Quando o utilizador primir a
tecla F3 o terminal vai para o ecran "ScreenName"
As
teclas de função devem ser definidas com a função
"T_SetFunctionKeys" e
activadas num campo de input com a text_flag
GetText_flag_ForceFunctionKeys.
-
-
- T_OnF4GotoScreen
-
int __stdcall
T_OnF4GotoScreen(char *ScreenName);
-
-
Quando o utilizador primir a
tecla F4 o terminal vai para o ecran "ScreenName"
As
teclas de função devem ser definidas com a função
"T_SetFunctionKeys" e
activadas num campo de input com a text_flag
GetText_flag_ForceFunctionKeys.
-
-
-
T_IfVar1EqVar2Goto
-
int __stdcall
T_IfVar1EqVar2Goto(char *VariableName1,char *VariableName2,char
*ScreenName);
-
-
Se o conteudo da variavel1 =
variavel2 o terminal vai para o ecran "ScreenName"
-
-
T_IfVar1GreaterVar2Goto
-
int __stdcall
T_IfVar1GreaterVar2Goto(char *VariableName1,char
*VariableName2,char *ScreenName);
-
-
Se o conteúdo da
variavel1 > variavel2 o terminal vai para o ecran
"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);
-
-
Se o conteúdo da
variavel1 <> variavel2 o terminal vai para o ecran
"ScreenName"
-
-
Funções de
Duplicação de ecrans Offline
T_MarkScreenAsChanged int
__stdcall T_MarkScreenAsChanged()
Esta função
permite marcar o ecran actual para mais tarde ser enviado com a
função
T_SendChangedScreensToPc.
T_ReadCurrentScreenIndex
int __stdcall T_ReadCurrentScreenIndex()
Esta
função retorna o valor do index do ecran. Se o
ecran for criado com a
função:
T_CreateOrEditScreenIndexOnLastCursorPosition
- O indice será a ultima posição do cursor
antes de chamar o
ecran.
T_CreateOrEditScreenIndexOnLastNumericalValue - O
indice será o valor da ultima variavel lida com o
GetNumerical.
T_CreateOrEditScreenIndexOnLastCursorPosition int
__stdcall T_CreateOrEditScreenIndexOnLastCursorPosition(char
*ScreenName)
Cria e salta para uma copia do ecran indexada
pela posição do cursor ( Numero linha). ATENÇÂO
O ECRAN ORIGINAL TEM QUE ESTAR EM
MEMORIA.
T_CreateOrEditScreenIndexOnLastNumericalValue int
__stdcall T_CreateOrEditScreenIndexOnLastNumericalValue(char
*ScreenName)
Cria e salta para uma copia do ecran indexada
pela ultima variavel numerica editada. A variavel editada tem
que ser numerica e tem que ter a flag GetText_flag_ScreenIndex
(65536) activa.
GetNumerical
&var,len,GetText_flag_ScreenIndex
ATENÇÂO
O ECRAN ORIGINAL TEM QUE ESTAR EM
MEMORIA.
T_SendChangedScreensToPc int
__stdcall T_SendChangedScreensToPc(int scr_flags)
Envia
todos os ecrans marcados com T_MarkScreenAsChanged e todos os
novos ecrans criados com (
T_CreateOrEditScreenIndexOnLastCursorPosition ou
T_CreateOrEditScreenIndexOnLastNumericalValue).
Funções
de Browse
-
-
As seguintes funções devem ser
usadas em conjunto e terminadas com a função
T_Read.
-
-
-
T_Read
-
int __stdcall T_Read();
-
-
Esta função é equivalente á
já antiga função de read do clipper.
-
Depois de uma série de T_Say e T_Get...
deve-se terminar com um T_Read.
-
O Terminal quando executa um T_Read pára e
dá ao utilizador a possibilidade editar os campos de
input.
-
Para sair do T_Read deve-se primir ESC ou então
um dos T_Gets deve ser o T_GetCheckEnter.
Esta função
retorna a linha em que se saiu do Read.
T_Say
- int __stdcall T_Say(char *txt);
-
-
Deve-se utilizar em conjunto com o T_Get... e o
T_Read.
-
Ao fazer T_Read o cursor posiciona-se no texto do
T_Say, e permite executar o T_Get...
- T_NoSay
-
int __stdcall T_NoSay(unsigned char size);
-
-
Deve-se utilizar em conjunto com o T_Get... e o
T_Read.
-
Deve ser utilizado quando se quer que o cursor
fique em cima do campo de input com um tamanho (size).
-
- T_Scroll
-
int __stdcall T_Scroll(char *txt_fix,char
*txt_rot);
-
-
Deve-se utilizar em conjunto com o T_Get... e o
T_Read.
-
Imprime o txt_fix e se o cursor estiver parado em
cima roda o txt_rot.
-
-
As seguintes
funções devem ser usadas em conjunto e terminadas
com a função T_Read e seguidas a uma das funçoes
anteriores.
-
-
T_GetText
-
int __stdcall T_GetText(char *txt,int size,int
flags);
-
-
'txt' deve ser um apontador para uma zona de
memoria livre para receber o texto com o tamanho 'size'.
-
Em VB deve-se declarar uma variável tipo
string e em seguida inicializa-la com espaços. Para que a
DLL pense que a string está vazia deve-se começar
com o chr(0) como no exemplo anterior.
- T_GetTextTemplate
-
int __stdcall T_GetTextTemplate(char *txt,char
*templates,int flags)
-
-
'txt' deve ser um apontador para uma zona de
memoria livre para receber o texto com o tamanho
strlen(template).
Em VB deve-se declarar uma variável
tipo string e em seguida inicializa-la com espaços. Para
que a DLL pense que a string está vazia deve-se começar
com o chr(0) como no exemplo anterior.
No campo template
deve-se criar uma mascara com os caracteres
validos.
Exemplo:
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_GetTextFromList2
-
int __stdcall T_GetTextFromList(int *number,int
size,char *ScreenName,char *ListName,int
flags);
Equivalente ao GetTextFromList mas permite
alterar as flags e activar uma lista diferente. O
GetTextFromList trabalha sempre com a lista previamente activada
e com as flags previamente activadas.
-
- T_GetNumerical
-
int __stdcall T_GetNumerical(int *Number,int
size,int
flags);
-
-
Equivalente ao GetText mas recebe um int de 32 bits
em vez de uma string.
-
O Size é o tamanho do campo de input.
- T_GetLink
-
int __stdcall T_GetLink(char *ScreenName,int
Value,char FastKey);
-
-
Qundo se primir enter nesta opção é
chamado o ecran "ScreenName".
-
Se se primir uma FastKey o cursor muda para o
GetLink equivalente e chama o ecran "ScreenName"
-
-
Exemplo 2.
-
- T_GetCheckEnter
-
int __stdcall T_GetCheckEnter();
-
-
Para ser utilizado com o T_Say.
-
Exp.
-
T_Say "OK"
-
T_GetCheckEnter
-
-
Faz com que o cursor se estiver no OK e se premir
Enter abandone o Ecran
-
- T_GetEditDate
-
int __stdcall T_GetEditDate();
-
Permite o utilizador alterar a
data do terminal.
- T_GetEditTime
-
int __stdcall T_GetEditTime();
-
-
Permite o utilizador alterar a hora do terminal.
T_ShowDate int __stdcall
T_ShowDate();
T_ShowTime int __stdcall
T_ShowTime();
T_ShowWeekDay int
__stdcall T_ShowWeekDay();
- T_GetOption
-
int __stdcall T_GetOption(int *position,char
*List,int LenList,int NumberOfElements);
-
-
Esta opção permite seleccionar um
elemento de uma lista. Por exemplo um 'Yes' ou 'No'.
- T_GetOptionGotoScreen
-
int __stdcall T_GetOptionGotoScreen(int
*position,char *List,int LenList,int NumberOfElements,char
*ScreenList);
-
-
Esta opção permite seleccionar um
elemento de uma lista e saltar para um ecran de acordo com o
elemento seleccionado. Os elementos da lista devem ser separados
pelo Chr(0), assim como os elementos dos ecrans.
-
-
Exemplo:
-
T_GetOptionGotoScreen ( posicao,
"Yes"+chr(0)+"No"+chr(0) , 8 , 2 ,
"Ecran1"+chr(0)+"Ecran2"+chr(0) )
Neste
exemplo ao sair do T_Read o programa salta para o ecran1 ou
ecran2 em função de 'Yes' ou 'No '
-
- T_GetVariable
-
int __stdcall T_GetVariable(char *VariableName,int
size,int flags);
-
-
Função equivalente ao T_GetNumerical
mas com variáveis locais do terminal.
-
Permite que o utilizador edite o valor de uma
variável local do 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_GetExitNow int
__stdcall T_GetExitNow()
O terminal
abandona a função T_Read se o cursor estiver em
cima desta linha.
T_ExitReadWithRadio
int __stdcall T_ExitReadWithRadio()
O terminal,
depois de se fazer Read(), fica com o teclado activo, para se
poder fazer browse do ecran. O modulo de rádio fica em
recepção. Se o PC enviar um ecran para o terminal
nesta situação o terminal passa para a instrução
a seguir ao read, que deverá ser: T_WaitAnyScreenFromPc.
Atenção:
O uso desta função deve ser
ponderado porque o terminal fica a consumir muito ( 30 mA ),
sendo o consumo normal de 1 mA. O Teclado
pode passar a funcionar ligeiramente pior.
T_OnRadioGotoScreen
int __stdcall T_OnRadioGotoScreen(char *ScreenName)
Esta função deve ser usada em conjunto
com a função T_ExitReadWithRadio. Nesta situação
o T_WaitAnyScreenFromPc, não deve ser usado. Deve ser
usada em conjunto com o Read().
T_OnTimerGotoScreen int
__stdcall T_OnTimerGotoScreen(int timer,char
*ScreenName)
Permite chamar um ecran em Background dentro
de um Read(). O timer é o tempo em segundos.
- Esta função deve ser usada
sozinha, porque internamente ela contem um T_say e um
T_Get...
-
-
T_PutTextOnList
-
int __stdcall
T_PutTextOnList(char *txt,int Value,char FastKey);
Funções
de RFID
T_WriteTagIt int __stdcall
T_WriteTagIt(char position,char size,char *data)
Escreve dados no cartão.
T_ReadTagIt int __stdcall
T_ReadTagIt(char position,char size,char *data)
Le dados do cartão.
Funções
com Variáveis
-
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);
-
Funções
de Listas
-
-
T_PutTextOnList
-
int __stdcall T_PutTextOnList(char *txt,int
Value,char FastKey);
-
T_SetGetTextFromListFlags int
__stdcall T_SetGetTextFromListFlags(int flags)
Define
o aspecto do GetTextFromList em todas as ocorrencias
futuras. Exemplo: 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);
-
-
Cria na memoria do terminal um index para uma
lista. O 'size' é o numero de elementos que a lista pode
conter.
-
O Terminal internamente gasta (8*size) bytes de
memoria, para manter a lista.
-
-
A sequencia de comandos para criar uma lista deve
ser:
-
-
T_CreateListIndex "Utilizadores",10
-
T_ActivateListIndex
"Utilizadores"
-
-
T_PutTextOnList ... põe na lista de
"Utilizadores" os vários elementos
-
T_PutTextOnList ... põe na lista de
"Utilizadores" os vários elementos
-
T_PutTextOnList ... põe na lista de
"Utilizadores" os vários elementos
-
-
O T_PutTextOnList pode ser executado de vários
ecrans diferentes.
-
Depois de activar uma lista TODOS os
T_PutTextOnList estão relacionados com a lista activada.
-
-
T_GetTextFromList... Vai buscar um elemento da
Lista activada.
-
-
T_DestroyListIndex
-
int __stdcall T_DestroyListIndex(char *ListName);
-
-
Liberta a memoria do terminal, matando a lista.
-
-
T_ActivateListIndex
-
int __stdcall T_ActivateListIndex(char *ListName);
-
-
Activa uma lista.
-
-
T_DesactivateListIndex
-
int __stdcall
T_DesactivateListIndex();
-
-
Desactiva a lista activada.
-
-
T_CreateListIndex "LISTA
COMIDAS", 1000
-
T_ActivateListIndex "LISTA
COMIDAS"
-
-
ListName > Nome a dar a
uma lista. Pode ser uma lista de comidas ou de utilizadores.
-
Min,Max valores limites da
Lista. Estes valores não podem ser muito grandes pois
gastam memoria no terminal.
-
-
Exemplo,
-
T_CreateListIndex "LISTA
COMIDAS", 1000
-
Gasta 8Kb de memoria RAM no
terminal para criar 1000 índices .
-
-
Para Introduzir Dados numa
lista primeiro tem que se activar a Lista.
-
T_ActivateListIndex "LISTA
COMIDAS"
-
-
Em seguida utiliza-se o
comando PutTextOnList para
introduzir dados.
-
-
T_Cls
-
T_PrintInverse "MENU"
-
T_NewLine
-
T_Say "1-Pedir"
-
T_GetLink "DADOS DO PEDIDO", 0, Asc("1")
-
T_NewLine
-
T_Say "2-Conta"
-
T_GetLink "CONTA", 0, Asc("2")
-
T_NewLine
-
T_Say "3-Anular"
-
T_GetLink "ANULAR", 0, Asc("3")
-
T_NewLine
-
T_Say "4-Horas"
-
T_GetLink "HORAS", 0, Asc("4")
-
T_NewLine
-
T_Beep 50, 50
-
T_Read
-
-
int __stdcall T_GetLink(char *ScreenName,int
Value,char FastKey);
-
-
int Value (Opcional se 0 não
é usado)
-
Para ser utilizado em
conjunto com o GetTextFromList, ao fazer Enter no
GetTextFromList se o Value for igual o Terminal posiciona o
cursor nesse campo.
-
-
FastKey
-
Tecla rápida para
entrar num menu.
-
-
-
-
T_Cls
-
T_PrintInverse "EMENTA"
-
T_NewLine
-
T_NewLine
-
T_Say "1-Carne"
-
T_GetLink "CARNE", 10, Asc("1")
-
T_NewLine
-
T_Say "2-Peixe"
-
T_GetLink "PEIXE", 20, Asc("2")
-
T_NewLine
-
T_Say "3-Vinhos"
-
T_GetLink "VINHO", 30, Asc("3")
-
T_NewLine
-
T_Say "4-Bebidas"
-
T_GetLink "BEBIDAS", 40, Asc("4")
-
T_NewLine
-
T_Say "5-Sobremesas"
-
T_GetLink "SOBREMESA", 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 = "NAO" + Chr(0) + "SIM" +
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 Ponteiro para a posicão do
cursor. Depois de executado o valor é alterado.
-
char *List Ponteiro para uma String contendo uma
lista dos vários elementos , separados por chr(0)
-
int LenList Tamanho total da String
-
int NumberOfElements Numero
de elementos na string
-
-
-
Seguido de um 'Enter'
-
O Nome 'Ze Carioca' automaticamente é posto
vindo do ecran "UTILIZADORES", visto que o 'Ze
Carioca' é o utilizador numero 1.
-
-
Password = Chr(0) + Space(10)
-
Utilizador = 0
-
T_Cls
-
T_ActivateListIndex "LISTA UTIL"
-
T_PrintInverse "LOGIN"
-
T_NewLine
-
-
T_Say "Utiliza.:"
-
T_GetTextFromList Utilizador, 10, "UTILIZADORES"
-
T_NewLine
-
-
nome = ListaUtilizadores(Utilizador)
-
-
T_Say "Password:"
-
T_GetText Password, 10, GetText_flag_ExitEnter +
GetText_flag_Underline
-
T_NewLine
-
T_Beep 50, 50
-
T_Read
-
-
A Função GetTextFromList aceita um
numero como input.
-
-
No Terminal Horizontal :
-
Se se primir a tecla '.' , Automaticamente é
chamado o Ecran ScreenName.
-
-
No Terminal Vertical :
-
As teclas de função mostram um '?' .
-
Se se premir a tecla 'F1', Automaticamente é
chamado o Ecran ScreenName.
-
-
-
Nesta situação o valor em number é
usado para se posicionar no novo ecran.
-
Se no novo ecran existir um valor no (campo (Value
de PutTextOnList) = number) o cursor posiciona-se ai.
-
-
Se se criar uma Lista com as devidas funções
ao introduzir um numero seguido de Enter , aparece o texto
correspondente da Lista.
Para definir o aspecto da linha
de input pode-se utilizar a função
T_SetGetTextFromListFlags. Esta função define o
aspecto do GetTextFromList em todas as suas ocorrencias no
futuro.
-
-
-
int __stdcall T_GetTextFromList(int *number,int
size,char *ScreenName);
-
int *number Apontador para um elemento.
-
int size Tamanho do campo de input
-
-
horas = Time
-
T_Cls
-
T_PrintString ("Horas actuais:")
-
T_NewLine
-
T_PrintLarge horas
-
T_NewLine
-
T_NewLine
-
T_NewLine
-
T_NewLine
-
T_Beep 50, 50
-
key = T_WaitChar
-
T_GotoScreen "MENU"
-
-
T_Cls
-
T_PrintInverse "DADOS PESSOAIS"
-
T_NewLine
-
T_Say "Nome: "
-
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-Bife"
-
T_GetLink "Bife", 0, Asc("1")
-
T_NewLine
-
T_PutTextOnList "Feijoada", 12, Asc("2")
-
T_NewLine
-
T_PutTextOnList "Ovos ", 13, Asc("3")
-
T_NewLine
-
T_PutTextOnList "Costoletas", 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 retorna ao
T_GetTextFromList
depois de primir enter.
-
int Value Valor que retorna ao
T_GetTextFromList
depois de primir enter.
-
char FastKey Tecla rápida.
-
-
P.S.
-
Se antes de executar este ecran se se
fizer T_ActivateListIndex então
é criado um indice automaticamente.
-
Ao fazer T_GetTextFromList
se existir um indice e se se introduzir um Numero valido quando
se faz enter automaticamente o campo é substituido pelo
texto valido.
-
-
Primir Enter e
-
-
-
O ecran é redesenhado com a linha de pedidos
aumentada 3 *
-
-
-
T_Cls
-
T_PrintInverse "PEDIDO"
-
T_ActivateListIndex "LISTA COMIDAS"
-
T_NewLine
-
T_PrintString "Prato Qt"
-
T_NewLine
-
T_StartRepeat NumeroPedidos
-
For n = 1 To NumeroPedidos
-
T_NoSay 15
-
T_GetTextFromList pratos(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
-
-
Ao fazer GetRepeat o codigo entre StartRepeat e
EndRepeat é repetido n vezes.
-
No exemplo acima a linha de
pedir os pratos é aumentada 3 vezes.
-
-
Dim nome As String
-
Dim tel As String
-
tel = Chr(0) + Space(10)
-
nome= Chr(0) + Space(10)
-
-
T_InitScreen TerminalId, "TESTE",
scr_flag_execute, 0, 0
-
T_Cls
-
T_PrintInverse "DADOS PESSOAIS"
-
T_NewLine
-
T_Say "Nome: "
-
T_GetText nome, 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
-
Ao enviar um Ecran para o
terminal com este atributo o terminal para de receber ecrans e
executa este ecran.
-
-
#define scr_flag_changed 2
-
Nao Usado
-
-
#define scr_flag_update_pc_if_possible 4
-
O terminal envia este ecran por radio para o PC mas
só tenta 1 vez.
-
Se não conseguir enviar guarda os dados num
buffer interno e envia quando possivel.
-
-
#define scr_flag_update_pc_now 8
-
O terminal envia este ecran por radio para o PC ,
tenta para sempre.
-
Se não conseguir enviar fica encravado até
estar numa zona com cobertura.
-
-
#define scr_flag_update_pc_later 16
-
O terminal envia este ecran por radio para o PC mas
não agora.
-
Põe os dados no buffer de envio mas não
tenta enviar.
-
-
#define scr_flag_auto_destroy 32
-
Depois de ser visto este ecran perde validade no
terminal.
-
-
#define scr_flag_ask_pc_answer 64
-
Não Usado.
-
-
#define scr_flag_ask_pc_update 128
-
Não Usado.
-
-
#define scr_flag_restore_fields_after_send 256
-
Depois de enviar por radio este ecran volta ao
aspecto inicial.
-
-
#define scr_flag_dont_stop
512
-
A utilizar quando se quer
enviar um ecran para o terminal, que ele seja executado, mas que
o terminal não pare.
-
Muito util se se estiver a
enviar para o terminal ecrans com Listas para que ele aprenda as
listas.
-
T_PutTextOnList
Text
flags
-
#define text_flag_Protected -1
-
Campo não pode ser editado.
-
-
#define text_flag_AutoExit -2
-
Se o cursor estiver na ultima posição
sai.
-
-
#define text_flag_Password -4
-
****
-
#define text_flag_Number -8
-
Só aceita numeros
-
-
#define text_flag_ExitEnter -16
-
Com Enter termina o Ecran
-
-
#define text_flag_ExitAlways -32
-
Ao sair do campo termina o Ecran
-
-
#define text_flag_Barcode -64
-
Liga o Barcode
-
-
#define text_flag_NotUnderline -128
-
Mostra campo de Input Nao Sublinhado
-
-
#define text_flag_Link -256
-
NAO UTILIZAR
-
-
#define text_flag_NewText -512
-
Limpa o Texto
-
#define text_flag_NumberRightAligned
-1024 Alinha um numero á direita.
-
#define text_flag_DontShowZero -2048
Se o campo
tiver o valor zero, não mostra nada.
-
#define text_flag_ForceFunctionKeys -4096
Mostra
as teclas de função defenidas com a função
T_SetFunctionKeys .
-
Se se primir uma tecla de função o
terminal vai para o ecran T_OnFxGotoScreen
#define
text_flag_NoFunctionKeys -8096 -
#define Text_flag_AutoexitfieldON -16384
-
Equivalente ao AutoExit , mas sai no ultimo
character
-
#define Text_flag_OnlyExitIfTemplateOK -32768
-
Se se estiver a usar templates para ler codigos de
barras só sai deste campo se a leitura estiver
ok.
#define Text_flag_ScreenIndex -65536 Usar sempre
em conjunto com a função
T_CreateOrEditScreenIndexOnLastNumericalValue, para definir qual
o valor a ser usado como index. -
-
T_Cls
-
T_PrintInverse "VARIAVEIS"
-
T_NewLine
-
T_WriteVariable "VALOR1", 12
-
T_WriteVariable "UNIDADE", 1
-
T_AddVariable "VALOR1", "VALOR1",
"UNIDADE"
-
T_Say "Result ."
-
T_GetVariable "VALOR1", 10, 0
-
T_Read
-
-
As variaveis utilizadas no terminal são
locais do terminal. Estão na memoria do terminal. São
independentes do ecran.
-
-
Para manter uma variavel na memoria entre resets do
terminal deve-se no primeiro ecran reservar as respectivas
variaveis.
-
-
T_ReserveVariable
-
-
Pode-se utilizar as funções
condicionais para ter pequenos programas a correr no terminal
sem ter que vir ao PC.
-
|