Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2008, 09:40   #1
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
[JAVA]: problemi lettura dati binari

Ciao a tutti, vi spiego qual'è il mio problema.
Devo leggere dei dati binari provenienti da un terminale e salvarli su un file binario.
Il problema è che quando apro il file mi trovo alcuni dati errati, per esempio:

questo è il file di uscita:
1E 20 20 07 30 38 31 32 32 33

questo è il file corretto che dovrei ottenere:
1E 00 00 07 30 38 31 32 32 33

Il metodo che fa questa operazione è fatto in questo modo:

Codice:


		byte[] buff = new byte[1024];
		int ret_read = 0;
		try {
			InputStream inputStream = telnetClient.getInputStream();
			FileOutputStream file = new FileOutputStream("file.dat");;
		
			ret_read = inputStream.read(buff);
			while (ret_read >= 0){
				file.write(buff, 0, ret_read);
				ret_read = inputStream.read(buff);
			}
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Secondo voi come posso risolvere?
ciao e grazie per l'aiuto che saprete darmi.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2008, 11:18   #2
Ken1986
Member
 
Iscritto dal: Nov 2007
Messaggi: 122
Anch'io ho avuto un tuo stesso problema, ma non sono riuscito a risolvere, ed ho dovuto cambiare linguaggio di programmazione per ovviare
Ken1986 è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2008, 13:15   #3
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
Puó darsi che per qualche ragione i 0x00 vengono trasformati in spazi del codice ASCII (0x20)
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 30-12-2008, 14:03   #4
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da stdecden Guarda i messaggi
Puó darsi che per qualche ragione i 0x00 vengono trasformati in spazi del codice ASCII (0x20)
si è proprio questo, come potrei risolvere?
posso evitare che i byte vengano trasformati in codice ASCII ?
__________________
HU Queen Member

Ultima modifica di mercury841 : 30-12-2008 alle 14:06.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2008, 08:35   #5
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
nessun altro si è trovato ad affrontare lo stesso problema?
__________________
HU Queen Member

Ultima modifica di mercury841 : 31-12-2008 alle 09:08.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2008, 15:45   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non è che è una limitazione della sorgente da cui vai a prendere il file ? Vedo un telnet client.
Prova ad usare come input un altro file e vedi se funziona.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2009, 08:27   #7
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non è che è una limitazione della sorgente da cui vai a prendere il file ? Vedo un telnet client.
Prova ad usare come input un altro file e vedi se funziona.
probabilmente è proprio questo il problema, quando vado a leggere da telnet i dati binari, non so perchè, alcuni dati vengono trasformati in altri. Infatti ho provato a ricopiare un file binario in un altro utillizzando la stessa procedura di sopra e il tutto funziona perfettamente. Non so che fare...
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2009, 09:05   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Probabilmente vengono cambiati i dati sotto 0x20 (sotto lo spazio), perché spesso rappresentano sequenze di escape per i terminali. In pratica si fa per evitare che succeda la stessa cosa che avviene sui terminali *nix quando si fa un cat di un file binario (vengono cambiati tutti i caratteri con simboli strani).

Purtroppo non so se ci sia qualcosa da fare...magari potendo manipolare le impostazioni del server, ma non ne ho idea.

Ultima modifica di cionci : 02-01-2009 alle 13:44.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2009, 14:31   #9
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
http://tools.ietf.org/html/rfc856
Quote:
we have the rule that when a connection is not presently
operating in binary mode, the default (i.e., the interpretation of
WON'T and DON'T) is to continue operating in the current mode,
whether that is NVT ASCII, EBCDIC, or some other mode. This rule,
however, is not applied once a connection is operating in a binary
mode (as agreed to by both ends); this would require each end of the
connection to maintain a stack, containing all of the encoding-method
transitions which had previously occurred on the connection, in order
to properly interpret a WON'T or DON'T. Thus, a WON'T or DON'T
received after the connection is operating in binary mode causes the
encoding method to revert to NVT ASCII.
sembrerebbe che la connessione venga iniziata direttamente in binary mode dal server e che il tuo client non supporti la trasmissione binaria...
prova ad utilizzare qualche altra libreria per telnet e vedi se così risolvi...
oppure prova se puoi forzare il tuo telnet client attuale ad utilizzare la connessione in modalità binary.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2009, 18:03   #10
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
se provo a scaricare questi dati con il protocollo Kermit?
qualcuno sa spiegrami di cosa si tratta? in poche parole quando recupero questi dati binari posso scegliere la modalità tra "direct" e "kermit". Fino ad ora ho sempre utilizzato la prima modalità. Ho l'impressione che utilizzando, invece, il protocollo Kermit riuscirei a risolvere.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2009, 18:33   #11
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da mercury841 Guarda i messaggi
se provo a scaricare questi dati con il protocollo Kermit?
qualcuno sa spiegrami di cosa si tratta? in poche parole quando recupero questi dati binari posso scegliere la modalità tra "direct" e "kermit". Fino ad ora ho sempre utilizzato la prima modalità. Ho l'impressione che utilizzando, invece, il protocollo Kermit riuscirei a risolvere.
il kermit dovrebbe supportare sia il trasferimento testuale che quello binario..
prova
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2009, 18:53   #12
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
purtroppo non so come si usa.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 15:41   #13
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Effettivamente con il Kermit funziona, l'ho provato con l'HyperTerminal di win. Purtroppo però questa cosa la devo implementare in Java. come faccio ad utilizzare il kermit anche in Java?
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 16:03   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
In bocca al lupo:
http://www.faqs.org/rfcs/rfc2840.html
Il problema è trovare l'implementazione del protocollo kermit in Java.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 17:03   #15
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Potrei utilizzare un programma per effettuare il trasferimento con kermit standalone, e richiamarlo tramite java. Ne conoscete qualcuno?
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2009, 17:24   #16
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Se ti va bene un prodotto commerciale c'è questa libreria [JKermit].
Qui info generiche da wikipedia ENG.
Prova a dare un occhio a C-Kermit o Kermit 95.
Piuttosto che implementare il protocollo in Java potrebbe essere più abbordabile wrappare qualcosa di esistente e interfacciarsi mediante JNI.

@EDIT:
purtroppo la libreria standard della Sun lascia un po' a desiderare per quanto riguarda il supporto per il serialIO.
Inoltre, da quello che ho letto in giro, la tendenza per sviluppi futuri è orientata verso l'estensione del supporto a basso livello, non ad astrazioni maggiori, come appunto il protocollo Kermit.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 08-01-2009 alle 17:29.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 15:31   #17
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Ho trovato un programmino che mi permette di effettuare il download del file tramite protocollo Kermit. Però adesso non so come utilizzarlo tramite Java. In pratica riesco a lanciarlo, però mi blocco perchè non so come inviare dei comandi a questo proagramma. Ho provato anche a lanciarlo passandogli la socket su cui ho stabilito, precedentemente, la connessione telnet in questo modo: link. Però non mi funziona. Qualcuno ha qualche idea?
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 16:26   #18
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da mercury841 Guarda i messaggi
Ho trovato un programmino che mi permette di effettuare il download del file tramite protocollo Kermit. Però adesso non so come utilizzarlo tramite Java. In pratica riesco a lanciarlo, però mi blocco perchè non so come inviare dei comandi a questo proagramma.
Beh, se lanci il programma da Java come processo esterno al massimo puoi passargli dei parametri da linea di comando; poi una volta partito il processo fa quello che deve.
Non è così?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 16:43   #19
mercury841
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 409
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Beh, se lanci il programma da Java come processo esterno al massimo puoi passargli dei parametri da linea di comando; poi una volta partito il processo fa quello che deve.
Non è così?
Il programma lo utilizzo in questo modo:
  1. lancio l'exe del programma
  2. a questo punto parte un prompt dei comandi tramite il quale stabilisco una connessione telnet inviano il comando "telnet ip"
  3. tramite una interfaccia testuale inserisco alcune informazioni
  4. scarico il file in modalità Kermit

Come faccio a tradurre tutti questi passi in una porcedura java????
Cioè io riesco a lanciare l'exe da Java, ma poi come faccio ad inviare i successvi comandi al programma?
Più che un programma mi servirebbe una subroutine che mi permetta di eseguire il kermit su una conessione Telnet.
__________________
HU Queen Member
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 17:17   #20
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Beh, da Java forse potresti lanciare cmd.exe come processo esterno; ti agganci all'inputstream e all'outputstream del tuo processo, e a quel punto passa in input all'outputstream del processo i comandi da eseguire.

Per saperne un po' di più prova a leggerti questi due vecchi topic (oppure fai una ricerca interna nel Forum con le keyword "Java" e "Process").
> [Java] Runtime
> [JAVA] inputstream e outputstream di un processo

@EIDT:
Come ultima spiaggia potrebbe essere sufficente creare al volo un .bat e lanciare quello, anche se come soluzione (ammesso funzioni) è un po' sporca.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 09-01-2009 alle 17:19.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Samsung aggiorna Bixby con One UI 8.5: p...
L'Etiopia vieta le auto a combustione: a...
Pirateria audiovisiva: la Guardia di Fin...
Ubisoft conferma due nuovi Far Cry in sv...
Chi vincerà il Festival di Sanrem...
G42 e Cerebras portano in India un super...
Offerte aggiornate del weekend Amazon: 7...
4 MacBook Air in offerta e scende a 939€...
Chrome cambia il tuo modo di lavorare: o...
Minimo storico iPhone 17 su Amazon: 909€...
USA, incriminati tre ingegneri della Sil...
Xbox: Phil Spencer lascia dopo 38 anni, ...
Cuffie e sostanze chimiche: uno studio e...
Terremoto sui dazi USA: la Corte Suprema...
Arianespace potrebbe lanciare il primo r...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v