Πρόβλημα σειριακής επικοινωνίας
Antonis Christofides
anthony at itia.ntua.gr
Fri Jul 16 13:54:34 EEST 2010
Καλησπέρα,
το πρόβλημά μου δεν είναι για λινουξάδες, αλλά για όσους ξέρουν τι
σημαίνει RTS/CTS/XON κλπ.
+-------+ +---------+ +---------+ +-------+
| |A-----B| Modem 1 |C-------D| Modem 2 |E-----F| DTE 2 |
| DTE 1 | +---------+ +---------+ +-------+
| |G (logger)
+-------+
(laptop)
Λοιπόν, το DTE 1 είναι ένα απλό laptop που τρέχει ένα απλό λινουξάκι
με ένα απλό minicom. Έχει δύο σειριακές θύρες (για την ακρίβεια δύο
USB-to-serial converters), που εφεξής θα ονομάζω A και G.
Το DTE 2 είναι logger μετεωρολογικού σταθμού, δηλαδή εξειδικευμένο
μηχάνημα στο οποίο συνδέονται οι αισθητήρες και που καταγράφει τις
μετρήσεις.
Τα δύο modem είναι Motorola Codex 3266, πάνω από 15 ετών (νομίζω 18),
αλλά τρομερά σε αξιοπιστία και configurability.
Η γραμμή CD στην κανονική λειτουργία είναι καλώδιο γύρω στο 1.5 km,
αλλά στο πείραμα, που γίνεται στο μετεωρολογικό σταθμό (κάτω απ' τον
ήλιο, το πώς βλέπω την οθόνη του laptop δεν το έχω καταλάβει) είναι
περίπου 1 μέτρο.
Το minicom είναι πάντα ρυθμισμένο σε 9600 8N1.
Σημειωτέον ότι δεν έχω κάνει ΑΚΡΙΒΩΣ το πείραμα που θα περιγράψω εδώ,
αλλά έχω κάνει πολλά παρόμοια πειράματα που μου επιτρέπουν να ξέρω με
αρκετή βεβαιότητα ότι η συμπεριφορά θα είναι ακριβώς αυτή που θα
περιγράψω. Επειδή θα πάω (για τέταρτη φορά) στο μετεωρολογικό σταθμό
προσπαθώντας να βρω άκρη, είπα να προτρέξω, μήπως μου πείτε καμιά
ιδέα και δεν χρειαστεί να πάω για πέμπτη φορά. Αν τώρα όταν πάω γίνει
κανένα μυστήριο και ως δια μαγείας δουλέψουν όλα, τότε ελπίζω
τουλάχιστον να έχουμε κάνει μια ευχάριστη συζήτηση.
Λοιπόν:
(1) Αγνοώ την ύπαρξη των modem και συνδέω κατευθείαν το laptop A με το
logger F με ένα απλό σειριακό καλώδιο AF. Αποτέλεσμα: δουλεύει
περίφημα.
(2) Αγνοώ την ύπαρξη των modem και του logger και συνδέω το laptop A
με τον εαυτό του G με ένα crossover σειριακό καλώδιο. Ανοίγω δυο
minicom, το ένα ακούει στην /dev/ttyUSB0 και το άλλο στην
/dev/ttyUSB1. Αποτέλεσμα: όλα δουλεύουν θαυμάσια - πληκτρολογώ
στο ένα minicom και αυτά που πληκτρολογώ τα βλέπω στο άλλο.
(3) Ελέγχω αν το laptop μπορεί να επικοινωνήσει με τον εαυτό του μέσω
modem: χρησιμοποιώ ένα απλό σειριακό καλώδιο AB και άλλο ένα απλό
σειριακό καλώδιο EG, οπότε τώρα η επικοινωνία είναι AB-CD-EG.
Αποτέλεσμα: όλα δουλεύουν θαυμάσια.
(4) Τα συνδέω τελικά όπως είναι στο παραπάνω σχήμα, όπου το καλώδιο EF
είναι crossover (χωρίς crossover ο logger συνδέεται κατευθείαν με
το laptop, για το modem θέλει crossover). Αποτέλεσμα: δεν
δουλεύει.
Ε λοιπόν δεν μπορώ να βρω τι φταίει. Έχω τσεκάρει και ξανατσεκάρει και
καρατσεκάρει ότι οι ρυθμίσεις του modem 2 είναι ίδιες με τις ρυθμίσεις
που είχε ο προκάτοχος του modem 2 πριν καεί στη διάρκεια μιας
καταιγίδας. Έχω δοκιμάσει να παίξω στο modem 2 με διαφορετικές
ρυθμίσεις RTS/CTS/DTR/flow (αν και το σωστό είναι σχεδόν σίγουρο ότι
είναι RTS=High, CTS=High, DTR=Normal [αλλά θα πρέπει να δουλεύει και
στο High, όπου εννοείται ότι το έχω δοκιμάσει], Flow control off). Έχω
υποψιαστεί ότι έχει πρόβλημα το crossover EF, και έχω ξανακάνει τη
δοκιμή (1) χρησιμοποιώντας για τη σύνδεση AF δύο crossover σε σειρά.
Έχω διαβάσει το manual του logger
(http://www.coastalenvironmental.com/downloads/V2.02.ZENO-3200.User.Manual.Rev.C.NW.pdf,
σελ. 83) και το manual του modem, και συνεχίζω να τα διαβάζω και να το
ψάχνω.
Τελικά ό,τι και να κάνω, οι δοκιμές (1), (2), (3) πάντα πετυχαίνουν,
ενώ η (4), που είναι η ζητούμενη, πάντα αποτυγχάνει.
Ό,τι ιδέα ευπρόσδεκτη.
More information about the Linux-greek-users
mailing list