Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti. Basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi : chi fa questo è solo un miserabile e un perdente. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni, come dovrebbe essere in un paese civile e acculturato, potete farlo tranquillamente.

Ricavare le impostazioni di comunicazione seriale di uno strumento con porta RS232

Autore: Giovanni Bernardo | Data pubblicazione: 15 maggio 2008
Categorie: Elettronica Hardware PC SettoreZero Software gratuito

connettore_db9 Spesso mi ritrovo (più per hobby che per lavoro) a dover collegare strumentazione al pc tramite la porta seriale. Anche se ormai la porta seriale è stata soppiantata dall’USB, c’è da aggiungere che la maggior parte della strumentazione industriale utilizza ancora la cara vecchia RS232 dal momento che sembra sia molto più facile scrivere programmi che gestiscono questo tipo di comunicazione. Che ciò sia vero è facilmente intuibile dalla enorme mole di documentazione che si trova in giro riguardo al protocollo seriale, documentazione davvero molto scarsa per quanto riguarda l’USB.

Fatta questa breve premessa vado subito al nocciolo della questione: collegando uno strumento sulla seriale, per poter ricevere i dati è necessario conoscere i parametri di comunicazione dello strumento (Baud Rate, Bit di dati, Tipo di parità, Bit di stop). Fino a quando è presente un manuale di istruzioni con tali dati, il problema è risolto. Quando invece non sappiamo i parametri di comunicazione, la cosa che fanno tutti i programmatori è quella di collegare lo strumento sulla seriale, avviare l’hyperterminal e quindi impostare ogni volta tutti i parametri nella speranza che nella finestra del terminale appaia qualche dato a conferma di aver scelto le giuste impostazioni.

Tenendo conto di tutte le combinazioni di impostazioni possibili(9 valori di baudrate * 5 valori di bit dati * 3 valori di bit di stop * 5 valori di parità), bisognerebbe effettuare la bellezza di 675 tentativi… Un po scocciante a dire il vero, no? Soprattutto nei casi in cui lo strumento non invia il dato in continuo ma solo dopo la ricezione di un carattere.

Anche se la maggior parte degli strumenti non fa utilizzo di valori strani di impostazioni (tipo parità spazio o indicatore, bit di stop a 1.5, 4/5 bit di dati ecc), potrebbero comunque verificarsi casi in cui questo sia necessario.

A tal scopo ho realizzato un semplice programma, scritto in VB6 e utilizzante il controllo mscomm32, che effettua un’operazione molto semplice: ogni 300ms cambia le impostazioni di comunicazione della porta seriale e resta in ascolto per controllare se riceve dati, in via opzionale si puo impostare di inviare un comando per quegli strumenti che lo prevedono (a patto di sapere a priori quale sia). Se si ha ricezione di dati, vengono mostrati nella finestra di log le impostazioni utilizzate e il dato ricevuto. Ovviamente sarà l’utente che dovrà prendere per buone soltanto quelle impostazioni che danno una ricezione di dati significativa.

Il software, quando riceve un dato, elimina tutti i caratteri “vuoti” (ovvero fino al carattere ascii 32) e, se rimane qualcosa, viene visualizzato. Nella barra di stato viene indicata l’impostazione corrente, il numero del tentativo corrente e la percentuale di avanzamento. E’ possibile interrompere il test non appena vediamo nella finestra di log un dato valido. Selezionando il checkbox “beep”, viene emesso un suono dall’altoparlante di sistema ogni qualvolta viene ricevuto un dato.

Le impostazioni vengono riportate nella schermata di log nel seguente formato: b,p,d,s

dove:
b : baudrate (da 110 a 115200)
p : parità, secondo la convenzione:

e : even (pari)
o : odd (dispari)
n : none (nessuna)
m : mark (indicatore)
s : space (spazio)

d : bit di dati (da 4 a 8)
s : bit di stop (1, 1.5 o 2)

Il test completo dura 5 minuti e mezzo circa, la finestra di log viene salvata nel file “lastrun.log”. Qui sotto c’è un esempio del funzionamento del programma a runtime:

serial_tester_screenshot

Lo strumento in questione è stato collegato sulla porta COM1 e riportava sul suo display il valore 669.2. In tal caso, vediamo che il test è stato condotto fino al 26,9% e tra i dati ricevuti c’è già un dato corretto, quello avente come impostazioni di comunicazione (1200,e,7,1 – che tra l’altro corrispondono con quanto indicato dal manuale dello strumento), in tal caso è inutile protrarre il test fino al 100% e basta premere il tasto stop.

Nel setup sono già presenti le librerie di runtime aggiornate per visualbasic 6.

Vai alla pagina del download

Articoli che potrebbero interessarti

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? Supporta e mantieni in vita questo sito, ci basta soltanto un caffè o una birra.
Se desiderate che settorezero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa

Puoi lasciare un commento, o un trackback dal tuo sito.

  1. #1 da Lorenzo il 28 giugno 2008

    Non ho capito, il programma effettua tutte le combinazioni possibili comunque?

  2. #2 da Gianni il 28 giugno 2008

    x Lorenzo: Non capisco cosa intendi con il “comunque”. Il programma effettua tutte le combinazioni possibili, si. Per ora non ho previsto la possibilità di escludere qualche tipo di impostazione per velocizzare la scansione.

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2012 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.