Gestione comunicazione seriale vb.net

mercoledì 02 settembre 2009 - 01.09

Elektromassa Profilo | Newbie

Salve a tutti,
sono qui a chidervi aiuto per un problema che non riesco a risolvere.
Ho creato una sorta di bus RS485 che collega un pc (master) a varie schede di I/O con microcontrollore pic (slave). Per fare tutto ciò ho dovuto farmi un protocollo di comunicazione che utilizza vari pacchetti con l'indirizzo della scheda destinataria, questo pacchetto è un insieme di byte che contengono l'indirizzo e il dato da trasferire (inclusi controlli di errore e caratteri di termine). A livello di microcontrollore sono riuscito a fare il programma ed a gestire tutto correttamente, mentre in vb.net riscontro un problema: in pratica quando ricevo un dato con codice ascii "0" (null) il pacchetto viene troncato e tutto ciò che è successivo nel pacchetto viene ignorato. Per ora sono riuscito a separare i vari byte ricevuti del pacchetto con il metodo serialport.Read (descritto qui http://msdn.microsoft.com/it-it/library/ms143549%28VS.80%29.aspx ) però nonostante il tutto venga messo in un array i byte dell'array successivi al valore null vengono troncati e vengono presi anche essi come valore null. Esiste un modo per non far troncare la stringa e far risultare a 0 solo il byte effettivo? il valore null mi è necessario per rappresentare tutti gli ingressi o uscite digitali a 0 inviando il codice ascii 0.
Altrimenti ci potrebbe essere un modo alternativo per fare queste operazioni?

Grazie in anticipo

luxsor Profilo | Guru

Ciao Marco,
hai un bel problemino

Se non ricordo male, lo 0 in Read, significare disabilitare il Buffer di ricezione, quindi non leggere più in dati che arrivano in ingresso.

Prova a NON utilizzare il BufferSize ma il Trigger (Start e End)
Dai un occhiata qua:
http://franson.com/serialtools/reference_manual.asp?comp=serial&class=Port&item=Read&platform=net

Fammi sapere


------------------------
Luxsor

Elektromassa Profilo | Newbie

Ciao
Ti rigrazio per la risposta
Ho guardato il link ma se ho capito bene riguarda una libreria esterna per vb.net? Ho visto che è trial da 14 giorni. Comunque potrebbe essere implementato con i metodi di vb.net o esterni possibilmente gratuiti?
Al massimo potrei inventarmi un modo alternativo per rappresentare il codice ascii 0 visto che con tutti gli altri valori il tutto funziona correttamente.

cable Profilo | Junior Member

Ciao,
se non ho capito male il protocollo di comunicazione te lo sei definito tu... per definire ingressi e uscite a 0 perchè non trasmetti un qualsiasi altro carattere ASCII che non ti crea problemi?

Mauro

Elektromassa Profilo | Newbie

Grazie a tutti, ho proprio risolto il problema evitando di inviare con quella modalità i byte 0 e 255. Ora funziona bene
Saluti
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5