TEF...
Moderador: Moderadores
-
Carlos Bernardi Jr
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 04 Jul 2005 10:35
- Localização: Blumenau/SC
TEF...
dai pessoal... meu problema refere-se ao travamento do teclado durante a impressao do cupom do tef... ja olhei os posts anteriores e nenhuma das respostas resolveu meu problema... estou utilizando a funcao kbddisable da ca tools para bloquear o teclado... ate ai tudo bem... o problema é q quando o teclado é destravado , todas as teclas armazenadas no buffer sao descarregadas... ja fiz varios testes , inclusive utilizando clear typeahead q foi a resposta para os posts encontrados... mas mesmo assim nao vai... sera q alguem q ja tenha homologado o sistema para o tef poderia me dar uma orientaçao a respeito de como conseguiu isso ? obrigado...
-
evolver
- Membro Master

- Mensagens: 189
- Registrado em: 28 Ago 2004 01:02
- Localização: Cruz Alta - RS
- Contato:
Tentou o seguinte
while nextkey() # 0
inkey()
end
Ou de forma mais compacta (mas acredito que poderia ocasionar um erro de esperar uma tecla mesmo após limpeza do buffer o que não aconteceria no caso acima)
while inkey(0) # 0
end
Acho que seria mais eficiente para limpar o buffer de teclado do que o clear typeahead.
while nextkey() # 0
inkey()
end
Ou de forma mais compacta (mas acredito que poderia ocasionar um erro de esperar uma tecla mesmo após limpeza do buffer o que não aconteceria no caso acima)
while inkey(0) # 0
end
Acho que seria mais eficiente para limpar o buffer de teclado do que o clear typeahead.
Sergio "Evolver" Fagundes
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
- jonatam_q
- Usuário Nível 1

- Mensagens: 11
- Registrado em: 26 Nov 2004 08:43
- Localização: Pato Branco - PR
olha a naipe do fonte que eu fiz pra limpar o teclado... junto com tudo o que tu falou
------------------------------------------------------------
Set typeahead to 0
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
while nextkey() # 0
inkey()
end
If lAtivar
Set typeahead to 0
Else
set typeahead to 16
EndIf
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
KbdDisable(lAtivar)
Set typeahead to 0
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
while nextkey() # 0
inkey()
end
---------------------------------------------------------------------
tentei varias variações de tudo isso ...
E NADA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tah feio fazer funcionar.
------------------------------------------------------------
Set typeahead to 0
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
while nextkey() # 0
inkey()
end
If lAtivar
Set typeahead to 0
Else
set typeahead to 16
EndIf
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
KbdDisable(lAtivar)
Set typeahead to 0
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
clear typeAhead
__KeyBoard(Replicate(Chr(0),255))
while nextkey() # 0
inkey()
end
---------------------------------------------------------------------
tentei varias variações de tudo isso ...
E NADA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tah feio fazer funcionar.
-
Carlos Bernardi Jr
- Usuário Nível 1

- Mensagens: 2
- Registrado em: 04 Jul 2005 10:35
- Localização: Blumenau/SC
consegui resolver o problema da seguinte forma :
kbddisable(.F.)
keyboard "."
do while inkey() # 0
ntempinho:=SECONDS()
DO while .T.
IF (seconds() - ntempinho) > 0.1
exit
endif
ENDDO
ntecla:=inkey()
enddo
isso para limpar as teclas "normais"... alt-tab , e cia ltda a funcao kbddisable nao bloqueia... para conseguir bloquear alt-tab e cia desabilitei no atalho do programa na aba diversos as teclas de atalho do windows... a principio ta funcionando legal...
kbddisable(.F.)
keyboard "."
do while inkey() # 0
ntempinho:=SECONDS()
DO while .T.
IF (seconds() - ntempinho) > 0.1
exit
endif
ENDDO
ntecla:=inkey()
enddo
isso para limpar as teclas "normais"... alt-tab , e cia ltda a funcao kbddisable nao bloqueia... para conseguir bloquear alt-tab e cia desabilitei no atalho do programa na aba diversos as teclas de atalho do windows... a principio ta funcionando legal...
- jonatam_q
- Usuário Nível 1

- Mensagens: 11
- Registrado em: 26 Nov 2004 08:43
- Localização: Pato Branco - PR
Chega a ser estranho
mas é verdade.
*****************************************************
NO CLIPPER NÃO É NECESSARIO DESABILITAR O TECLADO!!!!!!!!
*****************************************************
Cheguei a essa conclusão depois de alguns testes basicos (pelo menos no windows 98). O KbdDisable descarrega as teclas pressionadas depois que o teclado é ativado novamente, isso é fato. Então tirei a função e não a usei mais, como o programa esta no meio de um processamento, não vai estar esperando teclas, então qualquer tecla pressionada não vai interferir no processamento (até as teclas de função F1-F12). O clipper le interpreta e ignora por não estar esperando teclas naquele momento. Sobram as teclas do windows, estas podem ser desabilitdas nas propriedades do promp do MS-DOS (aba misc, grupo teclas de atalho do windows). As teclas estão listadas abaixo:
- Alt+Tab;
- Ctrl+Esc;
- Alt+PrtScr;
- Alt+Espaço;
- Alt+Esc;
- PrtScr;
- Alt+Enter.
Sobra ainda a tecla do windows que não desabilita de forma alguma eo alt+C que é desativado executando SetCancel(.F.).
Assim nunca mais o teclado sera um pesadelo para a homologação de softwares clipper.
- "Ta bom jonatam_q, mas e a função inkey() ? Ela responde ao teclado em qualquer momento."
Implemente uma outra função de aguardo que não espera teclado, como a que eu uso atualmente(Codigo abaixo). Troque o inkey por uma função como essa e fim de problemas.
**************************************************
Procedure Inkey_ecf(nTempo)
Local nSecond:=0
nSecond:=seconds()+If(Valtype(nTempo)=="N",nTempo,0)
While nSecond>Seconds()
end
Return
**************************************************
*****************************************************
NO CLIPPER NÃO É NECESSARIO DESABILITAR O TECLADO!!!!!!!!
*****************************************************
Cheguei a essa conclusão depois de alguns testes basicos (pelo menos no windows 98). O KbdDisable descarrega as teclas pressionadas depois que o teclado é ativado novamente, isso é fato. Então tirei a função e não a usei mais, como o programa esta no meio de um processamento, não vai estar esperando teclas, então qualquer tecla pressionada não vai interferir no processamento (até as teclas de função F1-F12). O clipper le interpreta e ignora por não estar esperando teclas naquele momento. Sobram as teclas do windows, estas podem ser desabilitdas nas propriedades do promp do MS-DOS (aba misc, grupo teclas de atalho do windows). As teclas estão listadas abaixo:
- Alt+Tab;
- Ctrl+Esc;
- Alt+PrtScr;
- Alt+Espaço;
- Alt+Esc;
- PrtScr;
- Alt+Enter.
Sobra ainda a tecla do windows que não desabilita de forma alguma eo alt+C que é desativado executando SetCancel(.F.).
Assim nunca mais o teclado sera um pesadelo para a homologação de softwares clipper.
- "Ta bom jonatam_q, mas e a função inkey() ? Ela responde ao teclado em qualquer momento."
Implemente uma outra função de aguardo que não espera teclado, como a que eu uso atualmente(Codigo abaixo). Troque o inkey por uma função como essa e fim de problemas.
**************************************************
Procedure Inkey_ecf(nTempo)
Local nSecond:=0
nSecond:=seconds()+If(Valtype(nTempo)=="N",nTempo,0)
While nSecond>Seconds()
end
Return
**************************************************