envoi de fax par java

hajer
envoi de fax par java

bonjour, je dois envoyer un fax par une application java. je sais que je dois utiliser la bibliothèque javax.comm et que je dois jouer sur le commandes hayes, mais cela reste assez vague du fait que je n'ai pas bien compris le principe de base d'envoi de fax qui reste juste une des fonctionnalités d'un fax.
si vous pouvez m'aider, ou me conseiller (surtout ne me renvoyez pas sur google car c'est ma page de départ :-) ) je vous en serais très reconnaissante.

fredericmazue

Tu as fais une recherche sur Google ? ;)
Il n'y a rien de bien mystérieux dans ton affaire. Les commandes Hayes de ton modem-fax sont des séquences d'octets. Quand l'appareil les reçoit, il agit en conséquence: décroche, envoi un fax etc... Ces commandes Hayes sont documentées avec ton appareil en principe.
Attention, il y a plusieurs niveaux de commandes Hayes, et normalement tu dois basculer (via des commandes Hayes à nouveau) au niveau d'envoi de fax qui n'est pas en principe le niveau par défaut. Mais là aussi la doc du zinzin te dira ce qu'il en est.

Quand l'appareil travaille, il envoie lui aussi des octets. Par exemple la séquence 'O' 'K' '\r' pour dire que tout est OK. Ton application DOIT lire ces octets.

Comme tu le sais déjà puisque tu parles de javax.comm les octets en question sont lus/écrits sur le port série du PC.
Donc avec ton appli tu envoies la séquence de commandes Hayes "qu'il faut" et le zinzin t'envoie ton fax.

dbobby

bonjour
desole,mais je vous envoi sur google, seulement pas la page d'acceuil de goole mais allez faire un tour sur http://www.google.com/codesearch
tappez "fax en java" regadez si vous trouvez votre bonheur
Dbobby

hajer

merci pour votre aide,
j'ai bien compris le principe... so hard to realize!!! mais bon j'ai juste bp de boulot c'est tout.

fredericmazue

Quote:
so hard to realize!!!

Don't panic !!! :)
Ca a l'air difficile comme ça, mais c'est vraiment très facile.
hajer

c facile??!! tu as déjà essayé de le faire??!!
je l'espère bien en tout cas (que c'est facile)
juste une dernière question...
je pense qu'une application pareil ne pourra pas traiter un fax/modem intégrer dans le pc mais juste un périphérique externe.. si ca peut être possible j'aimerai bien savoir comment!

fredericmazue

Quote:
c facile??!! tu as déjà essayé de le faire??!!

Je l'ai fait des dizaines de fois, je prétends même être un spécialiste de la programmation du port série des PC.

En revanche je ne l'ai jamais avec Java qui n'est pas le langage qui va bien AMHA (et que je n'aime pas). Mais sur le fond, ça ne change pas grand chose, et je maintiens que c'est facile :)

Quote:
je pense qu'une application pareil ne pourra pas traiter un fax/modem intégrer dans le pc mais juste un périphérique externe.. si ca peut être possible j'aimerai bien savoir comment!

Pour tout périf externe connecté sur la RS232, il n'y a aucun problème.
Pour les périfs internes, là c'est autre chose. En général ces bestioles ont un driver avec lequel il faut composer. Mais ça dépend, il n'est pas exclu que ça fonctionne aussi avec un périf interne, à voir au cas par cas.

hajer

ah je vois!
dans ce cas, peux tu me dire qu'elles sont les langages sur lesquels tu as travaillé la programmation des ports séries. peut etre que si je trouverai un moyen plus facile pour réaliser ce que je veux, je pourrai au moins améliorer certaines fonctionnalités.
ce qui me plait dans le fait de le faire en java, c'est de pouvoir créer quelque chose qui n'existe pas, car d'après mes recherches, il n'y pas de bibliothèques gratuites pour l'envoi de fax.

fredericmazue

Quote:
dans ce cas, peux tu me dire qu'elles sont les langages sur lesquels tu as travaillé la programmation des ports séries.

C, C++ et Delphi.

Quote:
ce qui me plait dans le fait de le faire en java, c'est de pouvoir créer quelque chose qui n'existe pas, car d'après mes recherches, il n'y pas de bibliothèques gratuites pour l'envoi de fax.

Ben si, et tu la connais: javax.comm. Pour le reste il suffit d'écrire les commandes Hayes sur le port série, ce qui est une formalité
hajer

fredericmazue wrote:

Ben si, et tu la connais: javax.comm. Pour le reste il suffit d'écrire les commandes Hayes sur le port série, ce qui est une formalité

non je voulais dire qu'il n'y pas d'api avec des fonctions toutes prêtes pour l'envoi de fax, la programmation est plutôt assez bas niveau, on travaille sur la détection des ports de l'ordinateur, traitement des flux assez basique, etc...

une dernière question: est- ce que je peux avoir une idée sur les commandes hayes spécifiques à l'envoi et réception de fax. j'aimerai aussi par la meme occasion comprendre comment faire pour transformer un fichier word ou pdf en flux de données a envoyer sur le port série

merci en tout cas pour votre aide.

hajer

autre chose, si tu as un exemple de programme écrit en C, qui traite de ce sujet, (et si ce n'est pas trop demander) j'aimerai bien voir un exemple concret pour mieux comprendre le principe.
et encore merci :D :D :D

fredericmazue

Quote:
non je voulais dire qu'il n'y pas d'api avec des fonctions toutes prêtes pour l'envoi de fax

Ces fonctions existent en API Windows.
Peut être il existe une librairie Java quelque part je n'en sais rien.
Quote:
programmation est plutôt assez bas niveau, on travaille sur la détection des ports de l'ordinateur, traitement des flux assez basique, etc...

Ben la programmation du port série, c'est ça :)

Quote:
est- ce que je peux avoir une idée sur les commandes hayes spécifiques à l'envoi et réception de fax

Au risque de me répéter lourdement: dans la doc de ton modem/fax.
Les commandes modem Hayes sont standards. Pour le fax, je ne sais plus exactement, c'est sans doute dépendant de l'appareil. (je dis ça de tête, à vérifier)

Quote:
j'aimerai aussi par la meme occasion comprendre comment faire pour transformer un fichier word ou pdf en flux de données a envoyer sur le port série

Houlà, ça c'est encore autre chose...
Un problème à la fois.
Et puis envoyer sur le port série, c'est une chose, mais qui/quoi récupère les données au bout du fil ?
Quote:
autre chose, si tu as un exemple de programme écrit en C, qui traite de ce sujet, (et si ce n'est pas trop demander) j'aimerai bien voir un exemple concret pour mieux comprendre le principe.

Je l'ai écrit moult fois dans Programmez! (si tu es un fidèle lecteur... :) ) et j'ai même posté un exemple complet sur ce forum. Je ne sais plus où, mais en cherchant un peu ça doit pouvoir se retrouver.
hajer

ah ok merci,
il faut dire que j'ai découvert Programmez.com il y a qqs jours en cherchant un forum sur java. donc je ne connaissais pas le mag avant ce jour là.
et puis je ne vis pas en france, et je n'ai jamais rencontré ce mag dans mon pays (meme si je le trouve très intéressant!!)
enfin, je vais jeter un coup d'oeuil sur le forum pour trouver ton post

merci beaucoup :-)

fredericmazue

Quote:
puis je ne vis pas en france, et je n'ai jamais rencontré ce mag dans mon pays

Où vis tu ?

Quote:
meme si je le trouve très intéressant!!

J'en suis très heureux :)
Sais que tu peux l'achetezr au format PDf sur ce site ? ;)

Quote:
enfin, je vais jeter un coup d'oeuil sur le forum pour trouver ton post

Hem... j'ai regardé moi même et je ne l'ai pas retrouvé. Je n'arrive pas à me rappeler dans quel forum c'était.
Et c'était il y a longtemps.

D'un autre côté, comme la programmation du port série en Java revient régulièrement sur ce forum, un projet d'article dans Programmez! est à l'étude ;) Bien sûr ça ne sera pas dédié spécifiquement au fax, mais le principe y sera. Je veux dire: à partir du moment où tu sais envoyer une command AT au modem et que tu sais voir qu'il te répond OK, le reste est vraiment un détail :)
Mais ceci ne sera de toutes façons pas avant Programmez! 107 ...

hajer

fredericmazue wrote:
Quote:
puis je ne vis pas en france, et je n'ai jamais rencontré ce mag dans mon pays

Où vis tu ?

Je vis en Tunisie
fredericmazue wrote:

Quote:
meme si je le trouve très intéressant!!

J'en suis très heureux :)
Sais que tu peux l'achetezr au format PDf sur ce site ? ;)

Je vais chercher chez les marchands de journaux, sinon j'essai de voir pour cette alternative :-)
Quote:

Hem... j'ai regardé moi même et je ne l'ai pas retrouvé. Je n'arrive pas à me rappeler dans quel forum c'était.
Et c'était il y a longtemps.

j'ai tout de même trouvé votre réponse dans un forum à quelqu'un qui avait aussi un petit problème concernant la programmation série.
j'ai donc essayé son code source. Ce que m'affiche le programme concernant la liste des ports disponible c'est ça:
------------------------------------
listage des ports série disponibles:
* COM3
* LPT1
* LPT2
-----------------------------------------
voila le code source que j'ai utilisé
import javax.comm.*;
import java.io.*;
import java.util.*;
import com.sun.comm.Win32Driver;

/*
Cette classe permet de tester les ports séries disponibles
en les listant puis en créant un stream d'entrée et de sortie
*/
public class Main
{
CommPortIdentifier portId;
BufferedReader in;
PrintWriter out;
SerialPort serialPort;

/*
Constructeur de la classe TesteJavaComm qui prend en paramètre le port série à utiliser.
Dans un premier temps on liste les ports disponibles sur le pc
*/
public Main (String com)
{
Win32Driver w32Driver= new Win32Driver();
w32Driver.initialize();
System.out.println("listage des ports série disponibles:");
listePortsDispo();
try
{
//ouverture du port série:
portId=CommPortIdentifier.getPortIdentifier(com);
serialPort=(SerialPort)portId.open("Envoi",2000);
int i=0;
do
{
//on sélectionne tous les paramètres de la connexion série:
serialPort.setSerialPortParams(38400,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
System.out.println("Ouverture du port "+com);

//pour lire avec des streams:
in=new BufferedReader(new InputStreamReader(serialPort.getInputStream()));

//Teste de lecture sur le port série
int b = in.read();
System.out.println(in.read());
System.out.println(b);
in.close();
i++;
}while(i!=3);
}
catch (Exception e)
{
e.printStackTrace();
}
}//fin constructeur

public void listePortsDispo()
{
System.err.println("recherche...");
Enumeration portList=CommPortIdentifier.getPortIdentifiers();
if (portList==null)
{
System.err.println("Aucun port de communication détecté");
return;
}
while (portList.hasMoreElements())
{
portId=(CommPortIdentifier)portList.nextElement();
System.out.println("* "+portId.getName());
} // while
} //fin de la methode listePortsDispo()

/*
Methode main qui permet de tester notre classe de teste en ouvrant une connexion sur le port COM3.
*/
public static void main(String args[])
{
new Main ("COM3");
}//fin du main
}//fin de la classe
dans ce code source il y a en plus de l'énumération des ports, un test de lecture sur un de ces port (dans la version originale du code source, son propriétaire avait fait le test sur le port com1, qui n'est pas présent chez moi) : le port com1. ce test là m'affiche un message d'erreur dû à une exception relevée :
javax.comm.PortInUseException: Port currently owned by Unknown Windows Application
at javax.comm.CommPortIdentifier.open(CommPortIdentifier.java:337)
at test_port.Main.(Main.java:42)
at test_port.Main.main(Main.java:88)

mais ce qui m'intrigue, c'est que dans mon pc portable je n'ai aucun port série!! et vu que je n'ai pas une grande idée dans ce domaine, je me demande s'il existe un port série com3, bref. un autre détail assez important, c'est quand j'ai fait le test de ce programme il n'y avait aucun cable relié à mon pc, a part celui de l'alimentation. donc je ne vois pas pourquoi l'exception port in use a été relevée!
bon si vous pouvez m'éclairez dessus! parce que moi je sais plus comment avancer, parce que je ne comprends plus rien :roll:

fredericmazue

Quote:
j'ai tout de même trouvé votre réponse dans un forum à quelqu'un qui avait aussi un petit problème concernant la programmation série.

Les questions sur le port série sont récurrentes, il y en a partout.
MAIS cette réponse n'est pas celle de l'exemple en C dont nous parlions plus haut. Et je ne suis pas l'auteur du code Java donné dans le post cité plus haut, je n'ai même jamais lu ce code dans le détail.

Quote:
mais ce qui m'intrigue, c'est que dans mon pc portable

Ah c'est un portable, petit cachotier....
C'est que les portables sont toujours un peu des PC "à part".

Quote:
je n'ai aucun port série!!

Oh que si, mais il s'agit là de ports virtuels.
Quote:
me demande s'il existe un port série com3

Oui pour la même raison.
Quote:
donc je ne vois pas pourquoi l'exception port in use a été relevée!

Ma foi c'est fort simple. C'est parce que, comme dirait La palice, le port est utilisé :)
Alors comment ça ? :shock:
Et bien je ne connais pas ta machine, mais je dirais volontiers qu'elle a un modem. Et ce n'est pas un modme externe ;), puisque pas de connecteur série :)
Donc toujours en vertu de La Palice, c'est un modem interne, ce qui s'appelle aussi un Winmodem et moi ce que j'appelle une grosse saloperie (pardon, mais quand tu auras beaucoup expérimenté, tu seras de mon avis)
Le Winmodmem d'un portable a évidemment l'intérêt de l'encombrement physique.
Pour la programmation, là c'est autre chose. C'est d'ailleurs ce que j'évoquais dans un post plus haut. "Il faut composer avec les driver" disais-je.
Bref ici selon toute vraisemblence, ton portable dispose de ports séries virtuels, au moins trois. Mais le winmodem, ou plus exactement son pilote (driver) ouvre le port au chargement (du driver lui même quand le système démarre) et reste ainsi: Autrement dit COM1 (et peut être COM2) est squatté et inutilisable, à moins de savoir demander au driver de le libérer.
Ne pas désespérer pour autant, il reste au moins COM3. Si tu ouvres COM3 avec ton programme Java tu dois pouvoir travailler et faire de la communcation série. Le problème est de la communication série avec quoi, puis là je ne sais pas ce que tu peut brancher sur ta bécane.

Mais la situation est difficile. probablement ton Winmodem, pour revenir au fax est toujours activé (et donc il occupe le port comme on a dit) Concrètement cela signifie qu'il est déjà près à envoyer ou recevoir un fax probablement MAIS PAS en programmation Hayes/série standard, mais via les API Windows dont le boulot est de travailler avec le driver.
Que fait le driver ? Pour l'instant mystère et boule de gomme puisque tu ne dis pas quel est ton winmodem. S'il convertit les ordres des API Windows en commandes Hays (ca existe des drivers comme ça, mais principalement pour les modems externes forcément :twisted: ) Alors tu pourras faire ta programmation Java, sous réserve comme dit plus haut de savoir demander au driver de libérer le port, ce qui n'est pas gagné d'avance. :evil:
Si le driver pilote à sa facon le composant, alors adieu le programmation série standard et tu ne pourras pas faire avec Java. Tu devras faire en C ou C++ et appeler les API Windows "fax" évoquées plus haut
Mais comme je le dis toujours sur ce forum. Java c'est de toutes façons un langage bon à rien. Un horreur que je déteste.
Voilà j'espère avoir été bien clair et que tu as maintenant une meilleure vision de la situation.
Dis, toi qui as l'air intéressé par l'informatique, pourquoi Java ? Pourquoi pas plutôt un langage pour faire de l'informatique.

hajer

Quote:
ce que j'appelle une grosse saloperie (pardon, mais quand tu auras beaucoup expérimenté, tu seras de mon avis)

t'inquiète je le suis déjà

Quote:

Que fait le driver ? Pour l'instant mystère et boule de gomme puisque tu ne dis pas quel est ton winmodem.

en consultant la liste de périphérique j'ai trouvé le modem interne sous le nom de "Toshiba Software Modem"
Quote:

S'il convertit les ordres des API Windows en commandes Hays (ca existe des drivers comme ça, mais principalement pour les modems externes forcément :twisted: ) Alors tu pourras faire ta programmation Java, sous réserve comme dit plus haut de savoir demander au driver de libérer le port, ce qui n'est pas gagné d'avance.

et si je désinstalle le modem, je serai pas libérée de son pilote?!

Quote:
Dis, toi qui as l'air intéressé par l'informatique, pourquoi Java ? Pourquoi pas plutôt un langage pour faire de l'informatique.

je suis étudiante en informatique, spécialité génie logiciel. l'application d'envoi de fax par java fait partie de mon sujet de mini projet (la matière mini projet fait partie des matières qu'on étudie au premier semestre, au mois de janvier, je vais passer la soutenance du projet, ainsi qu'un concours sur dossier d'accès au cycle d'ingénieurs, bref vais pas me mettre à parler du système de travail, il est trop complexe...)
j'ai eu la liberté de choix pour mon projet. J'ai donc travaillé avec mon binome sur l'amélioration d'une application déjà existante dans une société et qui est "la gestion de bureau d'ordre". ma part de travail consiste à développer une application permettant la relance automatique par mail ou par fax de rappels concernant les retards de réponse. en d'autres termes, mon application ne va pas inclure seulement un envoi de fax, mais aussi un envoi de mail. Donc le choix du langage a été très à la hate parce que le choix du sujet a tardé et qu'on devait travailler sur un langage qu'on maitrisait... qui était le java. je sais aussi travailler en C, mais je l'ai un peu oublié dû a un manque de pratique. C'est donc un problème de délai.
Donc, si on remet en question tout le problème. l'application que je vais développer ne sera pas utilisée sur mon pc portable, mais bien celui d'un pc de bureau de la société.
Et finalement, j'ai bien trouvé la solution à mon problème, car j'ai un autre pc de bureau (que j'ai fourré dans mon placard depuis longtemps) et qui va me servir pour utiliser ses ports série.
le seul hic c que je vais passer d'un pc sous xp, 1G de ram, 80 G de disq dur à un pc sous win 2000, 128M de ram et 14G.. 8)
mais bon je m'y ferai.
merci monsieur frédéric pour tous vos conseil (je sais pas ce que je ferai sans vous!!!) donc pour l'instant, je dois installer tout ce qui est java sur ce pc des année 90!! et commencer à travailler mon application dessus.. et voila le travail...

fredericmazue

Quote:
Toshiba Software Modem

Connais pas....
Quote:
et si je désinstalle le modem, je serai pas libérée de son pilote?!

Si...
Mais malheureusement tu seras probablement aussi libérée des ports COM virtuels et tu ne seras pas beaucoup plus avancée...
Pour être sûre que ton winmodem est un gros merdier, il faudrait essayer sous Linux. Si tu as aussi installé un Linux sur ton PC (ou si quelqu'un que tu connais a le même matériel), et si il apparaît que sous Linux il est impossible d'utiliser de modem, alors là tu es sûre que c'est une merde intégrale. (ce qui est probablement le cas je le crains)

Quote:
je suis étudiante en informatique

Une fille... :)
J'adore les filles informaticiennnes
D'ailleurs ma femme est une informaticienne diplômée. Moi je tapote le clavier juste un peu comme ça :)

Quote:
128M de ram

Houlà... c'est pas beaucoup ça pour l'infâme Java.
Pour ton application ça va aller. Mais c'est pour la coder. Tu ne pourras pas utiliser Netbeans ou Eclipse dans de bonnes conditions.

L'idéal serait de prendre C++ pour ton projet. Sous XP c'est assez facile d'écrire un client COM pour envoyer des mails, et tu pourrais utiliser les API Windows pour les fax. Mais il est vrai que la programmation COM, si c'est canon dans un projet, il va te falloir tu temps pour l'appréhender. Et puis C++ n'est pas excessivement facile. (remarque, on peut programmer COM en C, mais le code client COM en C c'est très lourdingue, on peut aussi envoyer des mails uniquement à travers un socket, sans COM, mais là il faut écrire une montage de code pour gérer tout le protocole :( )

Sinon je pense à une *bonne* solution intermédiaire. Sous ton portable, tu écris écris le gros de ton application en Java. Et comme tu ne peux pas commander le port série, alors tu écris une petite librairie C (ou C++) qui interface Java avec les API Windows Fax via la JNI de Java (remarque c'est déjà (et forcément) comme ça que fonctionne javax.comm pour le port série) . Programmer la JNI de Java n'est pas difficile.

Là tu pourrais tout faire sur ta machine et il me semble que ça te fera un projet vachement bien, genre "j'ai pu contourner une difficulté", "je ne suis pas prisonnière de Java pour mener à bien mon projet", etc, etc, bref la classe 8)

Si tu choisis cette option, il me paraît sage de commencer par écrire un petit programme en C pour envoyer un fax. Ce programme sera la base pour en faire une librairie ensuite, et surtout, comme ça, s'il y a une difficulté technique majeure tu le sauras tout de suite.
parce que s'il y a une difficulté, elle sera là. Le reste de ton projet me semble sans problème :)

hajer

Quote:
Houlà... c'est pas beaucoup ça pour l'infâme Java.
Pour ton application ça va aller. Mais c'est pour la coder. Tu ne pourras pas utiliser Netbeans ou Eclipse dans de bonnes conditions.

bon la solution à laquelle j'ai pensé en choissant de travailler comme ça, c de programmer mon application avec mon pc portable et de la tester avec l'autre ordi.

Quote:
Sinon je pense à une *bonne* solution intermédiaire. Sous ton portable, tu écris écris le gros de ton application en Java. Et comme tu ne peux pas commander le port série, alors tu écris une petite librairie C (ou C++) qui interface Java avec les API Windows Fax via la JNI de Java

si j'ai bien compris d'abord je dois écrire un programme C qui envoie un fax utilisant les apis java, ensuite j'utilise celui ci pour créer une librairie C que je vais utiliser dans mon programme Java à l'aide de la JNI, donc vais laisser de coté javax.comm. alors dans ce cas je dois laisser tomber ma programmation port série? ou est-ce que je vais faire ma programmation port série à l'aide des API windows fax? essayez d'etre un peu plus claire (je suis une débutante!!!:oops: )
Quote:

(remarque c'est déjà (et forcément) comme ça que fonctionne javax.comm pour le port série) .

Là j'ai vraiment pas compris ce que vous voulez dire

merci encore une fois pour votre généreuse aide :)

fredericmazue

Quote:
bon la solution à laquelle j'ai pensé en choissant de travailler comme ça, c de programmer mon application avec mon pc portable et de la tester avec l'autre ordi.

Oui évidemment tu peux faire ça aussi. Si tu as la patience. Je dis ça parce que ça n'est pas pratique évidemment, mais c'est sûr que tu peux le faire.
Quote:
si j'ai bien compris d'abord je dois écrire un programme C qui envoie un fax utilisant les apis java, ensuite j'utilise celui ci pour créer une librairie C que je vais utiliser dans mon programme Java à l'aide de la JNI,

Exactement :)
Quote:
donc vais laisser de coté javax.comm,alors dans ce cas je dois laisser tomber ma programmation port série?

Oui. Mais entendons nous bien. Là on parle si tu fais tout sur ton portable.
Si tu adoptes la solution que tu as décrite plus haut, à savoir coder sur ton portable, et faire marcher sur une autre machine, alors tu n'as pas besoin de C, de JNI et tu gardes javax.comm et la programmation série
Si tu fais tout sur ton portable, codage et exécution donc oui, tu dois laisser tomber javax.comm, puisque, on l'a vu, on ne peut pas faire de programmation série classique sur ton portable.

Donc tu dois choisir exactement ce que tu veux faire, c'est à dire avec quelle(s) machine(s) puis quand ce choix est fait, automatiquement ça sera soit C et JNI soit javax.comm pour envoyer un fax.

Quote:
est-ce que je vais faire ma programmation port série à l'aide des API windows fax?

Non la programmation série et les API Fax sont deux choses distinctes. L'une englobant l'autre.

- Programmation série:
C'est de la programmation de bas niveau. Tu dois tout faire. Envoyer des commandes Hayes sur le port, lire le résultat sur le port, envoyer les données constituant le document (le fax) selon la norme je ne sais plus quoi. Bref c'est un gros boulot.

- Programmation API Windows Fax:
C'est de la programmation de haut niveau, c'est à dire que les API font faire pour toi, tout ce que j'ai dit pour la programmation série.
Toi tu dis simplement: je veux faxer à tel numéro, avec telles données dans le fax et alors les API Windows vont faire à ta place toute la programmation série ou l'équivalent à travers le driver d'un winmodem. Autrement dit tu ne t'occupes presque de rien, et surtout là ça marchera avec ton winmodem, puisque le système d'exploitation (Windows) sait travailler avec.
C'est donc évidemment la solution la plus simple et la plus facile et la plus rapide. Le seul inconvénient est que ça marchera seulement sous Windows évidemment.

Quote:
Là j'ai vraiment pas compris ce que vous voulez dire

J'ai voulu dire que dans le paquetage javax.comm il y a déjà une librairie C/JNI pour communiquer avec le port série. J'ai voulu dire que Java tout seul ne peut pas travailler avec le port série donc ceux qui ont créé javax.comm ont du créer une librairire C et l'interfacer avec la JNI.

De la même façon que Java ne sait pas appeler les API Windows Fax et qu'il faut écrire une librairie et l'interfacer avec la JNI pour pouvoir le faire depuis Java.

Maintenant je vais te dire une chose à toi qui fait des études en informatique. Si tout le temps que l'on passe à discuter de ce qu'on ne peut pas faire avec Java, on l'avait employé à le faire en C ou mieux en C++, il y a longtemps que ton application elle serait finie et quelle marcherait sur tous les Windows du monde, et même de l'univers.
Ca demande une journée pour écrire ton application, et allez disons une autre journée pour emballer le tout dans de belles fenêtres. Alors que là ça fait déjà une semaine que tu ne fais rien de concret avec ton Java.
Java... pffff :evil: :evil: :evil:

C'est, à mon humble avis, une faute de choisir d'abord un langage puis de voir ensuite comment on va s'emmerder à arriver à faire ce qu'on doit faire.
Si tu veux être efficace en informatique, tu dois d'abord définir quoi faire, et seulement ensuite réfléchir avec quoi.
Dans ton cas, le bon choix c'est C/C++
Ou peut être aussi C# et .Net
Envoyer des mails en C# est très facile. Je n'ai jamais envoyé de fax avec C# mais c'est sûrement très facile. Et sinon il est très facile d'appeler les API Windows avec C#.
En plus C# est facile à apprendre pour toi car il a beaucoup de similitudes avec Java.
Donc si ton application ne doit tourner que sous Windows, C, C++, C# ou un autre langage .Net sont d'infiniment meilleurs choix et tu devrais y penser.
D'ailleurs moi si j'étais prof et que je doive noter un projet, je mettrais au moins la moitié de la note sur la pertinence du choix des outils pour résoudre un problème donné...
Parce que bien choisir ses outils c'est une des clefs du métier d'informaticien

hajer

Quote:

Quote:
donc vais laisser de coté javax.comm,alors dans ce cas je dois laisser tomber ma programmation port série?

Oui. Mais entendons nous bien. Là on parle si tu fais tout sur ton portable.

comprenez bien une chose : l'application que je vais développer ne tournera pas dans ma machine, enfin je dois prouver qu'elle tourne sur une machine, mais elle sera utilisée dans une société. Donc le problème là est de dire: si l'utilisateur de la machine sur laquelle elle va tourner utilise un modem extrerne, je ne vais pas lui imposer de l'enlever pour pouvoir utiliser mon application, par contre je peux lui imposer d'en avoir un (vu que c'est de loin plus efficace). Autrement dit, je DOIS utiliser la programmation série.

Quote:
Maintenant je vais te dire une chose à toi qui fait des études en informatique. Si tout le temps que l'on passe à discuter de ce qu'on ne peut pas faire avec Java, on l'avait employé à le faire en C ou mieux en C++, il y a longtemps que ton application elle serait finie et quelle marcherait sur tous les Windows du monde, et même de l'univers.
Ca demande une journée pour écrire ton application, et allez disons une autre journée pour emballer le tout dans de belles fenêtres. Alors que là ça fait déjà une semaine que tu ne fais rien de concret avec ton Java.
Java... pffff :evil: :evil: :evil:

Une autre chose que vous devez savoir, je n'ai pas que ce projet entre les mains, j'ai un autre projet de développement web, j'ai des devoirs surveillés (une sorte de devoir de contrôle), que je passe ces jours - ci, j'ai aussi des examens à passer en janvier. ce qui fait que je ne suis pas totalement consacrée à mon projet, sinon je pourrai faire beaucoup plus que je ce que j'ai déjà.

Quote:
C'est, à mon humble avis, une faute de choisir d'abord un langage puis de voir ensuite comment on va s'emmerder à arriver à faire ce qu'on doit faire.

je n'ai pas eu le choix au départ, vu qu'on (mon binome et moi) devait choisir un sujet très intéressant alors qu'on avait pas beaucoup d'expérience coté projets, et que les encadreurs ont commencé en retard. on a donc décidé de travailler avec un langage qu'on maitrise. voila tout.

Quote:
Si tu veux être efficace en informatique, tu dois d'abord définir quoi faire, et seulement ensuite réfléchir avec quoi.
Dans ton cas, le bon choix c'est C/C++

pour ce projet je crois que je vais opter pour la solution de la programmation série, j'ai déjà assez de retard comme ça...

Quote:
Donc si ton application ne doit tourner que sous Windows, C, C++, C# ou un autre langage .Net sont d'infiniment meilleurs choix et tu devrais y penser.

vous m'avez vraiment donné envie d'apprendre c++ et c#. je pense que je ne vais pas les utiliser pour ce projet, mais pour le prochain (il y en aura beaucoup d'autre) j'y penserai surement.

Quote:
D'ailleurs moi si j'étais prof

j'aurai bien aimé avoir un prof qui s'y connaisse en programmation série!!! parce que là dessus, aucun de ceux qui sont impliqués dans mon encadrement ne connaissent ça... :evil: :evil: je dois tout faire toute seule!!!

Enfin, je veux vous remercier beaucoup beaucoup beaucoup, parce que grâce à vous j'ai compris pas mal de choses que je n'aurais jamais espéré connaître toute seule.

Donc maintenant je vais entammer la modélisation de mon projet, et dès que possible, son implémentation.

GRACIAS!! :D