Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2008, 08: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, 10: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, 12: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, 13: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 13:06.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2008, 07: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 08:08.
mercury841 è offline   Rispondi citando il messaggio o parte di esso
Old 31-12-2008, 14: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, 07: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, 08: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 12:44.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2009, 13:31   #9
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
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, 17: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, 17:33   #11
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
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, 17: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, 14: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, 15: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, 16: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, 16: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 16:29.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2009, 14: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, 15: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, 15: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, 16: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 16:19.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
OpenAI avvisa oltre 100 organizzazioni p...
Dall'AI alla SI: il rebranding di Trump ...
0patch offrirà supporto esteso pe...
Sudo sembra un iPod, ma nasconde una car...
Meta, OpenAI e Google rifanno OpenClaw: ...
Pixel 10a: Google alza il prezzo di 100 ...
5 sconti TOP e una super city e-bike per...
Speciale Sonoff per utenti Prime: 4 valv...
Meno ghiaccio, meno acqua: il dato che c...
SBS annuncia il lancio degli accessori P...
Speciale Smart TV 65 e 75 pollici in off...
GL.iNet Beryl 7 a 107,19€: router Wi-Fi ...
Il plasma di un reattore a fusione ripre...
Ha comprato un telefono rotto a 30 dolla...
Il Dipartimento della Guerra USA pensa a...
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: 11:39.


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