mummy Δημοσ. 7 Μαΐου 2006 Δημοσ. 7 Μαΐου 2006 Εχώ μια συσκευή που συνδέεται σειριακά με τον υπολογιστή.Θα ήθελα να φτιάξω drivers ώστε να μπορεί να επικοινωνεί ο υπολογιστής με αυτήν.Ειναι η πρώτη φορά που επιχειρώ κάτι τέτοιο και δεν έχω καμία γνώση πάνω σε αυτό οπότε οποιαδήποτε βοήθεια πάνω στο θέμα είναι ευπρόσδεκτή.
djapal Δημοσ. 7 Μαΐου 2006 Δημοσ. 7 Μαΐου 2006 Megale pas sta poly dyskola. Des to codeproject.com. Kati eixe parei to mati mou sxetika me to pws mporeis na ftiakseis enan driver. Oreksh na'xeis....!!!
GrMikeD Δημοσ. 7 Μαΐου 2006 Δημοσ. 7 Μαΐου 2006 den xreiazesai drivers gia na ftiakseis to protokolo, apla prepei na psakseis gia programmatismo mesw seiriakis thuras apo c/c++
Legionnaire Δημοσ. 7 Μαΐου 2006 Δημοσ. 7 Μαΐου 2006 Ακούστε (ή μάλλον διαβάστε): Ανάμεσα στο υλικό και στο λογισμικό μεσολαβούν οι drivers. Τι κάνουν; Χρησιμοποιούν γλώσσα μηχανής που καταλαβαίνει το chipset της συσκευής για να κατασκευάσουν κλήσεις και συναρτήσεις τις οποίες μπορεί κάποιος να χρησιμοποιήσει για να γράψει προγράμματα που επικοινωνούν με την συσκευή αυτή. Το θέμα είναι πως πρέπει να γνωρίζεις το machine code του chip, κάτι που τις περισσότερες φορές δεν είναι διαθέσιμο ελεύθερα αλλά πουλιέται στις ενδιαφερόμενες εταιρίες. Αλλά και το machine code να ξέρεις, η συγχραφή ενός driver είναι αρκετά επίπονη διαδικασία. Άρα αυτό που λέει ο GrMikeD δεν θα σε βοηθήσει πολύ. No Drivers, No Party!
Directx Δημοσ. 7 Μαΐου 2006 Δημοσ. 7 Μαΐου 2006 Η ανάπτυξη Drivers για το περιβάλλον των MS-Windows (θα πρέπει να μας πεις τι Λ.Σ. χρησιμοποιείς) προϋποθέτει γνώση και φυσικά ύπαρξη του MS Windows DDK (Driver Development Kit). Ο κώδικας από όσο γνωρίζω μπορεί να αναπτυχθεί πια είτε σε C++ είτε σε καθαρή C (η τελευταία προτείνεται από την MS όταν πρόκειται για ανάπτυξη Οδηγών Γραφικών λόγο ταχύτητας). Γενικά η ανάπτυξη οδηγών απαιτεί μεγάλη εμπειρία στο System Programming έκαστου Λ.Σ. Όσον αφορά τώρα την επικοινωνία με την σειριακή εξαρτάται από το τι συσκευή είναι , για παράδειγμα ένα MODEM επικοινωνεί δια AT εντολών σε Text Mode οπότε μπορείς να επικοινωνήσεις ικανοποιητικά μαζί του ακόμα και μέσο Terminal software καθώς το πρωτόκολλο επικοινωνίας είναι γνωστό (+φιλικό) , το ίδιο συμβαίνει και με αρκετά κινητά τηλέφωνα , τώρα αν πρόκειται για κάποια εξωτική συσκευή (πχ. Ηλεκτρονικός Πίνακας ανακοινώσεων) φυσικά όπως παρατηρεί ο Legionnaire θα πρέπει να γνωρίζεις το πρωτόκολλο επικοινωνίας που υλοποιεί και που συνήθως είναι κλειστό (εδώ μπορεί να βοηθήσει το Google;)). Το αν θα αναπτύξεις τελικά Driver ή απλή εφαρμογή εξαρτάται και αυτό από το είδος της συσκευής και τι επιθυμείς να κάνεις.
qtgeo Δημοσ. 7 Μαΐου 2006 Δημοσ. 7 Μαΐου 2006 Πολύ σωστά όσα αναφέρει ο DirectX με την διαφωνία μου όμως ώς προς το ότι η C είναι πίο γρήγορη από την C++. Οι δομές της C++ την καθιστούν γενικά πολύ πιο ευέλικτη και γρήγορη από την C σε πολλές των περιπτώσεων. Το εάν θα είναι λίγο πιο γρήγορο ένα πρόγραμα σε C ή σε C++ αυτό έχει να κάνει με την δυνότητα του προγραμματιστή καθώς και απο την βελτιστοποιήση του compiler που έκανε την μεταγλώττιση. Αφήστε δέ που σαν τελευταίο έχουμε και ένα σωρό ευπαθή σημεία, κύρίως σε θέματα μνήμης αλλά και σε χαλαρή λογική τον προτοτύπων και μικρά πραγματάκια που μένουν ασαφή ή ελαφρώς απροσδίοριστα προκαλούν ανεπανόρθωτα προβλήματα... Για έναν που γνωρίζει καλά και τις 2 γλώσσες θα συμφωνήσει μαζί μου πιστεύω, μιας και θα καταλάβει τι εννοώ αφού θα έχει βρεθεί συχνά σε τέτοιες καταστάσεις... Εν πάσει περιπτώση δεν θέλω να πείσω, μπορείται να διαβάσεται 2 πού καλά βιβλία και να νοιώσετε, εφόσον ασχολειθείται, αυτά τα μικρά πραγματάκια που σας λέω και να δείτε μετά πώς αυτά μειώνουν την ταχύτητα... Για να κλείσω και να καλύψω αυτούς που θα πούν "Μα τί μας λές τώρα τότε γιατί σχεδόν όλα τα λειτουργικα συστήματα γράφονται σε C?" Θα τους απαντήσω...πώς γράφονταν.... Διότι εφόσον η C++ ήταν μη προτυποοιημένη κατά ISO αλλά μόνο κατά ANSI δεν ρισκάρεις να κάνεις κάτι μεγαλεπύβολο χωρίς να ξέρεις ότι δέν είναι χιλιοδοκιμασμένο... Σήμερα όμως που η C++ έχει φτάσει σε απίστευτο επίπεδο και χρησιμοποιείται ευρέως...ΝΑΙ την χρησιμοποιούμε και για ανάπτυξη λειτουργικών συστημάτων!
Directx Δημοσ. 7 Μαΐου 2006 Δημοσ. 7 Μαΐου 2006 Μιας και θίξαμε το θέμα τις ανάπτυξης οδηγών σε C ή C++ ορίστε τι προτείνει η MS όσον αφορά την χρήση της C++ για Kernel Mode drivers στο Λ.Σ. της. Είναι αρκετά κατατοπιστικό, συμπληρωματικές πληροφορίες μπορεί να βρει κανείς στο MSDN. http://www.microsoft.com/whdc/driver/kernel/KMcode.mspx#EDC . Υ.Γ. Από εκεί και πέρα ένα καλό παράδειγμα Λ.Σ. πλήρως ανεπτυγμένου σε C++ με ότι καλό ή ότι κακό συνεπάγεται αυτό είναι το Symbian O.S. Καλή συνέχεια!
GrMikeD Δημοσ. 8 Μαΐου 2006 Δημοσ. 8 Μαΐου 2006 to paidi den thelei na ftiaksei eboriko proion pou na diepetai apo standards. Mia suskevi apla eftiakse, sta plaisia mallon mias askisis stin sxoli tou i apo hobby, kai thelei na borei na epikoinwnei me auti me kapoion tropo. Den xreiazetai profanws oute DDK oute tipota... Allwste fainetai prwtaris se auto pou ekane (...prwti fora...). Opote, as ftiaksei to palikari stin kaluteri periptwsi ena DLL gia epikoinwnia pou na borei na to xrisimopoiei apo pantou, kai meta, exei o theos...
dop Δημοσ. 8 Μαΐου 2006 Δημοσ. 8 Μαΐου 2006 Ένα σωστά γραμμένο πρόγραμμα C είναι οριακά πιο γρήγορο από ένα πρόγραμμα C++ (από προσωπική εμπειρία). Παρόλα αυτά, η C++ είναι αρκετά πιο "χαλαρή" σε σχέση με την C και κάποια χαρακτηριστικά της είναι αρκετά επικίνδυνα όταν βρίσκεσαι σε kernel mode (και έχω να αναφέρω πολλά). H C++ είναι πιο κατάλληλη για πιο πάνω στρώματα και όχι για low-level system programming. Η προτυποποίηση δεν εγγυάται τίποτα - απλώς δίνει έναν μπούσουλα. Αν ο compiler είναι fully ISO compliant είναι θέμα του συγγραφέα του compiler - και δεν τον υποχρεώνει κανείς να είναι.
txc Δημοσ. 30 Μαΐου 2006 Δημοσ. 30 Μαΐου 2006 ένα παλικάρι είχε δώσει ένα Link για ένα site Που εξηγούσε τη διαδικασία για να γράψεις drivers στη c αλλά κλασικά δεν μπορώ να το βρώ... θυμάται κάποιος να το γράψει?
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.