Newsgroup: it.comp.lang.delphi
Titolo: Scrivere protocollo serale

salve a tutti. Sto implementando in piccolo didtema di controllo per
automazione in delphi 5. Questo software deve comunicare con una rete tipo
rs232 (non propirio ma ci somiglia e comunque devo solo preoccuparmi di
trasmettere e ricevere dati su una porta com) con dei microcontrollori PIC.
Ho già pensato ad un bel protocollo che dovrebbe funzionare abbastanza bene
per l'applicazione in questione ma non ho idea di come implementarlo (non ho
mai lavprato con i protocolli in genere).
C'è qualcuno che sa indicarmi una linea generale da seguire per implementare
un protocollo o una qualche libreria che mi aiuti in questo?

un protocollo o una qualche libreria che mi aiuti in questo?
Non mi e' molto chiaro a che livello hai definito il protocollo, puoi
specificare meglio cosa hai gia' messo "su carta"?
Al di la' di questo, molti noi (me compreso) hanno gestito completamente i
segnali via rs232 con turbopower Async Pro, che ora si trova su sourceforge
gratuitamente: 
http://sourceforge.net/projects/tpapro/
Niente di piu' facile che iniziare seguendo il tutorial sul manuale allegato.
Ciao
-- 
Morde. (
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/
Vuoi sfidarmi a scacchi? Ti aspetto alla sera su 
http://www.scacchisti.it/
 !

 Ciao
Questo è il protocollo... ammetto che è spiegato in un modo un po'
confusionario ma non essendo esperto in materie melgio di così nn so fare
per ora.....
chedete in caso di dubbi, perplessità, insulti ecc ecc...
Premessa...
L'Hardware è così costituito:
PC -> RS232 ->BUS
elettronica varia -> PIC16F84 -> BUS
ad ogni apparecchiatura con PIC viene assegato un ID (a 7 bit)
le apparecchiature con pic sono 11. 8 di queste hanno ingressi ed uscite, 2
solo igressi, 1 si limita a sniffare tutti i pacchetti che passano, non
trasmette mai e no ha ID.
Protocollo:
è trasmesso a 1200 baud 1 bit di stop nessuna parità.
Il pc invia agli utilizzatori un pacchetto di 3 byte e si aspetta di
ricevere di ritorno 3 byte.
I byte hanno il seguente significato:
1°) L'MSB è a 1 se proviene dal pc, a 0 se proviene da un "PIC"
     gli altri sette bit indicano l'indirizzo a cui il pacchetto è destinato
(se MSB a 1) altrimenti indicano il dispositivo (PIC) da cui il pacchetto
proviene.
2° e 3°) Se inviato dal PC indica  lo stato delle uscite di ogni "PIC" (è
importante che lo stato delle uscite di tutti i "PIC" sia aggiornato ad ogni
pacchetto ricevuto indipendentemente verso quale pic sia stato inviato i
primi due bit sono relativi al pic 1, i bit 3 e 4 al pic 2 e così via.) se
inviato da un PIC indica lo stato dei suoi ingressi)
4°) è un byte di controllo. se inviato da PC vale (byte 1 + byte 2 + byte 3)
se inviato da un pic vale (not (byte 1+ byte2 + byte3))+1
Il pc spedisce un pacchetto indirizzato ad un "pic" e si aspetta di ricevere
risposta entro 250 millisecondi altrimenti segala che il PIC non è attivo.
Se riceve un pacchetto con il quarto byte on valido lo scarta e attende i
250 millisecondi, se non riceve risposta segnala il pic non attivo. se
riceve risposta valida ma da un pic non richiesto immagazzina comunque il
dato.
il PIC riceve il pacchetto e lo scarta se proviene da un altro pic oppure se
il quarto byte non è valido. (se il pacchetto è trasmesso da un altro pic il
quarto byte non sarà mai valido). se il pacchetto è valido e indirizzato a
lui aggiorna le sue uscite e risponde con il pacchetto contenete i suoi
ingressi. se il pacchetto è valido ma non è indirzzato a lui si limita ad
aggiornare le uscite.
Se un PIC non riceve pacchetti validi per più due secondi attiva un allarme,
e continua a rimanere in ricezione. l'allarme si resetta al primo pacchetto
valido ricevuto.
tra un pacchetto e l'altro viene sempre lasciato un silenzio di 50ms per
permettere alle apparecchiature di risincronizzarsi.

Non centra un biiip con la programmazione ma perché non usi il protocollo
I2C ceh è supportato dai pic ed è fatto proprio per queste cose?
Ci vogliono 2 fili più massa come una seriale ma puoi collegare mi pare fino
a 1024 dispositivi ognuno col prorpio indirizzo
Per i pic trovi librerie già belle e fatte con funzioni sceme per ricevere e
inviare un dato e per il pc o implementi il bus con la parallela o usi
l'SMBUS (moolto compatibile con I2C) oppure metti un pic in mezzo come vuoi
già fare che converte da rs22 a I2C
Perché reinventare ogni volta la ruota?
-- 
_________________________________________
Edmondo Di Tucci snar...@Tlibero.it
guarda i miei lavori su: 
www.powernetsi.it/edmondo