Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Event από σειριακό

Event από σειριακό 6 Χρόνια 11 Μήνες πριν #4910

  • mikp1968
  • Το Άβαταρ του/της mikp1968
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 2
Πριν από χρόνια είχα φτιάξει ένα πρόγραμμα σε VB6 όπου με την MSComm1_OnComm() έπαιρνα interrupt όποτε άλλαζε κάτι στο σειριακό ή όποτε έρχονταν δεδομένα.
Προσπαθώ να φτιάξω το ίδιο σε python 3.6 και linux με αντίστοιχό σειριακό το '/dev/ttyUSB0'. Υπάρχει κάποιος αντίστοιχος τρόπος να λάβω interupt στην python και που θα μπορούσα να βρω πληροφορίες;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Event από σειριακό 6 Χρόνια 11 Μήνες πριν #4912

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Γενικά πάντως, αυτό που θες να κάνεις είναι πολύ low level, μάλιστα είναι στο επίπεδο των drivers (Προγράμματα Οδήγησης Υλικού). Σίγουρα μπορείς να πειράξεις interrupts από assemply πολύ πιθανόν και σε c.

Εγώ έχω ασχοληθεί με λειτουργικά συστήματα σε c μόνο, άρα δεν ξέρω αν γίνεται σε python. Με ένα γρήγορο search βρήκα το εξής:

https://docs.python.org/3.6/library/signal.html

Αν δεν ξέρεις τι είναι τα signals: Στα λειτουργικά συστήματα όταν μία σειριακή συσκευή αλλάζει κατάσταση πχ έχει να δώσει δεδομένα, μπορεί να διαβάσει δεδομένα και κτλ, στέλνει ένα σήμα (signal) στην διεργασία που εκτελείτε στο fore ground όπως το λέμε και διακόπτει την εκτέλεση της. Ο προγραμματιστής μπορεί να χειριστεί (handle) αυτήν την διακοπή έχοντας γράψει μια ρουτίνα (function) η οποία εκτελείτε όταν λαμβάνεται αυτό το συγκεκριμένο σήμα.

Το παραπάνω link είναι documentation για να κάνεις ακριβώς αυτό το πράμα σε python, πιστεύω μπορεί να σε βοηθήσει άλλα θέλει διάβασμα :P
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": mikp1968

Event από σειριακό 6 Χρόνια 10 Μήνες πριν #4913

  • mikp1968
  • Το Άβαταρ του/της mikp1968
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 2
Ευχαριστώ πολύ. Όλα αυτά τα Enenτ εκ πρώτης όψεως αφορούν το σύστημα δεν κατάφερα να βρω πως συνδέονται με τους drivers. Σίγουρα φαντάζει πολύ hartware άλλα γενικός το υποστήριζε εύκολα η VB. Ψάχνω επίσης για Key_Press και Key_Realease.
Ευχαριστώ πολύ και πάλι.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Event από σειριακό 6 Χρόνια 10 Μήνες πριν #4914

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
mikp1968 έγραψε:
Ψάχνω επίσης για Key_Press και Key_Realease.

Αυτό το έψαχνα παλιά και εγώ αν γίνεται σε python όταν δεν ήξερα πολλά από προγραμματισμό. Γενικά σε python δεν μπορείς να κάνεις τέτοια low level πράματα. Αυτό που μπορείς να κάνεις όμως είναι να φτιάξεις wrappers όπως λέμε σε c/c++ για python (Τσέκαρε Python Extensions with C/C++ ). Μπορεί κάποιος άλλος όμως να έχει φτιάξει κάποιο extension με C/C++ για python που να κάνει αυτά που θέλεις.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Event από σειριακό 6 Χρόνια 10 Μήνες πριν #4935

  • Tassos
  • Το Άβαταρ του/της Tassos
  • Αποσυνδεμένος
  • pyth__
  • g-lts.info
  • Δημοσιεύσεις: 78
  • Ληφθείσες Ευχαριστίες 5
Μάλλον ισχύει αυτό που λέει ο @babaliaris1, αλλά αν μπορείς παρακαλώ εξήγησε μας αναλυτικά τι θες να κάνεις, διότι έτσι όπως τα λες δεν μπορώ να συλλάβω πλήρως αυτό ακριβώς που θες.
Πάντως μου φαίνεται, πως κάτι ενδιαφέρον θέλεις να κάνεις...

Ευχαριστώ.
Ομάδα Ελληνικής - Μακροχρόνιας υποστήριξη.

Greek - Long Term Support Team.

Επισκεφθείτε μας εδώ : g-lts.info
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.342 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου