Comandos e Funções Advpl para Microterminal

Comandos e Funções Advpl para Microterminal

É um post com o objetivo de apresentar como programar para microterminal com comutadora, pois os microterminais padrão Ethernet, são programáveis com tecnologia VT100, se este for o seu caso, leia o post Programação Advpl coletores de rádio frequência padrão VT100.

Mas o que é um Microterminal?microterminal

Os Microterminais são utilizados em todo e qualquer ponto que requeira entrada de dados ou consulta, tanto via digitação quanto por meio de leitura ótica ou magnética.

Os Microterminais RS485 são aplicados principalmente quando se necessita de mais de um ponto de entrada de dados, pode-se conectar até 32 microterminais em uma só rede. Sua conexão é feita através de barramento com par trançado (2vias) de até 1.000 metros. A alimentação de cada microterminal é feita por uma fonte de alimentação, diretamente na
corrente elétrica de 110 ou 220 V ac. Cada fonte é ligada a uma Caixa de Conexão (uma para cada terminal), responsável pela alimentação e pela comunicação, via par trançado, com o ponto seguinte. Próximo ao computador de processamento liga-se a Comutadora que se comunica com a rede através de interface ethernet ou paralela.

Comandos para Microterminal

TerCls

Tipo: Microterminal

Apaga todos os caracteres existentes na tela no microterminal preenchendo a tela com espaços em branco.

Sintaxe:

TerCls

Retorna:

NIL

Exemplo:

TerCls


@ … TERSAY

Tipo: Microterminal

Escreve no display do microterminal a string especificada pelo parâmetro <cMsg> na linha <nLin> e coluna <nCol>.

Sintaxe:

@ <nLin>, <nCol> TERSAY <cMsg>

Parâmetros:

nLin = Linha onde se deseja colocar a mensagem

nCol = Coluna onde se deseja colocar a mensagem

cMsg = Mensagem que se deseja colocar na tela

Retorna:

NIL

Exemplo:

@ 01,00 TERSAY “Pressione <ENTER> para continuar.”


@ … TerGetRead

Tipo: Microterminal

Executa uma entrada de dados no microterminal.

Sintaxe:

@ <nLin>, <nColl>  TerGetRead <uVar>           PICTURE <cPict>  VALID <valid> WHEN <when>

Parâmetros:

nLin      = Linha a se executar a entrada de dados.

NCol    = Coluna a se executar a entrada de dados.

uVar     = Variavel a se devolver o valor da entrada de dados.

cPict     = Picture da entrada de dados, as pictures disponíveis são:

“X” – Para entrada de caracteres numéricos(0-9) e letras (A-Z).

“9” – Para entrada de caracteres numéricos(0-9).

“A” – Para entrada de caracteres letra(A-Z).

“*” – Para entrada de caracteres numéricos(0-9) e letras (A-Z) mas exibindo “*” na tela.

“.” – Exibe ponto decimal na tela.

“/” – Exibe a barra (“/”) na tela.

“@”- Se informado no final do picture forçará ao operador pressionar enter para sair do get, mesmo que o  campo já tenha sido preenchido.

Valid    = Validação da entrada de dados.

When   = Condição para se executar a entrada de dados.

 

Atenção: Quando utilizar o coletor de código de barras, o tamanho do get deve ser igual ou maior que o tamanho do código de barras.

Retorna:

NIL

Exemplo:

lDigNome := .T.

cNome    := Space(10)

cIdade   := Space(02)

TerCls

@ 00,00 TerSay “Nome:”

@ 00,06 TerGetRead cNome  PICTURE “XXXXXXXXXX” VALID !Empty(cNome) WHEN lDigNome

@ 00,00 TerGetRead cIdade  PICTURE “99” VALID Val(cIdade)>0

 

Observações:

A variável da entrada de dados podem ser do tipo data, caracter ou numérico.

 


 TerCBuffer

Tipo: Microterminal

Libera o buffer de teclado do microterminal, esse comando é útil em rotinas de interface com o usuário de forma a garantir que as teclas a serem processadas do buffer do teclado sao apropriadas a atividade corrente e não   pendentes de uma atividade anterior.

Sintaxe:

TerCBuffer

Retorna:

Caracteres que estavam pendentes no buffer no teclado do microterminal.

Exemplo:

TerCBuffer

@ 01,00 TERSAY “Pressione <ENTER> para continuar.”

TerInkey(0)

 


TerEsc

Tipo: Microterminal

Verifica se a ultima tecla pressionada no microterminal foi a DEL (consideramos como equivalente a <ESC> no teclado normal).

Sintaxe:

TerEsc

Retorna:

.T. se a ultima tecla pressionada foi <DEL> ou .F. se não foi

Exemplo:

TerCls

While .T.

cNome := Space(10)

@ 00,00 TerSay “Nome:”

@ 00,07 TerGetRead cNome  PICTURE “XXXXXXXXXX”

If TerEsc

Exit

EndIf

EndDo

TerCls

@ 01,00 TerSay “Finalizando…”

 


TerBeep

Tipo: Microterminal

Emite um sinal sonoro pelo ‘buzzer’ do Microterminal, caso o microterminal não possua este dispositivo instalado nada acontece.

Sintaxe:

TerBeep <nVezes>

Parâmetros:

nVezes – Numero de sinais sonoros a emitir.

Retorna:

NIL

Exemplo:

TerBeep 3      // executa 3 sinais sonoros

TerBeep        // executa apenas 1 sinal sonoro

 

 


TerIsQuit

Tipo: Microterminal

Função utilizada em pontos do programa para se verificar se o Monitor esta   tentando finalizar a aplicação do microterminal, deve ser utilizada em lugares   do programa em que o fechamento da aplicação cause transtornos, como por exemplo,  apos a conclusão de uma venda.

Sintaxe:

TerIsQuit

Retorna:

.F.

Exemplo:

While .T.

TerCls

@ 00,00 TerSay “Inicando Venda…”

.

.

.

.

.

@ 00,00 TerSay “Venda Finalizada…”

TerIsQuit        // caso o monitor esteja finalizando a aplicação somente

//neste ponto a finalização será efetuada, garantindo

//assim que a venda seja concluída.

EndDo

 

 


Funções para Microterminal

TerCls()

Tipo: Microterminal

Apaga todos os caracteres existentes na tela no microterminal preenchendo a tela com espaços em branco.

Sintaxe:

TerCls()

Retorna:

NIL

Exemplo:

TerCls()

 


TerSay()

Tipo: Microterminal

Escreve no display do microterminal a string especificada pelo parâmetro <cMsg> na linha <nLin> e coluna <nCol>.

Sintaxe:

TerSay(nLin,nCol,cMsg)

Parâmetros:

nLin = Linha onde se deseja colocar a mensagem

nCol = Coluna onde se deseja colocar a mensagem

cMsg = Mensagem que se deseja colocar na tela

Retorna:

NIL

Exemplo:

TerSay(01,00,”Pressione <ENTER> para continuar.”)

 


TerInkey()

Tipo: Microterminal

Especifica a quantidade de segundos que TerInkey() deve esperar por uma tecla.  O valor pode ser especificado em incrementos de um segundo. Se for especificado zero, o programa para ate que uma tecla seja pressionada.

Sintaxe:

TerInkey([nSegundos])

Parâmetros:

nSegundos =  Numero de segundos a aguardar

Retorna:

Código da Tecla pressionada, se não foi pressionado nada o valor retornado é “”

Exemplo:

While !TerEsc()

cTecla := TerInkey(0)

@ 01,00 TerSay “Tecla Pressionada “+cTecla

EndDo

 


TerKeyBoard()

Tipo: Microterminal

Função responsável por alimintar tecla no buffer do teclado

Sintaxe:

TerKeyBoard([cBuffer])

Parâmetros:

cBuffer =  Tecla a  ser guardada no buffer

Retorna:

Nil

Exemplo:

cTela := TerSave()

TerCls()

If nSleep#NIL

TerKeyboard(chr(13))

EndIf

If nSleep#NIL

TerInkey(nSleep/1000)

EndIf

 


TerLastKey()

Tipo: Microterminal

Função responsável retornar o valor da última tecla pressionada

Sintaxe:

TerLastkey()

Retorna:

Numero – número da tecla

Exemplo:

If TerLastKey() ==27

Exit

EndIf

 


TerCBuffer()

Tipo: Microterminal

Libera o buffer de teclado do microterminal, esse comando é útil em rotinas de interface com o usuário de forma a garantir que as teclas a serem processadas do buffer do teclado são apropriadas a atividade corrente e não   pendentes de uma atividade anterior.

Sintaxe:

TerCBuffer()

Retorna:

Caracteres que estavam pendentes no buffer no teclado do microterminal.

Exemplo:

TerCBuffer()

TerSay(01,00,”Pressione qualquer tecla para continuar.”)

TerInkey(0)

 


TerEsc()

Tipo: Microterminal

Verifica se a ultima tecla pressionada no microterminal foi a DEL (consideramos como equivalente a <ESC> no teclado normal).

Sintaxe:

TerEsc()

Retorna:

.T. se a ultima tecla pressionada foi <DEL> ou .F. se não foi

Exemplo:

TerCls()

While .T.

cNome := Space(10)

TerSay(00,00,”Nome:”)

TerGetRead(01,07,@cNome,”XXXXXXXXXX”)

If TerEsc()

Exit

EndIf

EndDo

TerCls()

TerSay(01,00,”Finalizando…”)

 


TerBeep()

Tipo: Microterminal

Emite um sinal sonoro pelo ‘buzzer’ do Microterminal, caso o microterminal não possua este dispositivo instalado nada acontece.

Sintaxe:

TerBeep([nVezes])

Parâmetros:

nVezes – Numero de sinais sonoros a emitir.

Retorna:

NIL

Exemplo:

TerBeep(3)      // executa 3 sinais sonoros

TerBeep()       // executa apenas 1 sinal sonoro

 


TerNumTer()

Tipo: Microterminal

Retorna o numero do microterminal especificado no Monitor de microterminais.

Sintaxe:

TerNumTer()

Retorna:

Numero do microterminal

Exemplo:

nTerminal := TerNumTer()

@ 00,00 TerSay “Terminal : “+StrZero(nTerminal)

 


TerSave()

Tipo: Microterminal

Grava uma região da tela do microterminal para posterior exibição.

Sintaxe:

TerSave([nTopo],[nEsquerda],[nBase],[nDireita])

Parâmetros:

nTopo           – Linha inicial da região de tela a ser gravada.

nEsquerda – Coluna inicial da região de tela a ser gravada

nBase           – Linha final da região de tela a ser gravada.

nDireita      – Coluna final da região de tela a ser gravada.

Retorna:

Região de tela especificada na forma de cadeia de caracteres.

Exemplo:

TerCls

@ 00,00 TerSay “Tela a ser salva.”

cTela := TerSave(00,00,01,40)

TerCls

TerRestore(00,00,01,40,cTela)


TerRestore()

Tipo: Microterminal

Restaura a região de tela do microterminal gravada pela função TerSave.

Sintaxe:

TerRestore([nTopo],[nEsquerda],[nBase],[nDireita],cTela)

Parâmetros:

nTopo              = Linha inicial da região de tela a ser restaurada.

nEsquerda    = Coluna inicial da região de tela a ser restaurada.

nBase              = Linha final da região de tela a ser restaurada.

nDireita         = Coluna final da região de tela a ser restaurada.

cTela               = É uma cadeia de caracteres que contem a região de tela gravada.

Retorna:

NIL

Exemplo:

TerCls

@ 00,00 TerSay “Tela a ser salva.”

cTela := TerSave(00,00,01,40)

TerCls

TerRestore(00,00,01,40,cTela)

 


TerPBegin()

Tipo: Microterminal

Executa função para inicio de impressão na porta paralela ou serial do   microterminal.

Sintaxe:

TerPBegin([nTerm],cSerPar)

Parâmetros:

nTerm –  Numero do microterminal a iniciar a impressão, se nada for especificado será considerado o numero definido no Monitor de Microterminais.

cSerPar – Informa qual a saída utilizada para impressão, ‘S’ para utilizar a saída SERIAL ou ‘P’ para se utilizar a saída PARALELA.

Retorna:

NIL

Exemplo:

TerPBegin(,”S”)

TerPrint(“Testando a impressão na saída SERIAL”)

TerPEnd()

TerPBegin(,”P”)

TerPrint(“Testando a impressão na saída PARALELA”)

TerPEnd()

 


TerPrint()

Tipo: Microterminal

Envia a string especificada para a saída de impressão definida pela função TerPBegin.

Sintaxe:

TerPrint( cString, [lSalta] )

Parâmetros:

cString – Cadeia de caracteres a enviar para a saída de impressão.

lSalta  – Informe .F. para não saltar a linha na impressora após o envio de cString ou .T. para que se salte uma linha apos o envio de cString, se não especificado .T. e’ assumido.

Retorna:

NIL

Exemplo:

TerPBegin(,”P”)

TerPrint(“Imprimindo uma linha e saltando para proxima linha”)

TerPrint(“Imprimindo a linha e nao saltando.”,.F.)              // não salta a linha

TerPrint(“Continuando da linha anterior.”)

TerPEnd()

 


TerPEnd()

Tipo: Microterminal

Finaliza impressão iniciada pela função TerPBegin.

Sintaxe:

TerPEnd()

Retorna:

NIL

Exemplo:

TerPBegin(,”S”)

TerPrint(“Testando a impressão na saída SERIAL”)

TerPEnd()

 


 TerIsQuit()

Tipo: Microterminal

Função utilizada em pontos do programa para se verificar se o Monitor esta   tentando finalizar a aplicação do microterminal, deve ser utilizada em lugares   do programa em que o fechamento da aplicação cause transtornos, como por exemplo,  apos a conclusão de uma venda.

Sintaxe:

TerIsQuit()

Retorna:

.F.

Exemplo:

While .T.

TerCls()

TerSay(00,00,”Inicando Venda…”)

.

.

TerSay(00,00,”Venda Finalizada…”)

TerIsQuit()        // caso o monitor esteja finalizando a aplicação somente

//neste ponto a finalização será efetuada, garantindo

//assim que a venda seja concluída.

EndDo

 


TerAlert()

Tipo: Microterminal

Função utilizada para enviar mensagem para o display do microterminal ajustando-o conforme o modelo.

Sintaxe:

TerAlert(<cMsg>,<cTitulo>,<nTempo>)

Parâmetros:

cMsg   = Mensagem a ser enviada

cTituo   = Titulo da Mensagem

nTempo= Tempo em milesegundos que a mensagem permanecerá no display do terminal.

Retorna:

.F.

Exemplo:

TerAlert(“Finalizando Processo”,”Atencao”,4000)

 


TerProtocolo()

Tipo: Microterminal

Função que informa ou retorna o protocolo corrente. O protocolo pode ser “GRADUAL” ou “VT100”, onde a função só poderá retornar o protocolo se o mesmo já foi informado, caso contrário retornará o protocolo padrão que é “GRADUAL”.

Sintaxe:

TerProtocolo(<cProtocolo>)

Parâmetros:

cProtocolo = Protocolo utilizado para o microterminal (“GRADUAL” ou “VT100”).

Retorna:

.F. se o protocolo informado não exitir. Caso contrário retornará o protocolo corrente.

Exemplo:

TerProtocolo(“VT100”)

 


TerModelo()

Tipo: Microterminal

Função utilizada  para ajustar ou retornar o modelo do microterminal MT16 OU MT44.

Sintaxe:

TerModelo(<cModelo>)

Parâmetros:

cModelo = Modelo do Microterminal

Retorna:

O modelo informado em <cModelo> ou retorna um modelo padrão

Exemplo:

nMaxCol := If(TerModelo()==”MT16″,19,39)

 


TerAchoice()

Tipo: Microterminal

Executa um menu pop-up

Sintaxe:

TeraChoice(<nTopo>,<nEsquerda>,<nBase>,<nDireita>,<acItensMenu>,[<cFuncaoUsuario>],

[<nItemInicial>],[<nLinhaJanela>])

Parâmetros:

<nTopo>, <nEsquerda> e <nBase>, <nDireita> são as coordenadas do canto superior esquerdo e canto inferior direito da  janela.

<acItensMenu> é um vetor que contem as cadeias de caracteres que serão exibidas como sendo os itens de menu.  Cada item de menu será  mais tarde identificado através de sua posição numérica neste vetor.

<cFuncaoUsuario> é o nome de uma função definida pelo usuário que é executada quando uma tecla não reconhecível for pressionada.  O nome da  função é especificado como uma expressão caractere sem parênteses ou  argumentos.  Note que o comportamento de TeraChoice() é afetado pela    presença deste argumento.  Consulte o texto abaixo para maiores  informações.

<nItemInicial> é a posição ocupada no vetor de <acItensMenu> pelo item que aparecer  em destaque quando o menu for exibido pela primeira  vez.  Caso você especifique um item de menu que não esteja disponível,  ou caso você não use argumento algum, o item que aparecer  em destaque   será  o primeiro item selecionável do vetor.

<nLinhaJanela>  É o número da linha da janela na qual o item de menu inicial aparecerá.

Retorna:

TeraChoice() retorna a posição numérica ocupada pelo item de menu selecionado no vetor de <acItensMenu>.  Se o processo de seleção for interrompido, TeraChoice() retorna zero.

Função de usuário: Da mesma forma que as demais funções de interface com o usuário, TeraChoice() aceita uma função de usuário.   A função de usuário é especificada quando você  deseja aninhar  invocações da função TeraChoice() para criar menus hierárquicos ou  redefinir teclas.

 

Modos de TeraChoice()

0-Inativo

1-Tentativa de passar início da lista

2-Tentativa de passar final da lista

3-Normal

4-tens não selecionados

 

Após a função de usuário ter executado as operações apropriadas ao  modo TeraChoice(), ela deve retornar um valor que solicite ao TeraChoice() executar uma operação entre o seguinte conjunto de ações:

 

Valores de Retorno da Função de Controle de TeraChoice()

0-Aborta seleção

1-Executa seleção

2-Continua TeraChoice()

3-Vai para o próximo item cuja primeira letra for a tecla pressionada

 

Exemplo:

acMenuItens := {“Um”,”Dois”, “—–“, “Tres”}

nPosition := TeraChoice(0, 0, 7, 19, acMenuItens, ”TESTECTRL” )

 

User Function testectrl(modo,nElem,nElemW)

If modo == 1

TerAlert(‘Top’)

Elseif Modo == 2

TerAlert(‘Bottom’)

Else

If TerLastkey() == 27

TerAlert(‘sair’)

TerBeep(3)

return 0

ElseIf TerLastkey() == 13

TerAlert(‘ok’)

TerBeep(1)

return 1

Endif

EndIf

Return 2

 


TerABrowse()

Tipo: Microterminal

Monta um browse com referencia a um array.

Sintaxe:

TERABROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,

<aCab>, [<aItens>], [<aSize>],

[<cFuncaoUsuario>],[<nItemInicial>]) –> nPosicao

Parâmetros:

<nTopo>, <nEsquerda> e <nBase>, <nDireita> são as coordenadas do canto superior esquerdo e canto inferior direito da  janela.

<aCab>,   é um vetor que contem os títulos das colunas

<aItens>,  é um vetor que contem os dados a serem mostrados

<aSize> ,  é um vetor que contem o tamanho de cada coluna

<cFuncaoUsuario> é o nome de uma função definida pelo usuário que é executada quando uma tecla não reconhecível for pressionada.  O nome da  função é especificado como uma expressão caractere sem parênteses ou  argumentos.

<nItemInicial> é a posição ocupada no vetor de < aItens > pelo item que aparecer  em destaque quando o menu for exibido pela primeira  vez.  Caso você especifique um item de menu que não esteja disponível,  ou caso você não use argumento algum, o item que aparecer  em destaque   será  o primeiro item selecionável do vetor.

Retorna:

TERABROWSE() retorna a posição numérica ocupada pelo item de menu selecionado no vetor de <aItens>.  Se o processo de seleção for interrompido, TERABROWSE() retorna zero.

Função de usuário: Utilizada da mesma forma que TERACHOICE.

Modos de TerABROWSE()

0-Inativo

1-Tentativa de passar início da lista

2-Tentativa de passar final da lista

3-Normal

4-Itens não selecionados

Após a função de usuário ter executado as operações apropriadas ao  modo TerABROWSE() ela deve retornar um valor que solicite ao TerABROWSE() executar uma operaçãao entre o seguinte conjunto de ações:

 

Valores de Retorno da Função de Controle de TerABROWSE()

0-Aborta seleção

1-Executa seleção

2-Continua TerABROWSE()

3-Vai para o próximo item cuja primeira letra for a tecla pressionada

 

Exemplo:

#INCLUDE ‘APVT100.CH’

TerCls()

acab :={“Codigo”,“Cod            “,“Descricao                           “,“UM”}

aSize   := {10,4,20,10}

nPos := 12

aItens :={{“1010 “,10, “DESCRICAO1”,”UN “},;

{“2010 “,20,”DESCRICAO2”,”CX “},;

{“2020 “,30,”DESCRICAO3”,”CX “},;

{“2010 “,40,”DESCRICAO4”,”CX “},;

{“2020 “,50,”DESCRICAO5”,”CX “},;

{“3010 “,60,”DESCRICAO6”,”CX “},;

{“3020 “,70,”DESCRICAO7”,”CX “},;

{“3030 “,80,”DESCRICAO7”,”CX “},;

{“3040 “,90,”DESCRICAO7”,”CX “},;

{“2010 “,40,”DESCRICAO4”,”CX “},;

{“2020 “,50,”DESCRICAO5”,”CX “},;

{“3010 “,60,”DESCRICAO6”,”CX “},;

{“3020 “,70,”DESCRICAO7”,”CX “},;

{“3030 “,80,”DESCRICAO7”,”CX “},;

{“3050 “,100,”DESCRICAO7”,”CX “}}

npos := TeraBrowse(0,0,7,15,aCab,aItens,aSize,’testectrl’,nPos)

.

.

 

User Function testectrl(modo,nElem,nElemW)

If modo == 1

TerAlert(‘Top’)

Elseif Modo == 2

TerAlert(‘Bottom’)

Else

If TerLastkey() == 27

TerAlert(‘sair’)

TerBeep(3)

return 0

elseIf  TerLastkey() == 13

TerAlert(‘ok’)

TerBeep(1)

return 1

Endif

EndIf

Return 2

 


TerDBBrowse()

Tipo: Microterminal

Monta um browse com referencia a uma tabela

Sintaxe:

TerDBBROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,<cAlias>, <aCab>, [<aFields>], [<aSize>],  [<cFuncaoUsuario>],[<cTop>],[<cBottom>]) –> nRecno

Parâmetros:

<nTopo>, <nEsquerda> e <nBase>, <nDireita> são as coordenadas do canto superior esquerdo e canto inferior direito da  janela.

<cAlias>, é uma string com alias da tabela

<aCab>,   é um vetor que contem os títulos das colunas

<aFields>,  é um vetor que contem os campos do alias

<aSize> ,  é um vetor que contem o tamanho de cada coluna

<cFuncaoUsuario> é o nome de uma função definida pelo usuário que é executada quando uma tecla não reconhecível for pressionada.  O nome da  função é especificado como uma expressão caractere sem parênteses ou  argumentos.  Note que o comportamento de TerDBBROWSE () é afetado pela    presença deste argumento.  Consulte o texto abaixo para maiores  informações.

<cTop>  string com a condição de validação de top

<cBottom> string com a condição de validação de Bottom

Retorna:

TerDBBROWSE () retorna o recno() Se o processo de seleção for interrompido, TerDBBROWSE () retorna zero.

Função de usuário: Utilizada da mesma forma que TerACHOICE e TeraBROWSE.

Modos de TerDBBROWSE ()

0-Inativo

1-Tentativa de passar início da lista

2-Tentativa de passar final da lista

3-Normal

4-Itens não selecionados

 

Após a função de usuário ter executado as operações apropriadas ao  modo TerDBBROWSE () ela deve retornar um valor que solicite ao TerDBBROWSE () executar uma operação entre o seguinte conjunto de ações:

Valores de Retorno da Função de Controle de TerDBBROWSE ()

0-Aborta seleção

1-Executa seleção

2-Continua TerDBBROWSE ()

3-Vai para o próximo item cuja primeira letra for a tecla pressionada

 

Exemplo:

TerCls()

aFields := {“B1_COD”,”B1_DESC”,”B1_UM”,”B1_PICM”}

aSize   := {16,20,10,15}

aHeader := {‘COD’,’DESCRICAO     ‘,’UM’,”% ICM”}

 

sb1->(dbseek(xfilial()+’00000000000001′))

nRecno := TerDBBrowse(0,0,7,15,”SB1″,aHeader,aFields,aSize,’testectrl’,;

xfilial(‘SB1’)+’00000000000001′”,;

xfilial(‘SB1’)+’00000000000002′”)

TerCls()

 


TerSetPos()

Tipo: Microterminal

Função que Posiciona o Cursor do Microterminal

Sintaxe:

TerSetPos(<nLin>,<nCol>)

Parâmetros:

nLin = Linha onde se deseja posicionar

nCol = Coluna onde se deseja posicionar

Retorna:

.T.

Exemplo:

nLin := 0

nCol := 20

TerSetPos(nLin,nCol)

 


Exemplo para Microterminal

Este exemplo está descrito no programa “ TerDemo1”, podendo ser executado do seu Microterminal. Para isso configure no TERMANU, ou inclua no menu do sigaacdt.

 

#INCLUDE ‘APVT100.CH’

/*/

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: Funcao   ::TerDEMO1  :: Autor :: ACD               :: Data :: 17/07/03  ::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: Descricao:: Programa de exemplo de uso das funcoes do microterminal     ::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: Uso      :: PROGRAMA EXEMPLO DE UMA APLICACAO PARA MICROTERMINAL        ::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

/*/

User Function TerDEMO1()

Local cKeyEnter       := “Press… <Enter>”

Local cCodigo        := Space(6)

Local dData          := ctod()

Local cSenha         := Space(6)

Local nValor         := 0

Local aOpcoes

Local  aItens, acab,aSize

Local aFields,aHeader

Private nMaxCol       := If(TerModelo()==“MT16”,19,39)

 

While .t.

TerCBuffer()

TerIsQuit() // funcao necessaria para saber se o gerenciador determinou a saida do programa

cCodigo  := Space(6)

dData    := ctod()

nValor   := 0

cSenha   := Space(6)

TerCls()

@ 00,00 TerSay PadC(“Demo de Microterminais”, nMaxCol)

@ 01,00 TerSay “Modelo:” + TerModelo()

@ 01,nMaxCol-Len(cKeyEnter) TerSay cKeyEnter

TerInkey(0)

TerCls()

TerCBuffer()

@ 00,00 TERSay “Codigo: “

@ 00,10 TerGetRead cCodigo Pict “XXXXXX@” Valid  ValidCod(cCodigo) When WhenCod()

If TerEsc() // quando for pressionada a teclas ESC Obs.: Alguns terminais o ESC e a tecla DEL

If TerProtocolo()==“VT100”

// quando for executa pelo sigaacdt a rotina devera’ retornar ao menu

Exit

EndIf

Loop

EndIF

@ 00,20 TERSay “Data: “

@ 00,27 TerGetRead dData Pict “99/99/99” Valid ValidData(dData) When   WhenData()

If TerEsc()

Loop

EndIF

@ 01,00 TERSay “Valor: “

@ 01,10 TerGetRead nValor Pict999.99″  When WhenValor()

If TerEsc()

Loop

EndIF

@ 01,20 TERSay “Senha: “

@ 01,26 TerGetRead cSenha Pict “******”  Valid (TerAlert(cSenha,‘Senha Digitada’,1000),.t.) ;

When WhenSenha()

If TerEsc()

Loop

EndIF

TerAlert(“Entrando no Achoice… aguarde…”,“-“,1000)

aOpcoes    := {   “Opcao 1”, ;

“Opcao 2”, ;

“Opcao 3”, ;

“Opcao 4”, ;

“Opcao 5”}

TerCBuffer()

npos :=TerAchoice(,,,,aOpcoes,‘U_ValidAchoice’)

TerAlert(“Entrando no aBrowser… aguarde…”,“-“,1000)

aItens :={{“1010 “,10, “DESCRICAO1”,“UN “},;

{“2010 “,20,“DESCRICAO2”,“CX “},;

{“2020 “,30,“DESCRICAO3”,“CX “},;

{“2010 “,40,“DESCRICAO4”,“CX “},;

{“2020 “,50,“DESCRICAO5”,“CX “},;

{“3010 “,60,“DESCRICAO6”,“CX “},;

{“3020 “,70,“DESCRICAO7”,“CX “},;

{“3030 “,80,“DESCRICAO7”,“CX “},;

{“3040 “,90,“DESCRICAO7”,“CX “},;

{“2010 “,100,“DESCRICAO4”,“CX “},;

{“2010 “,110,“DESCRICAO4”,“CX “}}

acab :={“Codigo”,“Cod            “,“Descricao                           “,“UM”}

aSize   := {10,4,20,10}

nPos := 1

npos := TeraBrowse(,,,,aCab,aItens,aSize,,nPos)

TerAlert(“Entrando no DBBrowser… aguarde…”,“-“,1000)

aFields := {“B1_COD”,”B1_DESC”,”B1_UM”,”B1_PICM”}

aSize   := {16,20,10,15}

aHeader := {‘COD’,‘DESCRICAO     ‘,‘UM’,“% ICM”}

sb1->(dbseek(xfilial()))

npos := TerDBBrowse(,,,,“SB1”,aHeader,aFields,aSize)

If TerYesNo(“Deseja realizar teste de impressao?”,“Pergunta”)

Imprimir()

EndIf

If TerEsc()

Loop

EndIF

EndDo

Return .T.

 

 

Static Function ValidCod(cCodigo)

Local cTela

cTela := TerSave(00,00,01,nMaxCol)

TerAlert(“Total de bytes: “+AllTrim(Str(Len(AllTrim(cCodigo))))+‘ aguarde…’,“Validando:”,1000)

TerCls()

TerRestore(00,00,01,nMaxCol,cTela)

Return .T.

 

Static Function WhenCod()

TerAlert(“Exemplo de Get com Caracter aguarde…”,“-“,1000)

Return .T.

 

Static Function WhenData()

Local cTela

TerAlert(“Exemplo de Get com Data aguarde…”,“-“,1000)

Return .T.

 

Static Function WhenValor()

TerAlert(“Exemplo de Get com Numerico aguarde…”,“-“,1000)

Return .T.

 

Static Function WhenSenha()

TerAlert(“Exemplo de Get com Senha aguarde…”,“-“,1000)

Return .T.

 

Static Function ValidData(dData)

If Empty(dData)

TerAlert(“Data em branco”, “Atencao”)

Return .f.

EndIf

TerAlert(DTOC(dData))

Return .t.

 

 

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

//Função responsável pela configuração e impressão de nota.

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Static Function Imprimir()

TerPBegin( ,“P”,3)   // se quiser imprimir na serial apenas altere o segundo parâmetro para “S”

TerPrint(Repl(“=”,40))

TerPrint(“iMIND SISTEMAS E SOLUÇÕES INTELIGENTES”)

TerPrint(“Emissao de cupom de Venda”)

TerPrint(Repl(“=”,40))

TerPrint(“Cliente : 000001 Loja : 01”)

TerPrint(“Nome    : CLIENTE PADRAO”)

TerPrint(Repl(“=”,40))

TerPrint(“Vendedor : 000001”)

TerPrint(“Nome     : VENDEDOR PADRAO”)

TerPrint(Repl(“=”,40))

TerPrint(“Produto              Valor”)

TerPrint(” “)

TerPrint(“101015          “+Transform(10,“@E 999,999.99”))

TerPrint(“101020          “+Transform(5,“@E 999,999.99”))

TerPrint(“101025          “+Transform(15,“@E 999,999.99”))

TerPrint(“==============================”)

TerPrint(“Total           “+Transform(20,“@E 999,999.99”))

TerPrint(“==============================”)

TerPrint(“ESTE RECIBO NAO TEM VALOR FISCAL.”)

TerPrint(Repl(“=”,40))

TerPrint(” “)

TerPrint(” “)

TerPrint(” “)

TerPrint(” “)

TerPrint(” “)

 

TerPEnd()

Return

 

User Function ValidAchoicel(modo,nElem,nElemW)

If modo == 1

TerAlert(‘Inicio do Achoice’,‘-‘,500)

Elseif Modo == 2

TerAlert(‘Fim do Achoice’,‘-‘,500)

Else

If TerLastkey() == 27

TerAlert(‘Saindo do Achoice’,500)

return 0

elseIf TerLastkey() == 13

TerAlert(‘Tecla <ENTER> precionada’,‘-‘,500)

return 1

Endif

EndIf

Return 2

 


Leia também:

Automação e Coleta de dados

O que é o SIGAACD? E como pode ser Utilizando?

Consultoria Protheus