Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAgapeto Carlini Modificato 9 anni fa
1
Comunicazione seriale Gestione ad eventi a cura di Marco Zucchini
2
L’Handshake
3
Handshaking Rthereshold CommEvent DTREnable RTSEnable Le proprietà principali dell’oggetto Comm
4
Proprietà Handshaking Imposta (e restituisce) il tipo di protocollo di sincronia hardware. Un protocollo di sincronia garantisce che i dati non vadano perduti per un overrun del buffer, che si verifica quando i dati arrivano alla porta troppo rapidamente perché la periferica di comunicazione riesca a spostarli nel buffer di ricezione Esempio MSComm1.Handshaking=2 Imposta il protocollo alla modalità RTS/CTS
5
Proprietà Handshaking CostanteValoreDescrizione comNone0Default. Nessun handshaking. comXOnXOff1Handshaking di tipo XOnXOff. comRTS2Handshaking di tipo RTS/CTS comRTSXOnXOff4Handshaking di tipo RTS/CTS + XOnXOff.
6
Gestione dell’Input
7
Proprietà RThereshold Imposta (e restituisce) il numero di caratteri che devono essere ricevuti nel buffer di input prima che l’oggetto MSComm : –generi un evento di tipo OnComm –la proprietà CommEvent venga impostata al valore comEvReceive
8
Esempi MSComm1.Rthereshold=1 In questo caso l’evento OnComm viene generato ad ogni carattere ricevuto. MSComm1.Rthereshold=0 In questo caso viene impedita la generazione dell’evento OnComm.
9
Esempio Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.RThreshold = 1 MSComm1.PortOpen = True End Sub Private Sub MSComm1_OnComm() If (MSComm1.CommEvent = 2) Then ‘ inserire codice per gestione evento End If End Sub I_BUF M RS232RS232 O_BUF M Processo Consumatore
10
Proprietà CommEvent Contiene il codice associato al tipo di –evento di comunicazione –errore di comunicazione generato. Nota: proprietà non disponibile in fase di progettazione
11
Eventi di comunicazione CostanteValore CommEvent Descrizione comEvSend1Nel buffer di trasmissione ci sono meno caratteri di quanti impostati dalla proprietà Sthreshold comEvReceive2Ricevuti tanti caratteri quanti impostati dalla proprietà Rthreshold. Questo evento è generato continuamente fintanto che non viene completamente svuotato il buffer di input. comEvCTS3Segnala un avvenuto cambiamento di stato della linea CTS comEvDSR4Segnala un avvenuto cambiamento di stato della linea DSR
12
Eventi “condizione di errore di comunicazione” CostanteValore CommEvent Descrizione comEventOverrun1006Errore Overrun. Perdita del penultimo carattere. Non è stato possibile leggere un carattere prima dell’arrivo del carattere successivo. comEventRxover1008Overflow nel buffer di ricezione. Segnala che il buffer di ricezione è pieno. comEventRxParity1009Errore di Parità individuato dal sispositivo hardware. comEventTxFull1010Segnala che il buffer di trasmissione è pieno.
13
Private Sub MSComm2_OnComm() Select Case MSComm2.CommEvent Case 1 ‘ Signal Send Event MSComm2.Output=“A” Case 2 ‘ Signal Receive Event MSComm2.InputLen = 0 txtDisplay2.Text = txtDisplay2.Text + MSComm2.Input Case 3 ‘ Signal Clear To Send txtDisplay2.Text = txtDisplay2.Text + "Signal detected on line CTS Clear to Send" + vbCrLf Case 4 ‘ Signal Data Set Ready txtDisplay2.Text = txtDisplay2.Text + "Signal detected on line DSR" + vbCrLf Case Else ‘ All other Signal txtDisplay2.Text = txtDisplay2.Text + "General Event Signal Detected on COM2 !!!" + vbCrLf End Select End Sub
14
Gestione dei segnali DSR/RTS
15
Proprietà DTREnable Abilita o disabilita la linea DTR Esempio MSComm1.DTREnable=True oppure MSComm1.DTREnable=False Osservazione: sulla porta ricevente genera un segnale DSR
16
Generazione segnale DTR Si implementa nel seguente modo. If (MSComm1.DTREnable=True) Then MSComm1.DTREnable=False Else MSComm1.DTREnable=True End If
17
Private Sub MSComm2_OnComm() Select Case MSComm2.CommEvent Case 1 ‘ Signal Send Event MSComm2.Output=“A” Case 2 ‘ Signal Receive Event MSComm2.InputLen = 0 txtDisplay2.Text = txtDisplay2.Text + MSComm2.Input Case 3 ‘ Signal Clear To Send txtDisplay2.Text = txtDisplay2.Text + "Signal detected on line CTS Clear to Send" + vbCrLf Case 4 ‘ Signal Data Set Ready txtDisplay2.Text = txtDisplay2.Text + "Signal detected on line DSR" + vbCrLf Case Else ‘ All other Signal txtDisplay2.Text = txtDisplay2.Text + "General Event Signal Detected on COM2 !!!" + vbCrLf End Select End Sub
18
Proprietà RTSEnable Abilita o disabilita la linea RTS Esempio MSComm1.RTSEnable=True oppure MSComm1.RTSEnable=False Osservazione: sulla porta ricevente genera un segnale CTS
19
Generazione segnale RTS Si implementa nel seguente modo. If (MSComm1.RTSEnable=True) Then MSComm1.RTSEnable=False Else MSComm1.RTSEnable=True End If
20
Private Sub MSComm2_OnComm() Select Case MSComm2.CommEvent Case 1 ‘ Signal Send Event MSComm2.Output=“A” Case 2 ‘ Signal Receive Event MSComm2.InputLen = 0 txtDisplay2.Text = txtDisplay2.Text + MSComm2.Input Case 3 ‘ Signal Clear To Send txtDisplay2.Text = txtDisplay2.Text + "Signal detected on line CTS Clear to Send" + vbCrLf Case 4 ‘ Signal Data Set Ready txtDisplay2.Text = txtDisplay2.Text + "Signal detected on line DSR" + vbCrLf Case Else ‘ All other Signal txtDisplay2.Text = txtDisplay2.Text + "General Event Signal Detected on COM2 !!!" + vbCrLf End Select End Sub
21
Esercizio di verifica Scrivere due applicazioni VB che dopo aver impostato gli stessi valori dei parametri di comunicazione seriale (“9600,N,8,1”), consentano: I applicazione (GeneraSegnali) Gestione porta COM1 L’impostazione protocollo L’apertura/chiusura porta L’invio segnali DSR e RTS La sua terminazione (END) II applicazione (Monitor) Gestione porta COM2 L’impostazione protocollo L’apertura/chiusura porta La visualizzazione dei segnali catturati La sua terminazione (END) Dopo aver avviato l’applicazione Monitor avviare GeneraSegnali ed effettuare le operazioni consentite da quest’ultima nella casistica più ampia possibile. Riportare nella tabella a seguito i segnali catturati e visualizzati di volta in volta da Monitor.
22
PrecondizioneAzioneSegnale Catturato GS Running HS NO HS RTS Star t GS Satop GS Port Open Port Close CTSDSR
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.