Preciso de uma ajuda com o JNI. Eu necessito desenvolver um FTP que utilize a porta serial C p/ DOS. Este FTP terá 3 camadas(nada a ver com MVC ok ;)). NÃO POSSO USAR JAVACOMM NEM QQ OUTRA API e tambem não estou me preocupando com portabilidade.
1) FISICA - Envia e recebe bytes usando interrupções do SO. Consulta interrupções importantes para o funcionamento do ftp(Ex: Consulta o status da conexão, Status do buffer de envio, etc)
2) ENLACE - Interface entre a camada fisica e aplicação
3) APLICAÇÃO - Responsavel pelo "input" dos comandos que o usuário deseja executar(EX: dir, cd, get, put)
Minha idéia é desenvolver a camada fisica em C e o resto em java.
Já li vários artigos sobre JNI e até já brinquei um pouco com a API.
Gostaria de saber se alguem já conseguiu gerar a famosa DLL com um programa que trabalhasse com interrupções. Meus conhecimentos em C são básicos e já tentei gerar a DLL em vários tipos de compiladores(Turbo C, Borland C 3(antigo), Borland C 5.5(free), Visual C, etc...)
Se alguem aí puder me ajudar eu ficarei aternamente grato senão terei que me virar no velho Borland C p/ DOS ;))
com vm86 voce consegue executar código em modo real no linux!
só que ate onde eu sei não existe compilador de C 16bit p/ modo real em linux e nem imagino se a saida dos compiladores windows funcionaria, apesar que é bem provavel que os .com funcionem.
Você realmente precisa falar com a porta serial via interrupções? Não pode ser via uma API do SO?
O grande problema disso é que nenhum SO moderno deixa programas de usuario mexer em interrupções diretamente e os antigos não tem suporte a java…
Pois é, como eu havia falado, eu realmente tenho que usar interrupções… e não posso usar nenhum API…
é um trabalho da facul, por isso que é tão nada a ver assim
Louds, como vc disse nenhum SO atual permite acesso direto as interrupções… Um dos ultimos SO que que esse suporte é o win98.
Eu comecei usar o compilador WatCom de C (Muito bom, recomendo, é free) para gerar a DLL que será chamada no java.
Basicamente eu criei 3 metodos, um de configuração da porta serial, outro de escrita na porta e outro de leitura de bytes da porta. Gerei a DLL, tudo certinho…
O unico problema é que eu uso windows XP e ainda não pude testar… Mas creio que vai funcionar. Se funcionar eu coloco o desfecho da aventura aqui no forum…
Eu tava com receio que houvesse algum bloqueio da VM quando fosse chamada uma DLL que lidasse com interrupções… Espero que de certo…
Não vai funcionar, eu te garanto.
Já tive de trabalhar com interrupções pra facul (pq todo curso de asm tem 1 trabalho usando interrupções?) e não funciona em win2k/xp.
Voce vai ter 1 senhor problema para usar tua dll no Java, ao ponto de não mais valer a pena usar java.
Já te explico.
No windows voce só consegue usar as interrupções do hardware, as soft-int funcionam porêm, em programas 16bit. Quando você executa um programa 32bits ele ta em modo protegido e não vm86, oque torna executar código 16bits que usa interrupções impossivel.
Eu me lembro que existe umas api do windows que te permite carregar dll 16bits de uma aplicação 32bits, porêm não sei se as int’s vão funcionar.
Pq você não escreve 1 driver e exporta ele como 1 file system, me parece mais simples que isso…