dimos8enis: Ειμαι σχεδον πεπεισμενος οτι δε φταιει ο κωδικας αλλα το ιδιο το περιβαλλον .ΝΕΤ αλλα ειναι πολυ δυσκολο να μεταφρασω ενα τοσο μεγαλο προγραμμα. Υπαρχει μηπως αλλη λυση?
Ευχαριστω εκ των προτερων
Μάλλον απίθανο έως εντελώς απίθανο. Αν θέλεις να βγάλεις άκρη θα πρέπει να αποκλείσεις αυτό το ενδεχόμενο και να δεις τί συμβαίνει αλλού.
Κατά πάσα πιθανότητα (95%) το πρόβλημα θα βρίσκεται στον κώδικα σου (που δεν μας παραθέτεις). Μπορεί να χειρίζεσαι τη σειριακή με λάθος τρόπο, μπορεί ο driver να έχει συγκεκριμένους περιορισμούς, μπορεί απλά να χάνονται πακέτα! Κανείς δεν εγγυάται ότι η σειριακή δεν θα εμφανίσει προβλήματα, γι αυτό και υπάρχει το parity bit. Πόσο μάλλον όταν δουλεύεις με virtual serial. Μπορεί να γεμίζει ο buffer της σειριακής. Μπορεί το πρόγραμμα σου να είναι επικοινωνεί σύγχρονα με το port και απλά να κολλάει αυτό όταν υπάρχει μεγάλος φόρτος. μπορεί, μπορεί, μπορεί ....
Το άλλο 5% είναι o ίδιος ο driver. Οι εταιρείες που φτιάχνουν multi-serial ή serial-over-ethernet συσκευές αρκετές φορές δεν δίνουν σημασία στους drivers. Κατά κανόνα αγοράζουν κάποιο chipset και αλλάζουν τα logo και copyright strings στο driver toolkit του driver toolkit που δίνει ο προμηθευτής του chipset. Μου έχει τύχει στο παρελθόν ακριβώς τέτοια ιστορία, με Microsoft certified driver παρακαλώ. Ο driver δεν ενεργοποιούσε το handshaking και έπρεπε ο δικός μας κώδικας να ελέγχει το RTS για να σταματήσει να στέλνει δεδομένα, αντί να σταματάει αυτόματα να στέλνει όταν έπαιρνε χαμηλό RTS από την άλλη πλευρά. Αναγκαστήκαμε να τους στείλουμε το ίδιο το sample που περιλαμβανόταν στο MSDN για να τους πείσουμε ότι αυτοί έχουν πρόβλημα, και ότι δεν είμασταν εμείς ελέφαντες.
Αν θέλεις να πεισθείς ότι δεν φταίει το .NET, ξαναγράψε τον κώδικα σου σε native μορφή, π.χ. C++ ή VB6 και δοκίμασε το. Προσωπικά νομίζω ότι θα είναι χάσιμο χρόνου. Από την άλλη, αν θα πρέπει να επικοινωνήσεις με την εταιρεία που έφτιαξε τη σειριακή, καλό είναι να τους στείλεις κώδικα ο οποίος να εμφανίζει το πρόβλημα, αλλιώς δεν πρόκειτα να σου δώσουν σημασία.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos