Ciao a Tutti!
Sono un po in dificoltà con VB.net...
Sto tentando di inviare una stringa all seriale ma non mi tradute in carattere ASCII il comando Chr(0), qualcuno sa spiegarmi il perchè ?
con VB6 non avevo questo problema, come mai?
Ciao Maouk
Ciao a Tutti!
Sono un po in dificoltà con VB.net...
Sto tentando di inviare una stringa all seriale ma non mi tradute in carattere ASCII il comando Chr(0), qualcuno sa spiegarmi il perchè ?
con VB6 non avevo questo problema, come mai?
Ciao Maouk
Ciao, qualcuno mi sa spiegare perche questa Function genera una stringa vuota? non dovrebbe.
Public Function Stringa_Dati() as string
Dim My_Str as String
My_Str = String.Chr(0)
My_Str = My_Str & String.Chr(255)
Stringa_Dati = My_Str
End Function
Ciao, ma sei proprio sicuro che genera una stringa vuota? Hai provato a vedere se la lunghezza della stringa è zero caratteri? Ma che versione usi? Io ho la 2005 e non ho il metodo Chr relativo alla classe String.
Facendo una prova con il codice sottostante, funziona..
codice:Public Function Stringa_Dati() As String Dim My_Str As String My_Str = Convert.ToChar(0).ToString My_Str = My_Str & Convert.ToChar(255).ToString Return My_Str End Function![]()
Jupy
Ciao Jupy, ho la versione 2003 e nello stesso pc ho vb6 probabilmente è per questo che io ho qualche classe in più. Ma tornando al discorso... ho provato come dici tu ma con CONVERT.TOCHAR ma non funziona. Sarà un problema del 2003? Boooo?
Grazie.
Ciao, ma hai controllato la lunghezza della stringa?
Dopo che hai inizializzato la stringa, fai un messagebox.
messagebox.show my_str.Length.ToString
Se ti restituisce 2, significa che è tutto ok, e puoi fare anche la verifica inversa..
Deve restituire 0 e 255codice:my_str = Convert.ToChar(0) my_str &= Convert.ToChar(255) MessageBox.Show(Convert.ToByte(my_str.Chars(0)).ToString) MessageBox.Show(Convert.ToByte(my_str.Chars(1)).ToString)
Il fatto che, se vai a visualizzare la stringa, non vedi niente, è dovuto che quei "caratteri" non sono "visibili"
![]()
Jupy
E' vero hai ragione mi restituisce due e 0 e 255 ma... ho provato a fare una DLL con lo stesso codice e un'applicazione che utilizza questa per inviarla alla seriale RS232. Il risultato è che se la Function che stà nella Dll restituisce i caratteri 0 e 255, all'applicazione non arriva niente e nella seriale non passa nulla (controllato con l'oscilloscopio), mentre se faccio passare una stringa a caso "ciao" per es. dalla function, l'applicazione la vede e la invia alla seriale correttamente. Questo problema con visual basic 6 non l' avevo.
Ciao Grazie
....anche se non sono caratteri stampabili, dalla seriale dovrebbero essere visti, come lo erano daVB6, no?
Ciao
Una domanda: perché usare proprio una stringa? cioè, perché sfruttare proprio quel tipo di dato, tra i tanti disponibili, che attribuisce un preciso significato al carattere con codice 0 (zero), che generalmente identifica la fine della stringa?
Hai provato ad usare, ad esempio, un array di byte per memorizzare i dati da inviare in output?
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...