View Full Version : [C++] redirezione input rs232 su tcp/ip
ciao,
ho scritto un semplice programma che si mette in ascolto sulla porta seriale e successivamente invia quanto ricevuto su una stampante ma ho il seguente problema: se lo testo con 2 PC tutto funziona regolarmente, se lo eseguo con un PC connesso ad una apparecchiatura un po' particolare la quale deve inviare dati al PC, l'apparecchiatura va in time out come se attendesse un comando dal PC del tipo "sono pronto a ricevere dati".
Mi chiedevo se nel protocollo per la porta seriale esiste un tale comando, magari sotto forma di carattere esadecimale.
Grazie
l'apparecchiatura e' quella che ti deve inviare i dati opprue riceverli? non si capisce dalla descrizione che hai fatto.
l'apparecchiatura è quella che deve inviare i dati al PC in ascolto
sono chiamate standard alle api di windows, nessuna ipotesi.
Apro la porta COM, la setto ed attendo i dati. Ho provato ad alterare i parmetri di trasmissione per curiosità ed il peggio che è capitato è che ti arrivano dati sporchi o file incompleti, ma inizio e fine trasmissione vengono sempre intercettati.
Sembra che prima di inviare i dati, questo apparecchio attenda uno start da parte di chi deve riceverli e non ricevendolo, dopo qualche secondo va in time out.
dovresti vedere nel datasheet di questo sistema, purtroppo cosi' non ti si puo' aiutare. in generale il protocollo non prevede nessun particolare simbolo per richiedere una trasmissione.
pensa che non si possono nemmeno personalizzare i parametri di trasmissione di tale apparecchio, mah, forse è una implementazione fuori standard e si aspetta qualcosa.
Grazie comunque
sottovento
30-01-2018, 14:09
1 - Usi lo stesso cavo che utilizzi per le prove PC <-> PC?
In tal caso l'apparecchiatura deve essere un DTE, cosi' come lo sono i PC.
In pratica, il cavo deve essere incrociato, per intenderci il pin 2 deve essere collegato al 3 ed il 3 al 2 (ovviamente i pin 7 sono collegati fra di loro).
2 - Hai detto che i parametri sono fissi. Li hai controllati?
- baud rate?
- lunghezza dati? 7 o 8 bit?
- parita'? Pari? Dispari? Nessuna?
3 - Segnali di handshaking: li utilizza? Se sono necessari, non trasmettera'
fintanto che non li fornisci. La seriale puo' funzionare anche con il solo filo
di trasmissione ma e' necessario che il setting sia corretto, altrimenti
non trasmettera' nulla. In tal caso, devi settare il dispositivo per spedire
senza aspettare i segnali di handshaking oppure collegare RTS e CTS
insieme.
4 - Una volta che questi parametri sono settati, e' compito dell'applicazione
stabilire un protocollo di comunicazione. Magari il tuo dispositivo sta
davvero aspettando un comando di start. Per saperlo potresti duplicare
il segnale e spedirlo ad un datascope (un piccolo programma sul tuo
pc che fa il dump di quanto riceve)
spero sia utile
1 - Usi lo stesso cavo che utilizzi per le prove PC <-> PC?
In tal caso l'apparecchiatura deve essere un DTE, cosi' come lo sono i PC.
In pratica, il cavo deve essere incrociato, per intenderci il pin 2 deve essere collegato al 3 ed il 3 al 2 (ovviamente i pin 7 sono collegati fra di loro).
2 - Hai detto che i parametri sono fissi. Li hai controllati?
- baud rate?
- lunghezza dati? 7 o 8 bit?
- parita'? Pari? Dispari? Nessuna?
3 - Segnali di handshaking: li utilizza? Se sono necessari, non trasmettera'
fintanto che non li fornisci. La seriale puo' funzionare anche con il solo filo
di trasmissione ma e' necessario che il setting sia corretto, altrimenti
non trasmettera' nulla. In tal caso, devi settare il dispositivo per spedire
senza aspettare i segnali di handshaking oppure collegare RTS e CTS
insieme.
4 - Una volta che questi parametri sono settati, e' compito dell'applicazione
stabilire un protocollo di comunicazione. Magari il tuo dispositivo sta
davvero aspettando un comando di start. Per saperlo potresti duplicare
il segnale e spedirlo ad un datascope (un piccolo programma sul tuo
pc che fa il dump di quanto riceve)
spero sia utile
grazie per le informazioni. Nel frattempo ho risolto; era un problema dell'apparato che aveva i connettori ossidati.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.