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

    [Java] Problema invio dati su OutputStream

    Salve raga


    ho connesso una periferica al pc tramite librerie RXTX ed il collegamento sulla COM viene perfettamente stabilito...
    Quando digito dalla periferica al pc riesco ad ottenere l'input tramite InputStream


    Ho dei problemi ad inviare... In particolare quando scrivo sull'output si verifica quanto segue :


    inviando in questo modo
    out.write(str.getBytes(Charset.forName("ASCII")));
    non ottengo l'ack di risposta...


    inviando invece
    out.write(str.length());
    ottengo stranamente l'ok anche se comunque la periferica non effettua l'operazione dovuta...


    Da manuale la stringa da inviare dovrebbe essere sintatticamente creata in questo modo
    Stx < dati in ASCII 20h-7f > Etx


    Non riesco a trovare soluzioni... Sapreste darmi qualche consiglio?


    Thanks

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non sapendo che tipo di oggetto sia "out", non posso dare informazioni più precise.
    Quello che non vedo e che nella maggior parte dei casi è la causa del "problema" è il mancato "flush" dei dati... Dopo ogni write() dovrebbe seguire un flush().


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    La flush() viene eseguita dopo i 2 comandi elencati sopra...

    Per quanto riguarda i file di stream, vengono creati in questo modo

    codice:
    SerialPort serialPort = (SerialPort) commPort;
    serialPort.setSerialPortParams(
        9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
    InputStream input = serialPort.getInputStream();
    OutputStream out = serialPort.getOutputStream();
    Il problema è perchè riesco ad inviare str.length() e non str.getBytes(Charset.forName("ASCII"))

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Fire Fox II Visualizza il messaggio
    inviando in questo modo
    out.write(str.getBytes(Charset.forName("ASCII")));
    non ottengo l'ack di risposta...

    Da manuale la stringa da inviare dovrebbe essere sintatticamente creata in questo modo
    Stx < dati in ASCII 20h-7f > Etx
    Stx e Etx sono dei codici ASCII ben precisi .... non sono certo la sequenza dei caratteri letteralmente es 'S' 't' 'x' !
    Le stringhe sono "cablate" nel codice? (e in tal caso come hai espresso Stx/Etx?) Oppure provengono da altra fonte?

    Quote Originariamente inviata da Fire Fox II Visualizza il messaggio
    inviando invece
    out.write(str.length());
    ottengo stranamente l'ok anche se comunque la periferica non effettua l'operazione dovuta...
    Questo scrive solo 1 byte con il valore della lunghezza della stringa (lunghezza che ovviamente deve stare in un byte .... se fosse 300, non ci sta ovviamente ).
    Non so (non posso dirlo io) se è corretto e a cosa serve nel tuo caso.
    Ultima modifica di andbin; 30-12-2013 a 22:18
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Stx e Etx sono dei codici ASCII ben precisi .... non sono certo la sequenza dei caratteri letteralmente es 'S' 't' 'x' !
    Le stringhe sono "cablate" nel codice? (e in tal caso come hai espresso Stx/Etx?) Oppure provengono da altra fonte?
    Bene, risolto l'arcano...
    Stupido io che facevo affidamento alla chiamata del metodo str.getBytes(Charset.forName("ASCII")))

    Beh, da oggi conosco anche l'esistenza dei codici ascii STX ed ETX

    Grazie mille!

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.