331 messaggi dal 06 maggio 2003
Questa è la risposta che mi hanno dato:

se hai un contatto pulito (privo di potenziale) ed una seriale puoi collegare fino a 4 ingressi e monitorarne lo stato attraverso lo stato delle linee di controllo


Quindi ipotizzo di non aver bisogno di alcun circuito.

Vi farò sapere.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ah interessante, per "linea di controllo" immagino intenda i PIN designati per il controllo della trasmissione, come appunto DSR e poi RTS, CTS e DTR (?).

Un "circuito" lo devi avere per forza, è semplicemente il percorso che fa la corrente da un punto ad alto potenziale ad un punto a basso potenziale. Nel tuo caso è costituito dal cavo che collega i due pin, interrotto da un relè che a volte apre e a volte chiude il circuito, come l'interruttore della luce di casa.

Siccome non ho esperienza di RS232, per sicurezza informati se lungo il circuito, formato finora dal cavo e dal relè, ci va anche una resistenza (e di quanti Ohm) o se basta così e puoi tranquillamente mettere in corto i due PIN perché tanto la porta RS232 è in grado lei stessa di sopportare la corrente che arriva.

ciao,
Moreno

Enjoy learning and just keep making
331 messaggi dal 06 maggio 2003
Sì sì, scusa, con "circuito" intendevo un qualcosa di un pochino più complesso di un filo con un interruttore.
Dalle reminiscenze del passato se non erro non necessito di alcuna resistenza, la porta seriale gestisce e sopporta già internamente i cortocircuiti tra i pin.

Con PIN di controllo intendo proprio quei PIN: DCD, DSR, CTS e RI e li vado a cortocicuitare con il DTR.

Unica cosa: non mi pare di avere alcun controllo sul pin RI mentre per tutti gli altri esiste una specifica proprietà della classe SerialPorts.
331 messaggi dal 06 maggio 2003
Aggiornamento:
FUNZIONA!!

Lato codice è abbastanza semplice il tutto:

- Si individua la porta COM
- La si istanzia, le si aggancia l'event handler e la si apre
- Nell'event handler si fa eseguire, tramite un delegate se stiamo usando un'operazione cross thread, l'azione desiderata.

Fine.

Nel mio caso:

Individuo e apro la porta seriale
SerialPort SerialPort;
string portName = SerialPort.GetPortNames()[0] // ho un'unica porta seriale
SerialPort = new SerialPort(portName);
SerialPort.BaudRate = 9600;
SerialPort.DtrEnable = true; // Va abilitato il pin DTR altrimenti non funziona nulla
SerialPort.PinChanged += new SerialPinChangedEventHandler(SerialPort_PinChanged);
SerialPort.Open();


Imposto l'event handler
public void SerialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
// Il mio accrocchio va a connettersi al pin 4 (massa/DTR) e alla pin 6 (DSR) della seriale 
    if (e.EventType == SerialPinChange.DsrChanged)
    {
        if (SerialPort.DsrHolding && prevPassage.AddSeconds(3) < DateTime.Now)
        { 
            SetTimeSafe();
            prevPassage = adesso;
        }
        else if (!SerialPort.DsrHolding)
        { }
    }
}




Imposto il delegato
delegate void SetTimeCallback();

private void SetTimeSafe()
{
    // InvokeRequired required compares the thread ID of the
    // calling thread to the thread ID of the creating thread.
    // If these threads are different, it returns true.
    if (this.tbx_Passaggi.InvokeRequired)
    {
        SetTimeCallback d = new SetTimeCallback(SetTimeSafe);
        this.Invoke(d, new object[]{});
    }
    else
    {
        SetTime();
    }
}


E finalmente gli faccio fare le operazioni desiderate:
private void SetTime()
{
    // Fai qualcosa
}



Una volta capito come funziona è decisamente semplice.
11.886 messaggi dal 09 febbraio 2002
Contributi

Aggiornamento:
FUNZIONA!!

Grandioso, grazie per l'aggiornamento :]
La saldatura come l'hai fatta, hai usato una cosa del genere?
http://s59.photobucket.com/user/erakem/media/Ugeo/2010-10-28153815.jpg.html

Enjoy learning and just keep making
331 messaggi dal 06 maggio 2003
No no, nessuna saldatura per il momento, ho solo "incastrato" i fili alla seriale e al pressostato. Il prossimo passo del progetto è appunto fare uno strumento che sia fruibile e affidabile.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.