Funcao hb_dyncall(....)
Moderador: Moderadores
-
jjuliofcampos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 25 Mai 2017 20:01
- Localização: jundiai/sp
Funcao hb_dyncall(....)
Quais sao os parametros para essa funcao?
Como devo fazer para executar a funcao "envcomm(cSTRING) da dll pertochekser.dll que devera retornar TRUE ou FALSE.
TDLL:=hb_libLoad("PertoChekSer.dll" )
RET:=hb_dynCall({"EnvComm",TDLL,HB_DYN_CALLCONV_STDCALL },cCom)
Neste exemplo em meu prg está retornando variavel numerica, -2000 em vez de .t. ou .f.
jjulio
Como devo fazer para executar a funcao "envcomm(cSTRING) da dll pertochekser.dll que devera retornar TRUE ou FALSE.
TDLL:=hb_libLoad("PertoChekSer.dll" )
RET:=hb_dynCall({"EnvComm",TDLL,HB_DYN_CALLCONV_STDCALL },cCom)
Neste exemplo em meu prg está retornando variavel numerica, -2000 em vez de .t. ou .f.
jjulio
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
Ao que parece, está fazendo errado.
Só pesquisar exemplos no Harbour.
Só pesquisar exemplos no Harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
jjuliofcampos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 25 Mai 2017 20:01
- Localização: jundiai/sp
Funcao hb_dyncall(....)
Realmente não estou sabendo quais parâmetros usar para obter o retorno da função EnvComm que será executada pelo hb_dyncall(...) que deveria ser FALSE ou TRUE.
RET:=hb_dynCall({"EnvComm",TDLL,HB_DYN_CALLCONV_STDCALL },cCom)
A variavel REC recebera a informação de que a função hb_dyncall(..) foi executada sem erro ou não ;
O resultado da função EnvComm executada dentro do hb_dyncall () devera ser .t. ou .f.
Suponho que deva passar um parametro informando a variavel que vai receber esse retorno.
Não sei se estou sendo claro mas, resumindo, preciso receber o retorno da função EnvComm, isto é, FALSE ou TRUE.
jjulio
RET:=hb_dynCall({"EnvComm",TDLL,HB_DYN_CALLCONV_STDCALL },cCom)
A variavel REC recebera a informação de que a função hb_dyncall(..) foi executada sem erro ou não ;
O resultado da função EnvComm executada dentro do hb_dyncall () devera ser .t. ou .f.
Suponho que deva passar um parametro informando a variavel que vai receber esse retorno.
Não sei se estou sendo claro mas, resumindo, preciso receber o retorno da função EnvComm, isto é, FALSE ou TRUE.
jjulio
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
Desculpe, eu me confundi com o array, e achei que sua sintaxe estava errada.
À primeira vista, está tudo certo quanto ao modo de usar.
Por acaso esse -2000 não pode se referir a algum código de erro?
O parâmetro é caractere ou é pointer de caractere?
Se for pointer de caractere, é @cCom ao invés de cCom.
À primeira vista, está tudo certo quanto ao modo de usar.
Por acaso esse -2000 não pode se referir a algum código de erro?
O parâmetro é caractere ou é pointer de caractere?
Se for pointer de caractere, é @cCom ao invés de cCom.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Funcao hb_dyncall(....)
Olá Pessoal,
O retorno da hb_dynCall() sempre será numérico, nunca lógico. O problema é realmente encontrar documentação dessa função. Não se acha nem nos grupos do Harbour.jjuliofcampos escreveu:O resultado da função EnvComm executada dentro do hb_dyncall () devera ser .t. ou .f.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
-
jjuliofcampos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 25 Mai 2017 20:01
- Localização: jundiai/sp
Funcao hb_dyncall(....)
O parametro que estou passando é uma string "$4000000001234500"
Creio que preciso acrescentar um parametro para receber uma variavel logica como resposta da funcao EnvComm...
-2000 deve ser erro na execução do hb_dyncall....
Essa dll que estou testando pede uma impressora serial em COM1:; Acho que devo fazer o teste com uma DLL mais simples, sem envolver meios fisicos, e que deva retornar um variavel logica.
Alguma sugestao de DLL?
jjulio
Creio que preciso acrescentar um parametro para receber uma variavel logica como resposta da funcao EnvComm...
-2000 deve ser erro na execução do hb_dyncall....
Essa dll que estou testando pede uma impressora serial em COM1:; Acho que devo fazer o teste com uma DLL mais simples, sem envolver meios fisicos, e que deva retornar um variavel logica.
Alguma sugestao de DLL?
jjulio
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
O retorno depende da DLL, e geralmente é um tipo em C que é convertido pra Harbour.O retorno da hb_dynCall() sempre será numérico, nunca lógico. O problema é realmente encontrar documentação dessa função. Não se acha nem nos grupos do Harbour.
.T. ou .F. pode ser 0 ou 1, ou algo parecido.
GetParent, que está em user32.dll
Código: Selecionar todos
hWndParent := hb_DynCall( { "GetParent", "user32.dll", HB_DYN_CALLCONV_STDCALL }, hWnd )
GetModuleFileNameA, em kernel32.dll
Código: Selecionar todos
LOCAL cFileName := Space(100), nSize := 100
hb_DynCall( { "GetModuleFileNameA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL }, , @cFileName, nSize )
O pointer é algo como um endereço de memória.
Se não passar como pointer, ou não couber o nome do EXE nesse espaço de variável, é GPF, porque o resultado pode invadir o espaço de outra variável.
Até por isso existe a HBWIN, que tem funções intermediárias pra API do Windows já com algum tpo de conversão, pra evitar GPF.
Isso tudo não é hb_DynCall() que decide, é a função dentro da DLL.
O máximo que pode acontecer, é converter o resultado para algum tipo conhecido pelo Harbour.
Cada função de cada DLL tem suas exigências/parâmetros/retornos, e cabe ao desenvolvedor da DLL apresentar um manual de uso.
Se a função em questão retorna -2000, isso está longe de ser .T. ou .F.
Não precisa manual da hb_DynCall, precisa manual da DLL.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
jjuliofcampos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 25 Mai 2017 20:01
- Localização: jundiai/sp
Funcao hb_dyncall(....)
A funcao que estou tentando executar atraves da hb_dyncall(...) é EnvComm( string ) onde a string é um comando para a impressora nao fiscal executar pela COM1:
O retorno dessa funcao é .t. ou .f. que vai me dizer se a impressora recebeu o comando...
Creio que em hb_dyncall() falta uma variavel como parâmetro para eu poder receber o regtorno de EnvComm()...
jjulio
O retorno dessa funcao é .t. ou .f. que vai me dizer se a impressora recebeu o comando...
Creio que em hb_dyncall() falta uma variavel como parâmetro para eu poder receber o regtorno de EnvComm()...
jjulio
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
Se a função tem mais parâmetros, então precisa do manual da DLL pra ver que parâmetro é esse.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
Fiz uma pesquisa no google.
Achei o kit de desenvolvimento dessa DLL
Tem tudo lá, menos alguma função que retorne .T. ou .F.
Não sei se tem algum manual, mas provavelmente não é dessa DLL.
Só pesquisar no google, ou ir direto no site do fabricante.
.
Achei o kit de desenvolvimento dessa DLL
Tem tudo lá, menos alguma função que retorne .T. ou .F.
Não sei se tem algum manual, mas provavelmente não é dessa DLL.
Só pesquisar no google, ou ir direto no site do fabricante.
.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
jjuliofcampos
- Usuário Nível 1

- Mensagens: 8
- Registrado em: 25 Mai 2017 20:01
- Localização: jundiai/sp
Funcao hb_dyncall(....)
Esta rotina em C é um exemplo de uso das funções de pertoChekser.DLL
IniComm()
EnvComm()
RetComm()
EndComm()
SerialBusy()
Consta no kit de desenvolvimento da PertoChek (PertoChek\A0035K01-KitPertoChek\SERIAL\Win32)
/* Declarações: */
char chCmd[2048], chAnswer[2048];
int nRet;
/*** Inicialização da porta ***/
nRet = IniComm("COM1:4800, N, 8, 1");
if (nRet! = FALSE)
/* A porta foi inicializada com sucesso! */
else
/* Ocorreu um erro na inicialização da porta...*/
/*** Rotina para enviar comandos e receber a resposta da PertoChek ***/
/* Limpa buffer: */
memset(chAnswer, '\0', sizeof(chAnswer));
/* Comando a ser enviado: Preenchimento de cheque */
strcpy(chCmd, “$4000000123456000”);
/* Verifica se a PertoChek não está ocupada. */
if (SerialBusy(5) == FALSE)
{
/* A PertoChek encontra-se ocupada! */
}
/* Transmite o comando: */
nRet = EnvComm(chCmd);
if (nRet != FALSE)
{
/* Recebe resposta da pertochek: */
nRet = RecComm(50, chAnswer);
if (nRet == FALSE)
/* Ocorreu time out: a PertoChek não respondeu ao comando!! */
}
else
{
/* O comando não pode ser enviado. */
/* Erro: O camando não pode ser enviado!! */
return;
}
/*** Finaliza a porta***/
EndComm();
IniComm()
EnvComm()
RetComm()
EndComm()
SerialBusy()
Consta no kit de desenvolvimento da PertoChek (PertoChek\A0035K01-KitPertoChek\SERIAL\Win32)
/* Declarações: */
char chCmd[2048], chAnswer[2048];
int nRet;
/*** Inicialização da porta ***/
nRet = IniComm("COM1:4800, N, 8, 1");
if (nRet! = FALSE)
/* A porta foi inicializada com sucesso! */
else
/* Ocorreu um erro na inicialização da porta...*/
/*** Rotina para enviar comandos e receber a resposta da PertoChek ***/
/* Limpa buffer: */
memset(chAnswer, '\0', sizeof(chAnswer));
/* Comando a ser enviado: Preenchimento de cheque */
strcpy(chCmd, “$4000000123456000”);
/* Verifica se a PertoChek não está ocupada. */
if (SerialBusy(5) == FALSE)
{
/* A PertoChek encontra-se ocupada! */
}
/* Transmite o comando: */
nRet = EnvComm(chCmd);
if (nRet != FALSE)
{
/* Recebe resposta da pertochek: */
nRet = RecComm(50, chAnswer);
if (nRet == FALSE)
/* Ocorreu time out: a PertoChek não respondeu ao comando!! */
}
else
{
/* O comando não pode ser enviado. */
/* Erro: O camando não pode ser enviado!! */
return;
}
/*** Finaliza a porta***/
EndComm();
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
Acho C muito complicado, parece coisa de maluco, prefiro exemplo em VB.
Do mesmo kit de desenvolvimento.
Do mesmo kit de desenvolvimento.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
Esquisito....
Este é o único fonte em C que tem na pasta.
Se entendi, o retorno é sempre numérico.
Sei lá de onde veio seu fonte....
De qualquer forma, mostra que falta o SerialBusy() e IniComm2() no VB6.
Eita empresinha ruim de software., exemplo incompleto pra VB.
Este é o único fonte em C que tem na pasta.
Se entendi, o retorno é sempre numérico.
Sei lá de onde veio seu fonte....
De qualquer forma, mostra que falta o SerialBusy() e IniComm2() no VB6.
Eita empresinha ruim de software., exemplo incompleto pra VB.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
Baixei daqui.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Funcao hb_dyncall(....)
E o único que trata pertochek.dll é este.
Inclusive no download consta o tal A0035K01.
Agora fiquei curioso pra saber de onde veio o seu fonte.
Inclusive no download consta o tal A0035K01.
Agora fiquei curioso pra saber de onde veio o seu fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/