Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JAVA] Comunicazione seriale...e altro

    Salve a tutti,
    sto creando un'applicazione che deve restare in ascolto da più porte COM e registrare i dati in un database, per quanto riguarda la scrittura su database ho già realizzato il tutto.

    Per quanto riguarda la comunicazione sono partito dalla SimpleRead.java trovata sul sito della sun e l'ho arricchita con particolari metodi utili per i miei scopi.
    Finora ho testato solo con una porta in quanto non ho ancora in dotazione l'hardware necessario, vorrei chiedere se è utilizzabile la simpleread anche per ricevere da più porte contemporaneamente e poi dato che questa applicazione dovrà funzionare quasi 24 ore su 24 che accorgimenti dovrei prendere per evitare che vada in timeout.

    Ringrazio anticipatamente chi mi presterà attenzione.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Comunicazione seriale...e altro

    Originariamente inviato da steveaustin84
    Per quanto riguarda la comunicazione sono partito dalla SimpleRead.java trovata sul sito della sun.
    Per chi volesse leggerlo, si trova a partire da qui.

    Originariamente inviato da steveaustin84
    vorrei chiedere se è utilizzabile la simpleread anche per ricevere da più porte contemporaneamente
    Non ho mai usato JavaComm ma leggendo l'esempio e la documentazione, direi di sì. In quell'esempio la ricezione dei dati è "event-driven" cioè non è la applicazione che si blocca su una "read" aspettando i dati ma è JavaComm che invia un evento alla applicazione per segnalare che ci sono dei dati in arrivo.
    Se apri più porte e ad ognuna aggiungi un SerialPortEventListener (che potrebbe essere lo stesso oggetto es. 'this' o anche diversi .. dipende da cosa/come devi poi fare) non vedo grossi problemi.

    Originariamente inviato da steveaustin84
    che accorgimenti dovrei prendere per evitare che vada in timeout.
    Così non credo che vada in timeout, nel senso che l'evento arriva quando i dati arrivano. Se invece vuoi controllare che non passi più di un certo tot di tempo senza ricevere dati, allora è un'altra cosa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Il mio problema sarebbe se va in timeout, potrebbe interessarmi vedere per quanto tempo non ha ricevuto niente ma sarebbe secondario.
    Un'altra cosa, c'è un modo per vedere da che porta ho ricevuto i dati??
    Mi servirebbe per poter creare una tabella per ogni dispositivo da cui ricevo.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da steveaustin84
    Un'altra cosa, c'è un modo per vedere da che porta ho ricevuto i dati??
    Mi servirebbe per poter creare una tabella per ogni dispositivo da cui ricevo.
    L'oggetto SerialPortEvent passato al metodo serialEvent() ha il metodo (ereditato da EventObject) getSource() che ritorna l'oggetto sorgente (non ne sono sicuro ma dovrebbe essere proprio l'oggetto SerialPort).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Esatto, ritorna la porta da cui proviene la comunicazione.
    Grazie, per ora, quando farò prove consistenti chiederò nuovamente aiuto se ne avrò bisogno.

  6. #6
    Ho un problema...per fare delle prove vorrei eseguire il tutto su un altro pc con windows98, ho messo tutto, installato le librerie ma non vuole funzionare, mi dice porta COM non trovata, vorrei capire che accorgimenti prendere, mi chiedevo se le librerie sono compatibili con windows 98 ma non sono riuscito ad avere informazioni da nessuna parte.

  7. #7
    Il problema con windows 98 è stato risolto, ora avrei un altro problema, la comunicazione è composta da una serie di stringhe in entrata, però mi riceve solo 8 caratteri alla volta, se la stringa è più lunga gli altri li riceve in un secondo momento sfasandomi completamente la memorizzazione.
    Ho provato ad abilitare la funzione threshold, grazie alla quale riesco a leggere tutta la stringa ma in questo caso il problema è in caso di stringhe più corte.
    Qualcuno può aiutarmi??
    Penso esista un metodo per ricevere un numero di caratteri variabile

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.