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