Newsgroup: it.hobby.elettronica.digitale
Titolo: PC e 485

Ciao a tutti
Ma nel connettore della seriale del PC esiste un segnale
che mi indica che c'è un dato in trasmissione?
Sarebbe comodo per passare da 232 a 485...
Graziea tutti
ALX


Purtroppo no.
Ciao.
Paolo

> Sarebbe comodo per passare da 232 a 485...
Normalmente il passaggio tx/rx lo si comanda da sw utilizzando il pin RTS, 
nel mio sw lo implemento io, nella maggior parte dei sw commerciali che sono 
previsti anche per la 485, c'è un parametro da settare.
Esistono però in commercio dei convertitori 'intelligenti', che sentono 
quando il pc sta iniziando a spedire i dati mettendo così il converter in 
modalità trasmissione e ritardando di qualche millisecondo i dati in uscita.
Dopo una pausa significativa senza ricevere dati dal pc (alcuni ms, in 
alcuni converter il tempo è impostabile, in altri è in autodetect in base al 
baudrate) il convertitore passa in modalità ricezione.
Utilizzati + di una volta con successo (nota che è possibile utilizzarli 
ovviamente solo in quelle applicazioni dove non è richiesto l'handshake hw).

Il giorno Fri, 27 May 2005 08:29:07 +0200, "Roberto"
<roberto...@RIMUOVIMIrobertopedrazzoli.it> ha scritto:

Io uso un converter RS-232-RS485 dalla Intracom
http://www.icintracom.biz/default.asp?pid=1511&catid=39
 mod. ICC IO-A52 
che inverte automaticamente la linea quando mancano dati in input, e
che ha bisogno solo di GND, RXD e TXD e ha anche i leds per la
visulaizzazione del funzionamento.
Ni ha risolto un sacco di problemi che avevo su programmi funzionanti
in W95-98 che invece in W2000- Xp davano dei problemi.
ciao
  Stefano

Grazie a tutti...
Speravo...
Quindi o lo creo con il mio progammino in VB sul piedino RTS
o mi costruisco un temporizzatore che si aggancia allo startbit
per la velocità che mi serve
In realtà ce l'ho già ... è che volevo cercare di cavarmela con un tansistor
o un paio di diodi nel connetore ... e rendere il tutto funzionante per
qulsiasi velocità
e per qualsiasi software...
Ciao
ALX

si
Per mia esperienza in XP hanno cambiato qualcosa....
Appena uscito Xp, su un pc cercavo di connettermi a una scheda con
porta  RS485 usando un convertitore RS232-RS485 e avevo dei problemi
perchè la linea RTS\ terminava alta un poco prima che finisse l'ultimo
byte non finendo di trasmettere la linea. (con una 485 è un problema
perchè la linea gira)
Il programma utilizza una DLL scritta in C (con le funzioni API
CreateFile, SetCommState, ecc.)  per poter usare il software di
comunicazione con altri linguaggi, e che aveva funzionato bene sui
vari W95 W98.
(in questa app. non uso MSCOMM, quindi non so se questo problema si
verifica anche con lui.)
Posso dirti come è stato risolto dopo diverse peripezie, e una
versione di DLL solo per Xp.
il campo  fRtsControl in fBitFields di DCB (sono 4 bytes) deve essere
messo a  RTS_CONTROL_TOGGLE (= 3)
dopodichè RTS\ fa il suo dovere.
Forse è complicato, ma è solo per dire che in Xp hanno effettivamente
cambiato qualcosa
Se vuoi documentarti cerca Funzione SetCommState:
Declare Function SetCommState Lib "kernel32" Alias "SetCommState"
(ByVal hCommDev As Long, lpDCB As DCB) As Long
e Struttura DCB
Type DCB
  DCBlength As Long
  BaudRate As Long
  fBitFields As Long 
  wReserved As Integer
  XonLim As Integer
  XoffLim As Integer
  ByteSize As Byte
  Parity As Byte
  StopBits As Byte
  XonChar As Byte
  XoffChar As Byte
  ErrorChar As Byte
  EofChar As Byte
  EvtChar As Byte
  wReserved1 As Integer 
End Type
ciao
  Stefano

 bytes o che RTS\ non si alzi in tempo
Non è semplice ma è possibile, altrimenti tutti i sw che utilizzano la 485 
come farebbero ?
Il problema nel gestire RTS sulla seriale asincrona è appunto di non fidarsi 
di scaricare i dati nel buffer e poi commutare RTS prima che essi siano 
stati tutti trasmessi.
Per ovviare a questo problema che si genera dal modo asincrono in cui 
windows gestisce i suoi messaggi e processi interni, ci sono molte soluzioni 
e si trova altrettanta documentazione.
Ho sviluppato applicazioni in Delphi e VC++ che funzionano correttamente e 
senza problemi, alcuni miei collaboratori utilizzano VB e hanno anche loro 
sviluppato applicazioni che utilizzano rs485 gestendo il pin RTS.

sviluppato applicazioni che utilizzano rs485 gestendo il pin RTS.
Dipende tutto dai limiti di tempi e di commutazione che hai, comunque
alla fine ci si riesce magari usando qualche trucco, ma non è affatto
semplice.
Ne abbiamo discusso anche sul ng di VB
http://shorterlink.com/?8391WL
ciao
  Stefano


Ci sono + modi per rilevare il buffer svuotato anche utilizzando le api.
Non utilizzando vb, ma solo delphi, bc++ e vsc++, non so se è possibile
generare servizi o gestire criticalsections.
Un buon esempio in delphi lo si trova nei sorgenti di asyncpro
(
http://sourceforge.net/projects/tpapro/
)

(
http://sourceforge.net/projects/tpapro/
)
Ho fatto qualcosa in turboPascal ai tempi del dos ma non conosco
Delphi e non ho nemmeno voglia di impararlo, tutti i miei neuroni
residui se li sta mangiando  .NET.
Il C lo conosco ma preferisco usare VB piuttosto che C++ per
applicazioni su pc perchè ha tempi di sviluppo molto inferiori x
grafica, collegamento ai db, ecc.
Comunque i servizi di Windows si possono usare anche in VB come spiega
qui:
http://www.visual-basic.it/articoli/agNTServ2.htm
ti serve anche NTSVC
http://digilander.iol.it/VBItalia/files/ntsvc.exe
e si trovano anche esempi in rete.
ma predisporre un servizio non è affatto semplice, richiede una
macchina almeno NT4 o W2000-Xp e inoltre il debug a me ha  dato
parecchi problemi.
Ragion per cui in generale se trovo una strada hardware che mi
semplifica la vita la prediligo ai servizi e ai casini con le API, ma
pensandoci non mi sembra nemmeno che questo fosse l'oggetto della
discussione.
ciao
  Stefano


Nel mio sistema interconnesso che sto provando a relizzare molto + semplice
del vostro, con i PIC ho utilizzato dei RTX normalmente per uso del bus CAN.
Tutto viene gestito dall'hardware, in pratica se non c'è trasmissione dati 
il bus
viene liberato automaticamente e si mette in RX.
Per ora nelle prove non ho avuto problemi, il progetto è pubblico se 
qualcuno
interessa collaborare.
http://www.lustproject.net/
http://www.iw1qif.net/appunti/luigi/picnet.html
BYE