TEF...

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Carlos Bernardi Jr
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 04 Jul 2005 10:35
Localização: Blumenau/SC

TEF...

Mensagem por Carlos Bernardi Jr »

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
Membro Master
Mensagens: 189
Registrado em: 28 Ago 2004 01:02
Localização: Cruz Alta - RS
Contato:

Mensagem por evolver »

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.
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.
Avatar do usuário
jonatam_q
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 26 Nov 2004 08:43
Localização: Pato Branco - PR

Mensagem por jonatam_q »

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.
Carlos Bernardi Jr
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 04 Jul 2005 10:35
Localização: Blumenau/SC

Mensagem por Carlos Bernardi Jr »

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...
Avatar do usuário
jonatam_q
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 26 Nov 2004 08:43
Localização: Pato Branco - PR

Mensagem por jonatam_q »

Chega a ser estranho :D 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
**************************************************
Responder