Converter C para CLIPPER

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

marchiore
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 18 Set 2006 11:25

Converter C para CLIPPER

Mensagem por marchiore »

Olá pessoal, achei esta documentação de funções para comunicação
IPX ponto a ponto feitas em C

eu compilei os programas servidor.c e cliente.c com o Microsoft C 7.0
e funcionou certinho, gostaria de converter estas funções para o clipper
alguem ai disponsto a entrar nesta empreita

links

http://www.dei.isep.ipp.pt/~andre/docum ... xprog.html
http://www.dei.isep.ipp.pt/~andre/documentos/ipxlib.htm

Está tudo em português, Portugal mas da pra entender bem.

Sel alguem ai precisar de alguma informação sobre como está o andamento meu msn e marcosmarchiore@hotmail.com

Considerações finais, não gostaria de usar xHarbour pois a aplicação e de automação, ela vai rodar em micros tipo 286/386 Industrial, espaço de memoria para sistema e de 8 a 32 Mb e suporta o DOS
Quanto ao protocolo, ele carrega os drivers da placa de rede interna parecido com a Novell, tipo LSL, RTSODI, IPXODI e tal, mas não carrega o NETx nem o VLM blz, pois não ha um servidor, a comunicação e feita entre os equipamentos

Marcos Marchiore
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4665
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

O Clipper usa recursos proveniente do C e sua linguagem é totalmente preparada para o trabalho com Bando de Dados e alguns aspectos de leitura e gravação acima do nivel do DOS.

O que voce pode fazer é acrescentar os objetos a sua .LIB e incluir estas funções ao seu programa.

É mais fácil transpor o Clipper para C do que o inverso(salvo em poucos casos), inclusive existem ferramentas para isto com X2C, etc.

Sua idéia pode se tornar mais produtiva se voce criar uma especie protocolo de envio de dados da parte cliente para a parte server.

Exemplo:

Código: Selecionar todos

Inicio_do_Protocolo := "<<<"
Final_do_Protocolo := ">>>"
Dados_a_Enviar := "O ROCHINHA E UM BARATO"

//Chame a funcao de envio
EnviaDadosAoServidor( Inicio_do_Protocolo, Dados_a_Enviar, Final_do_Protocolo )

function EnviaDadosAoServidor( IProtocolo, Dados, FProtocolo )
     cComando := "cliente.exe " + IProtocolo + Dados + FProtocolo
     __Run( cComando )
     if file( "erros.log" )
        ? "Houve erros no envio"
        Memoedit( memoread( "erros.log") )
     endif
@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
marchiore
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 18 Set 2006 11:25

ROchinha

Mensagem por marchiore »

Rochinha, eu fiz as funções separadamente, por exemplo:

enviar - funciona corretamente

receber - funciona corretamente

o problema e que para receber tenho que ficar preso dentro da função em C, se eu por exemplo fizer um código assim:

do while .t.
a=receber()
? a
inkey(5)
if lastkey() == 27
exit
endif
enddo

oque acontece, a cada 5 segundos ele vai lá e recebe, o problema e que se estiver na função inkey todas as informações que foram recebidas no IPX serão perdidas, ou sejá não fica na fila entendeu

Por favor se alguem puder me ajudar.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4665
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Seu aplicativo fica preso em processo somente se voce quizer, existe alternativas para isto e são os processos em background que voce pode usar uma biblioteca que não me lembro o nome( BGblablabla ).

Voce pode colocar vários processos ativos em seu aplicativo e coloca-lo para fazer outras coisas enquanto isto.

Verifique nas sessões de downloads do site Vagner (www.vagucs.com.br), Toledo (www.pctoledo.com.br), Evolver (www.geracaoclipper.org), Maligno (www.buzinello.com/prg).
sobre esta biblioteca.

Ela ira te servir para este trabalho.

Outra coisa não sei como esta rotina trabalha, se ela envia byte a byte, ou palavras por palavras, então o que voce deve fazer é salvar o resultado em um arquivo para poder manusea-lo.

Voce deve atentar para o fato de que se voce esta enviando algo de um ponto a outro voce deve testar a veracidade da informação recebida, ou seja, envio 285 caracteres o resultado deve ser 285, ou seja, voce deve enviar junto com o pacote o tamanho do conjunto e na rotina que recebe calcular, como o teste de CRC usado por ai.

@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
marchiore
Usuário Nível 1
Usuário Nível 1
Mensagens: 31
Registrado em: 18 Set 2006 11:25

Certinho

Mensagem por marchiore »

Você tem razão quanto aos testes de conteudo, faço isso em comunicação serial, quanto a colocar a função em uma especie de thread, vou pesquisar pode ser uma solução sim, caso eu consiga fazer isto funcionar vou postar para todos, obrigado
Responder