Bonjour à tous,
Voila je doit récupérer des données d'un système qui communique via un port série. Le système envoie les données à la réception de la commande ASCII : RV, mais je ne sais pas trop comment faire pour envoyer cette commande. J'ai utilisé les cours dispo ici pour m'aider à faire le code mais au moment de l'exécution cela semble se "bloquer" (sans pour autant relever d'exception) au niveau de l'envoie de la requête ou de la réception des données je n'arrive pas trop à savoir. (au niveau des lignes en rouge sur le code qui suit)
la données sont sous la forme d'une chaine de charactere type A,B,C,D que je veut en suite trier d'où l'utilisation du tokenizer, mais cela ne me pose pas de problème, c'est juste la réception des données (ou l'envoie de la commande) qui me pose souci. La méthode Ecrire(); me sert a créer un fichier permettant de recenser avec date et heure de toutes les exceptions relevées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 public class Lecture{ private StringTokenizer DATA = null; private SerialPort portSerie = null; private BufferedReader fluxLecture = null; private OutputStream fluxEcriture = null; private CommPortIdentifier portId = null; [...] public void Connect() { Win32Driver w32Driver = new Win32Driver(); w32Driver.initialize(); //connection au port serie try { portId = CommPortIdentifier.getPortIdentifier("COM1"); } catch (NoSuchPortException e) { Ecrire(""+e); } try { portSerie = (SerialPort) portId.open("Lecture", 10000); } catch (PortInUseException e) { Ecrire(""+e); } try { portSerie.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); portSerie.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); } catch (UnsupportedCommOperationException e) { Ecrire(""+e); } try { fluxEcriture = portSerie.getOutputStream(); fluxLecture = new BufferedReader( new InputStreamReader(portSerie.getInputStream())); String msg = "RV"; fluxEcriture.write(msg.getBytes()); DATA = new StringTokenizer((String)fluxLecture.readLine(), SEPARATOR); } catch (IOException e) { Ecrire(""+e); } try { fluxEcriture.close(); fluxLecture.close(); } catch (IOException e) { Ecrire(""+e); } portSerie.close(); } [...] }
Je me forme sous java depuis quelques semaines seulement avec l'aide des cours dispo ici et la donc il y a surement des chose que je n'ai pas encore bien comprises et qui vous sembleront aberrantes je vous prie de m'en excuser.
Si jamais vous pouviez m'aider sur mon souci d'envoi et de réception de donnée.
Merci d'avance pour le coup de main.
P.S : Les paramètres que j'ai choisi pour le port serie sont ceux qui me permettent de recevoir les données quand j'utilise l'hyperterminal pour communiquer avec mon système.
Partager