Ένα πρόγραμμα για τον έλεγχο εξωτερικών συσκευών υπολογιστή. Έλεγχος φόρτωσης μέσω διασύνδεσης USB

Εργαλείο 17.05.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Ένας υπολογιστής, ορισμένα εξαρτήματα, εργαλεία, ο καθένας μπορεί να οργανώσει απλό έλεγχο οικιακών συσκευών από αυτόν τον υπολογιστή. Πολλές συσκευές που χρησιμοποιούνται στην καθημερινή ζωή έχουν πολλές λειτουργίες, για παράδειγμα οι περισσότερες σύγχρονες τηλεοράσειςμπορεί να δείξει κάποιο ποσό διαφορετικά κανάλια, στο ανεμιστήρα m.b. κάποιο ποσό διαφορετικούς τρόπους λειτουργίαςεργασία κλπ. Για να κάνετε τέτοια πολύπλοκα χειριστήρια όπως, για παράδειγμα, εναλλαγή καναλιών ή τρόποι λειτουργίας, εκτός από τα παραπάνω, θα χρειαστείτε επιπλέον γνώσεις, εξαρτήματα και εργαλεία, αλλά όποιος έχει τα παραπάνω μπορεί να κάνει ένα απλό διακόπτη ενεργοποίησης και απενεργοποίησης. Το Arduino επικοινωνεί με τον υπολογιστή μέσω Θύρα USB, η μεταφορά πληροφοριών από έναν υπολογιστή στο Arduino μπορεί να γίνει μέσω του περιβάλλοντος ανάπτυξης Arduino (ονομάζεται Arduino IDE) το οποίο μπορείτε να κατεβάσετε από τη σελίδα στον επίσημο ιστότοπο του Arduino. Υπάρχουν πολλές διαφορετικές μονάδες για διασύνδεση με το Arduino έξω κόσμο, Για παράδειγμα ειδική ενότηταμε ένα μπλοκ ρελέ για εναλλαγή φορτίων, όταν χρησιμοποιείτε τέτοιες μονάδες η εργασία απλοποιείται πολύ, εδώ θα δούμε αυτοπαραγωγήμονάδα με ένα ρελέ για on/off οικιακές συσκευές, εάν χρειάζεται, μπορείτε να φτιάξετε περισσότερες από μία τέτοιες μονάδες και να τις χρησιμοποιήσετε με μία Θέματα Arduinoκαθιστώντας έτσι δυνατό τον εύκολο έλεγχο πολλών οικιακών συσκευών. Το Arduino (οποιοδήποτε) έχει έναν ορισμένο αριθμό ακίδων γενικού σκοπούπου υποδεικνύονται στον πίνακα απλώς με αριθμούς ή αριθμούς με κυματιστό σύμβολο «~». Συνδέοντας το Arduino στον υπολογιστή και γράφοντας ένα ειδικό σκίτσο (πρόγραμμα για Arduino) σε αυτό (στο Arduino), μπορείτε να ελέγξετε αυτές τις ακίδες από αυτόν τον υπολογιστή μέσω του προγράμματος "Arduino IDE" κάνοντάς τους υψηλή τάση (περίπου +5V (ΥΨΗΛΗ )) ή χαμηλή (περίπου 0V (ΧΑΜΗΛΟ)). Το Arduino έχει επίσης ένα pin "GND" (όπως υποδεικνύεται στον πίνακα). Εάν υπάρχει υψηλή τάση σε έναν από τους ακροδέκτες γενικής χρήσης, τότε συνδέοντας κάτι αγώγιμο ρεύμα μεταξύ αυτού του ακροδέκτη και του ακροδέκτη "GND", το ρεύμα θα ρέει μέσω αυτού που είναι συνδεδεμένο ηλεκτρικό ρεύμακαι το μέγεθος αυτού του ρεύματος θα εξαρτηθεί από την αντίσταση αυτού του αντικειμένου και μπορεί να υπολογιστεί με, δηλ. Όσο χαμηλότερη είναι η αντίσταση, τόσο μεγαλύτερο είναι το ρεύμα, αλλά αν η αντίσταση είναι πολύ χαμηλή, θα ρέει πάρα πολύ μέσα από το Arduino υψηλό ρεύμακαι θα καεί. Το μέγιστο ρεύμα που μπορεί να παράγει ο ακροδέκτης γενικής χρήσης Arduino μπορεί να διαφέρει ανάλογα με τον μικροελεγκτή που χρησιμοποιεί, αλλά συνήθως είναι 40mA = 0,04A - αυτό μπορεί να μην είναι αρκετό για να ενεργοποιήσετε το ρελέ που θα ενεργοποιήσει τη(τις) συσκευή(ες). επιπλέον πρέπει να χρησιμοποιηθεί για την ενίσχυση του τρέχοντος στοιχείου για παράδειγμα ένα διπολικό τρανζίστορ. Ένα διπολικό τρανζίστορ έχει τρεις ακροδέκτες: πομπός, συλλέκτης, βάση. Το μέγιστο ρεύμα του τρανζίστορ είναι επίσης περιορισμένο όπως με το Arduino και είναι συνήθως υψηλότερο, για παράδειγμα, για το δημοφιλές KT315 το μέγιστο ρεύμα είναι 100mA = 0,1A. Υπάρχουν δύο τύποι διπολικών τρανζίστορ τύπους n-p-nκαι p-n-p μπορείτε να χρησιμοποιήσετε και τους δύο τύπους, αλλά με διαφορετικούς τρόπους, και στη συνέχεια θα εξετάσουμε το ενδεχόμενο χρήσης του τρανζίστορ KT315 του οποίου ο τύπος είναι n-p-n. Για να αυξήσει το τρανζίστορ το ρεύμα από το Arduino, είναι απαραίτητο να συνδέσετε τη βάση του στην έξοδο Arduino ΜΕΣΩ ΑΝΤΙΣΤΑΣΤΗΣ με αντίσταση 1 kOhm (η αντίσταση μπορεί να λέει 1 k), συνδέστε τον πομπό αυτού του τρανζίστορ στο Το "GND" του Arduino και το μείον του τροφοδοτικού ή το "GND" του τροφοδοτικού του οποίου η τάση ίση με την τάση της περιέλιξης του υπάρχοντος ρελέ (ας πούμε 12 V), συνδέουν έναν από τους ακροδέκτες της περιέλιξης του ρελέ στον συλλέκτη του τρανζίστορ, το άλλο με το συν της πηγής ρεύματος (+12V, ας πούμε) και ένα άλλο μέρος που δεν επηρεάζει το κέρδος αλλά είναι ΠΟΛΥ σημαντικό είναι η δίοδος, που πρέπει να συνδεθεί από την άνοδο σε ο συλλέκτης και η κάθοδος στο συν του τροφοδοτικού (+12V). Εάν η δίοδος εισάγεται, τότε πιθανότατα θα υπάρχει μια ελαφριά λωρίδα στο σώμα της - υποδεικνύει την κάθοδο, ο άλλος ακροδέκτης της διόδου είναι η άνοδος. Οι υπόλοιποι ακροδέκτες του ρελέ είναι οι ακροδέκτες των επαφών του, εάν υπάρχουν δύο από αυτούς και δεν είναι κλειστοί, τότε όταν παρέχεται αρκετό ρεύμα στην περιέλιξη του ρελέ, αυτές οι επαφές θα κλείσουν, πρέπει να συνδεθούν σε σειρά με τη συσκευή , και αυτό σειριακή σύνδεσηΜπορείτε να το συνδέσετε σε μια πρίζα, στη συνέχεια, όταν οι επαφές είναι κλειστές, 220V θα ρέουν στη συσκευή και θα ανάψει. Τα παραπάνω φαίνονται στην εικόνα:

Εικόνα 1 - Έλεγχος της συσκευής από υπολογιστή


Αυτό είναι ένα μη τυπικό σχήμα για καλύτερη κατανόηση των ακόλουθων σχημάτων:

Εικόνα 2 - Έλεγχος της συσκευής από υπολογιστή


Αν και αυτό το διάγραμμα περιέχει επίσης μια μη τυπική ονομασία για την πλακέτα Arduino. Το σχήμα δείχνει το Arduino UNO (μπορείτε να το παραγγείλετε μέσω αυτού του συνδέσμου http://ali.pub/1v22bh) αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε άλλο. Οι συνδέσεις μπορούν να γίνουν, για παράδειγμα, σε ένα breadboard και με καλώδια ή συγκόλληση. Αφού συνδεθούν και ελεγχθούν όλα σωστά, μπορείτε να συνδέσετε το Arduino μέσω USB στον υπολογιστή σας και να ανεβάσετε το σκίτσο σε αυτό:

Char pc_code=0;

Κενή ρύθμιση()
{
pinMode(2, OUTPUT);
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0)
{
pc_code = Serial.read();
if(pc_code=="a")
{
digitalWrite(2, HIGH);
}
else if(pc_code=="b")
{
digitalWrite(2, LOW);
}
}
}

Πώς να ρυθμίσετε σωστά το Arduino και να ανεβάσετε ένα σκίτσο σε αυτό περιγράφεται ήδη στη σελίδα. Στη συνέχεια, για να ενεργοποιήσετε τη συσκευή, πρέπει να στείλετε το σύμβολο "a" στο Arduino για να το απενεργοποιήσετε, το σύμβολο "b". Για να στείλετε ένα σύμβολο στο Arduino, στο Arduino IDE, εισαγάγετε την καρτέλα Tools-Monitor σειριακή θύρακαι στο παράθυρο που εμφανίζεται, εισάγετε τα σύμβολα στο επάνω πεδίο κειμένου και στείλτε πατώντας το κουμπί «αποστολή», το σύμβολο θα σταλεί στο Arduino και για αυτή η περίπτωσηΕάν στείλετε το σύμβολο "a" τότε η συσκευή θα ενεργοποιηθεί, εάν "b" τότε θα απενεργοποιηθεί ανάλογα. Εάν το Arduino δεν δέχεται χαρακτήρες, τότε πρέπει να ρυθμίσετε την ίδια ταχύτητα στην κάτω δεξιά γωνία του παραθύρου της παρακολούθησης της σειριακής θύρας όπως ορίζεται στο σκίτσο, π.χ. 9600 baud Για να συμπεριλάβετε 2 συσκευές, μπορείτε να αλλάξετε ελαφρώς το σκίτσο:

Char pc_code=0;

Κενή ρύθμιση()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0)
{
pc_code = Serial.read();
if(pc_code=="a")
{
digitalWrite(2, HIGH);
}
else if(pc_code=="b")
{
digitalWrite(2, LOW);
}
else if(pc_code=="c")
{
digitalWrite(3, HIGH);
}
αλλιώς εάν(pc_code=="d")
{
digitalWrite(3, LOW);

Ελέγξτε τις συσκευές μέσω της θύρας USB ενός υπολογιστή.

P. VYSOCHANSKY, Rybnitsa, Υπερδνειστερία, Μολδαβία
Μια συσκευή ελέγχου υπολογιστή για διάφορες συσκευές, το διάγραμμα της οποίας φαίνεται στο Σχ. 1, λειτουργικά παρόμοιο με αυτό που περιγράφεται στο, αλλά συνδέεται με τη θύρα USB του υπολογιστή, η οποία (σε αντίθεση με τη θύρα COM) υπάρχει σε καθένα από αυτά σήμερα. Το μόνο τσιπ στη συσκευή είναι ο κοινός μικροελεγκτής ATmega8. Είναι απαραίτητο για την οργάνωση της επικοινωνίας μέσω του διαύλου USB. Αν και στερείται εξειδικευμένης μονάδα υλικού, αυτή η λειτουργία εκτελείται από λογισμικό.

Η αντίσταση R1 συνδέεται μεταξύ του θετικού ακροδέκτη του τροφοδοτικού και της γραμμής USB D-Bus, το αλλάζει σε λειτουργία LS χαμηλής ταχύτητας με συναλλαγματική ισοτιμία 1,5 Mbit/s, η οποία σας επιτρέπει να αποκρυπτογραφείτε δεδομένα υπολογιστή προγραμματικά. Οι αντιστάσεις R4 και B5 εξαλείφουν τις παροδικές διεργασίες που συμβαίνουν κατά την ανταλλαγή πληροφοριών, γεγονός που αυξάνει τη σταθερότητα λειτουργίας. Μπλοκ πυκνωτών C1 κρουστικός θόρυβοςστο κύκλωμα ισχύος, το οποίο βελτιώνει επίσης τη σταθερότητα της συσκευής. Οι δίοδοι VD1 και VD2 χρησιμεύουν για τη μείωση της τάσης τροφοδοσίας του μικροελεγκτή σε περίπου 3,6 V - αυτό απαιτείται για να ταιριάζει με το επίπεδο Δίαυλος USB.
Τα σήματα ελέγχου της συσκευής παράγονται στις εξόδους PB0-PB5 και PSO, PC1 του μικροελεγκτή. Ψηλά επίπεδο λογικής- τάση περίπου 3,4 V.
Δυναμικό χαμηλό επίπεδοκοντά στο μηδέν. Μπορείτε να συνδέσετε συσκευές στις εξόδους που καταναλώνουν ρεύμα όχι μεγαλύτερο από 10 mA (από κάθε έξοδο). Εάν απαιτούνται μεγάλες τιμές ρεύματος ή τάσης, τότε οι κόμβοι που ταιριάζουν που φαίνονται στο Σχ. 5 και 6. Η συσκευή είναι συναρμολογημένη σε μια πλακέτα ψωμιού, δεν έχει αναπτυχθεί μια πλακέτα τυπωμένου κυκλώματος, οι αντιστάσεις MLT, οι πυκνωτές C2 και SZ είναι κεραμικοί πυκνωτές υψηλής συχνότητας, το C1 είναι K50-35 ή παρόμοια. Δίοδοι πυριτίου με πτώση τάσης στη διασταύρωση περίπου 0,7 V. Το πρόγραμμα για τον μικροελεγκτή αναπτύχθηκε στο περιβάλλον Bascom-AVR έκδοση 1.12.0.0. Για την εργασία με το δίαυλο USB, χρησιμοποιείται η βιβλιοθήκη swusb.LBX, η οποία εκτελεί αποκωδικοποίηση λογισμικού των σημάτων USB σε πραγματικό χρόνο. Ο κωδικός προγράμματος που προκύπτει από ένα αρχείο με επέκταση HEX θα πρέπει να φορτωθεί στη μνήμη FLASH του μικροελεγκτή. Για το σκοπό αυτό, ο προγραμματιστής χρησιμοποιήθηκε σε συνδυασμό με το βοηθητικό πρόγραμμα που είναι ενσωματωμένο στο Bascom-AVR. Η κατάσταση των bit διαμόρφωσης μικροελεγκτή πρέπει να αντιστοιχεί σε αυτήν που φαίνεται στο Σχ. 2


Όταν συνδέετε τη συσκευή στον υπολογιστή σας για πρώτη φορά, το λειτουργικό σύστημα θα εντοπίσει το νέο USB HID συμβατή συσκευήμε το όνομα "uniUSB" και εγκαταστήστε απαραίτητους οδηγούς. Μετά από μερικά δευτερόλεπτα, η συσκευή έχει ρυθμιστεί και είναι έτοιμη για χρήση. Για να εργαστείτε με αυτό, δημιουργήθηκε το πρόγραμμα UniUSB. Παρουσιάζεται σε δύο εκδόσεις: για λειτουργικά συστήματα 32-bit (x86) και 64-bit (x64) της οικογένειας Windows. Η έκδοση 32 bit έχει δοκιμαστεί σε λειτουργικά συστήματα: Windows 98, Windows XP, Windows 7 και η έκδοση 64 bit έχει δοκιμαστεί μόνο στα Windows XP x64. Το πρόγραμμα UniUSB είναι γραμμένο στη γλώσσα PureBasic (έκδοση 4.31) χρησιμοποιώντας τη βιβλιοθήκη HID Lib των λειτουργιών που καθορίζονται από τον χρήστη, η οποία υποστηρίζει την εργασία με συσκευές USB HID. ΕμφάνισηΤο παράθυρο του προγράμματος φαίνεται στην Εικ. 3


Στον ίδιο φάκελο μαζί της εκτελέσιμο αρχείοθα πρέπει να υπάρχει ένα αρχείο που ονομάζεται UniUSB_code.txt ή UniCOM_code.txt. Η τελευταία επιλογή είναι απαραίτητη για συμβατότητα με το πρόγραμμα UniCOM που προτείνεται στο . Αυτό το αρχείο αποθηκεύει το σενάριο ελέγχου εξωτερικές συσκευές. Όταν ξεκινά το πρόγραμμα, τα δεδομένα από το αρχείο φορτώνονται σε έναν πίνακα που βρίσκεται στο κύριο παράθυρο και όταν ολοκληρωθεί η εργασία, αποθηκεύονται στο αρχείο. Το αριστερό κλικ στα κελιά του πίνακα σάς επιτρέπει να αλλάξετε την κατάστασή τους: 1 - υψηλό λογικό επίπεδο, 0 ή κενό - χαμηλό λογικό επίπεδο. Για να προσθέσετε ή να διαγράψετε μια στήλη πίνακα, πρέπει να κάνετε δεξί κλικ πάνω της και να επιλέξετε την απαιτούμενη ενέργεια στο μενού που εμφανίζεται. Όταν συνδέετε μια συσκευή σε μια θύρα USB, το πρόγραμμα θα την εντοπίσει και θα ενεργοποιήσει το κουμπί που βρίσκεται στο επάνω μέρος του παραθύρου στη γραμμή εργαλείων. Κάνοντας κλικ σε αυτό το κουμπί ξεκινά η διαδικασία ταξινόμησης μεταξύ των στηλών του πίνακα και ορισμού των καταστάσεων εξόδου που υποδεικνύονται σε αυτές. Για μεγαλύτερη σαφήνεια, στα αριστερά του πίνακα επισημαίνονται οι αριθμοί των εξόδων στις οποίες το λογικό επίπεδο έχει οριστεί σε υψηλό αυτήν τη στιγμή. Η ταχύτητα αναζήτησης (χρόνος σε χιλιοστά του δευτερολέπτου μεταξύ των μεταβάσεων από στήλη σε στήλη) ορίζεται στο πεδίο "Ταχύτητα, ms". Λάβετε υπόψη ότι το λειτουργικό σύστημα Windows είναι multitasking! Αυτό σημαίνει ότι ο χρόνος του επεξεργαστή κατανέμεται σε πολλές διεργασίες, μερικές φορές κρυφές από τον χρήστη, οι οποίες εκτελούνται με τη σειρά τους, λαμβάνοντας υπόψη τις προτεραιότητες που ορίζονται στο σύστημα. Επομένως, δεν πρέπει να περιμένει κανείς μεγάλη ακρίβεια στη διατήρηση χρονικών διαστημάτων μικρότερη των 100 ms.
Για να σταματήσετε για λίγο την αναζήτηση στηλών, χρησιμοποιήστε το κουμπί Πατώντας το ξανά θα συνεχιστεί η αναζήτηση από εκεί που σταμάτησε. Το κουμπί σταματά εντελώς την αναζήτηση στις στήλες του πίνακα. Εάν η ανταλλαγή πληροφοριών μεταξύ του υπολογιστή και της συσκευής αποτύχει ή η συσκευή αποσυνδεθεί από την υποδοχή USB υπολογιστή, το πρόγραμμα θα αναφέρει ένα σφάλμα εμφανίζοντας ένα αντίστοιχο μήνυμα στη γραμμή κατάστασης.

ΛΟΓΟΤΕΧΝΙΑ

1. Nosov T. Έλεγχος συσκευών μέσω της θύρας COM ενός υπολογιστή - Ραδιόφωνο, 2007, Αρ. 11, σελ. 61,62.
2. Ryzhkov A. Προγραμματιστής ΗΠΑ για μικροελεγκτές AVR και AT89S, συμβατός με AVR910. - Ραδιόφωνο, 2008, Νο 7, σελ. 28, 29.

Βασισμένο σε υλικά από το περιοδικό "Radio 2`2011"
Μπορείτε να κάνετε λήψη του υλικολογισμικού του μικροελεγκτή και του προγράμματος υπολογιστή

Βαθμολογία 1 Βαθμολογία 2 Βαθμολογία 3 Βαθμολογία 4 Βαθμολογία 5

Μια συσκευή ελέγχου υπολογιστή για διάφορες συσκευές, το διάγραμμα της οποίας φαίνεται στο Σχ. 1, συνδέεται στη θύρα USB του υπολογιστή, η οποία υπάρχει σε καθένα από αυτά σήμερα. Το μόνο τσιπ της συσκευής είναι ένας κοινός μικροελεγκτής ATmega8. Είναι απαραίτητο για την οργάνωση της επικοινωνίας μέσω του λεωφορείου. USB. Αν και δεν διαθέτει ειδική μονάδα υλικού, αυτή η λειτουργία εκτελείται σε λογισμικό.

Εικόνα 1

Η αντίσταση R1, συνδεδεμένη μεταξύ του θετικού ακροδέκτη του τροφοδοτικού και της γραμμής USB D-bus, τη μεταφέρει σε λειτουργία χαμηλής ταχύτητας LS με συναλλαγματική ισοτιμία 1,5 Mbit/s, η οποία σας επιτρέπει να αποκρυπτογραφείτε μηνύματα υπολογιστή σε λογισμικό. Οι αντιστάσεις R4 και R5 εξαλείφουν τα μεταβατικά γεγονότα που συμβαίνουν κατά την ανταλλαγή πληροφοριών, γεγονός που αυξάνει τη σταθερότητα λειτουργίας. Ο πυκνωτής C1 μπλοκάρει τον παλμικό θόρυβο στο κύκλωμα ισχύος, το οποίο βελτιώνει επίσης τη σταθερότητα της συσκευής Οι δίοδοι VD1 και VD2 χρησιμοποιούνται για τη μείωση της τάσης τροφοδοσίας του μικροελεγκτή σε περίπου 3,6 V - αυτό απαιτείται για να ταιριάζουν τα επίπεδα με το δίαυλο USB.

Τα σήματα ελέγχου της συσκευής παράγονται στις εξόδους PB0-PB5 και PC0, PC1 του μικροελεγκτή. Υψηλό λογικό επίπεδο - η τάση είναι περίπου 3,4 V. Η χαμηλή τάση είναι κοντά στο μηδέν. Μπορείτε να συνδέσετε συσκευές στις εξόδους που καταναλώνουν ρεύμα όχι μεγαλύτερο από 10 mA (από κάθε έξοδο). Εάν απαιτούνται μεγάλες τιμές ρεύματος ή τάσης, θα πρέπει να χρησιμοποιούνται αντίστοιχες μονάδες.

Η συσκευή είναι συναρμολογημένη σε μια πλακέτα ψωμιού, δεν έχει αναπτυχθεί μια πλακέτα τυπωμένου κυκλώματος, οι αντιστάσεις MLT, οι πυκνωτές C2 και SZ είναι κεραμικοί πυκνωτές υψηλής συχνότητας, το C1 είναι K50-35 ή παρόμοια εισαγωγή. Δίοδοι πυριτίου με πτώση τάσης κατά μήκος της διασταύρωσης περίπου 0,7 V.

Το πρόγραμμα για τον μικροελεγκτή αναπτύχθηκε στο περιβάλλον Bascom-AVRεκδόσεις 1.12.0.0. Χρησιμοποιείται βιβλιοθήκη για εργασία με το δίαυλο USB swusb.LBX, το οποίο εκτελεί αποκωδικοποίηση λογισμικού των σημάτων USB σε πραγματικό χρόνο. Ο κωδικός προγράμματος που προκύπτει από ένα αρχείο με επέκταση HEX θα πρέπει να φορτωθεί στη μνήμη FLASH του μικροελεγκτή. Η κατάσταση των bit διαμόρφωσης μικροελεγκτή πρέπει να αντιστοιχεί σε αυτή που φαίνεται στο Σχ. 2.

Εικόνα 2

Όταν συνδέετε τη συσκευή σας στον υπολογιστή σας για πρώτη φορά, το λειτουργικό σύστημα θα εντοπίσει ένα νέο USB HIDσυμβατή συσκευή με όνομα " uniUSB" και θα εγκαταστήσει τα απαραίτητα προγράμματα οδήγησης. Μετά από λίγα δευτερόλεπτα, η συσκευή έχει ρυθμιστεί και είναι έτοιμη για χρήση. Το πρόγραμμα UniUSB δημιουργήθηκε για να λειτουργεί μαζί του. Διατίθεται σε δύο εκδόσεις: για 32-bit (x86) και 64-bit (x64) λειτουργικά συστήματα της οικογένειας Windows Η έκδοση 32 bit έχει δοκιμαστεί σε λειτουργικά συστήματα Windows 98, Windows XP, Windows 7 και η έκδοση 64 bit έχει δοκιμαστεί μόνο στα Windows XP x64.

Πρόγραμμα UniUSBγραμμένο στη γλώσσα PureBasic(έκδοση 4.31) χρησιμοποιώντας τη βιβλιοθήκη συναρτήσεων που ορίζονται από το χρήστη HID_Lib, υποστήριξη της εργασίας με USB HIDσυσκευές. Η εμφάνιση του παραθύρου του προγράμματος φαίνεται στο Σχ. 3.

Εικόνα 3

Στον ίδιο φάκελο με το εκτελέσιμο αρχείο του θα πρέπει να υπάρχει ένα αρχείο που ονομάζεται UniUSB_KOfl.txt. Αυτό το αρχείο αποθηκεύει το σενάριο για τον έλεγχο εξωτερικών συσκευών. Όταν ξεκινά το πρόγραμμα, τα δεδομένα από το αρχείο φορτώνονται σε έναν πίνακα που βρίσκεται στο κύριο παράθυρο και όταν ολοκληρωθεί η εργασία, αποθηκεύονται στο αρχείο. Το αριστερό κλικ στα κελιά του πίνακα σάς επιτρέπει να αλλάξετε την κατάστασή τους: 1 - υψηλό λογικό επίπεδο, 0 ή κενό - χαμηλό λογικό επίπεδο.

Για να προσθέσετε ή να διαγράψετε μια στήλη πίνακα, πρέπει να κάνετε δεξί κλικ πάνω της και να επιλέξετε την απαιτούμενη ενέργεια στο μενού που εμφανίζεται. Όταν συνδέετε μια συσκευή σε μια θύρα USB, το πρόγραμμα θα την εντοπίσει και θα ενεργοποιήσει το κουμπί Έναρξη που βρίσκεται στο επάνω μέρος του παραθύρου στη γραμμή εργαλείων. Κάνοντας κλικ σε αυτό το κουμπί ξεκινά η διαδικασία ταξινόμησης μεταξύ των στηλών του πίνακα και ορισμού των καταστάσεων εξόδου που υποδεικνύονται σε αυτές. Για μεγαλύτερη σαφήνεια, στα αριστερά του πίνακα επισημαίνονται οι αριθμοί των εξόδων στις οποίες το λογικό επίπεδο έχει οριστεί σε υψηλό αυτήν τη στιγμή. Η ταχύτητα αναζήτησης (χρόνος σε χιλιοστά του δευτερολέπτου μεταξύ των μεταβάσεων από στήλη σε στήλη) ορίζεται στο πεδίο "Ταχύτητα, ms".

class="eliadunit">

Σημειώστε ότι το λειτουργικό σύστημα Windows είναι πολλαπλών εργασιών! Αυτό σημαίνει ότι ο χρόνος του επεξεργαστή κατανέμεται σε πολλές διεργασίες, μερικές φορές κρυφές από τον χρήστη, οι οποίες εκτελούνται με τη σειρά τους, λαμβάνοντας υπόψη τις προτεραιότητες που ορίζονται στο σύστημα. Επομένως, δεν πρέπει να περιμένετε μεγάλη ακρίβεια στη διατήρηση χρονικών διαστημάτων μικρότερα από 100 ms.

Για να σταματήσετε για λίγο την ταξινόμηση μεταξύ στηλών, χρησιμοποιήστε το κουμπί "Παύση". Πατώντας το ξανά θα συνεχιστεί η αναζήτηση από εκεί που σταμάτησε. Το κουμπί "Διακοπή" σταματά εντελώς την αναζήτηση στις στήλες του πίνακα. Εάν παρουσιαστεί βλάβη κατά την ανταλλαγή πληροφοριών μεταξύ του υπολογιστή και της συσκευής ή εάν η συσκευή αποσυνδεθεί από την υποδοχή USB του υπολογιστή, το πρόγραμμα θα αναφέρει ένα σφάλμα εμφανίζοντας ένα αντίστοιχο μήνυμα στη γραμμή κατάστασης.

Πηγή: Ραδιόφωνο Νο 2, 2011

Αρχείο για το άρθρο "Έλεγχος φόρτωσης μέσω Διασύνδεση USB"
Περιγραφή:Πηγαία κείμενα προγραμμάτων, αρχείο υλικολογισμικού μικροελεγκτή, πρόγραμμα uniUSB
Μέγεθος αρχείου: 89,3 KB Αριθμός λήψεων: 2 773

Αυτό το άρθρο προσπαθεί να παρέχει οδηγίες βήμα προς βήμα- πώς να συνδέσετε μια σπιτική συσκευή USB HIDσε μικροελεγκτή AVRκαι έναν υπολογιστή με λειτουργικό σύστημα Windows 7 x64για την επικοινωνία και τον έλεγχο των θυρών του μικροελεγκτή. Το παράδειγμα εφαρμογής ελέγχει την ακίδα της θύρας του μικροελεγκτή μέσω USB (μια ενδεικτική λυχνία είναι συνδεδεμένη σε αυτήν). Είναι επίσης δυνατό να διαβάσετε την κατάσταση του LED - είτε είναι σβηστό είτε αναμμένο. Το θέμα προορίζεται για αρχάριους, επομένως ένα μεγάλο αίτημα στους ειδικούς προγραμματισμού - αποθηκεύστε τα σάπια αυγά και τις σάπιες ντομάτες ειρωνικά σχόλια για μια πιο βολική περίσταση.

Λογισμικό που χρησιμοποιείται

1 . Για τον μικροελεγκτή - βιβλιοθήκη V-USB από την Objective Development και το IDE Atmel Studio 6 από την Atmel. Πρέπει επίσης να κατεβάσετε και να εγκαταστήσετε την αλυσίδα εργαλείων WinAVR για να μεταγλωττίσετε το υλικολογισμικό του μικροελεγκτή (για ειδικούς αυτό δεν είναι απαραίτητο, επειδή μπορείτε να τα βγάλετε πέρα ​​με την αλυσίδα εργαλείων που περιλαμβάνεται στο Atmel Studio).
2 . Για το γράψιμο προγράμματα Windows(λογισμικό υποδοχής) Χρησιμοποιήθηκαν η βιβλιοθήκη LibUsbDotNet του Travis Robinson και το IDE Visual Studio C# 2010 από τη Microsoft.

Ολοι λογισμικό, εκτός από το Visual Studio 2010, είναι δωρεάν, αν και μπορείτε να χρησιμοποιήσετε δωρεάν το Visual Studio C# 2010 Express για περιορισμένο χρονικό διάστημα. Όλες οι δραστηριότητες πραγματοποιήθηκαν σε περιβάλλον χειρουργείου συστήματα Windows 7 x64, αλλά οποιοδήποτε άλλο λειτουργικό σύστημα της οικογένειας των Windows (Windows XP και νεότερο) πιθανότατα θα λειτουργήσει επίσης.

Μεταχειρισμένο σίδερο

Με τη βιβλιοθήκη V-USB, οποιοσδήποτε μπορεί να δημιουργήσει μια συσκευή USB HID. Μικροελεγκτής AVR. Εάν αισθάνεστε άνετα με ένα κολλητήρι, μπορείτε ακόμη και να συναρμολογήσετε τη σύνδεση USB μόνοι σας χρησιμοποιώντας ένα από τα δημοσιευμένα διαγράμματα. Ένα τέτοιο κύκλωμα (που λαμβάνεται από το πακέτο V-USB) φαίνεται στην εικόνα ως παράδειγμα.

Για να εξοικονομήσετε χρόνο και προσπάθεια, είναι προτιμότερο να χρησιμοποιήσετε ένα έτοιμο breadboard. Είναι ιδιαίτερα βολικό εάν ένας φορτωτής εκκίνησης USB είναι γραμμένος στην πλακέτα, τότε δεν θα χρειαστεί να αγοράσετε έναν προγραμματιστή για να αναβοσβήνει την πλακέτα. Χρησιμοποίησα μια πλακέτα ανάπτυξης AVR-USB-MEGA16 με μικροελεγκτή ATmega32A, έχει bootloader (USBasploader, μιμούμενο τη συμπεριφορά του προγραμματιστή USBasp). Έτσι φαίνεται το φουλάρι σε πλήρες μέγεθος:

Μπορείτε επίσης να πάρετε ένα metaboard (έχει ATmega168 ή ATmega328), ή ακόμα και έναν προγραμματιστή στον μικροελεγκτή ATmega8. Τέτοιοι αδένες μπορούν να αγοραστούν φθηνά ebay.comή dx.com.

Δημιουργία υλικολογισμικού μικροελεγκτή χρησιμοποιώντας το Atmel Studio 6 και τη βιβλιοθήκη V-USB

Κάντε ένα νέο έργο στο Atmel Studio 6 (εφεξής απλώς AS6). Όταν το AS6 σας ζητήσει να επιλέξετε έναν μικροελεγκτή, επιλέξτε Atmega32χωρίς γράμμα ΕΝΑ, όχι το Atmega32A (αν και η πλακέτα έχει Atmega32A) - αυτό είναι σημαντικό, καθώς η αλυσίδα εργαλείων WinAVR δεν βλέπει τη διαφορά, γνωρίζει μόνο το Atmega32. Αυτοί οι μικροελεγκτές είναι εσωτερική δομήπανομοιότυπα, άρα για εμάς δεν υπάρχει διαφορά, αλλά για το AS6 υπάρχει.

Τώρα πρέπει να ρυθμίσετε σωστά τον μεταγλωττιστή. ΣΕ επάνω μενού AS6 μετρητά Εργαλεία, περαιτέρω Επιλογές..και θα εμφανιστεί αυτό το παράθυρο:

Από τη λίστα στα αριστερά, επιλέξτε Εργαλειοθήκη. Μια λίστα με γεύσεις θα εμφανιστεί στα δεξιά. Η Atmel κωδικοποίησε αυτή τη λέξη πιθανές επιλογέςτα εργαλεία που χρησιμοποιούνται (αλυσίδες εργαλείων).

Σημείωμα. Η λίστα περιέχει ήδη την Native toolchain, η οποία χρησιμοποιείται από προεπιλογή (Προεπιλογή). Η Native toolchain είναι Μεταγλωττιστής GCCμαζί με αρχεία κεφαλίδας και βιβλιοθήκες που παρέχουν το απαραίτητο περιβάλλον για τη μεταγλώττιση του πηγαίου κώδικα για τον μικροελεγκτή. Αυτή η αλυσίδα εργαλείων παρέχεται από την Atmel και εγκαθίσταται αυτόματα με την εγκατάσταση AS6. Όπως ανέφερα ήδη, μπορείτε να χρησιμοποιήσετε αυτήν την αλυσίδα εργαλείων για μεταγλώττιση, αλλά στη συνέχεια στον πηγαίο κώδικα Παραδείγματα V-USB(με βάση το παράδειγμα USB HID το δικό μας θα λειτουργήσει Συσκευή USB) θα πρέπει να κάνετε τις διορθώσεις χειροκίνητα. Είναι απλά, αλλά για αρχάριους θα ήταν καλύτερο να προσθέσετε την αλυσίδα εργαλείων WinAVR εδώ και να τη χρησιμοποιήσετε για μεταγλώττιση.
Για να προσθέσετε την αλυσίδα εργαλείων WinAVR στη λίστα Γεύσεις, κάντε κλικ στο κουμπί Προσθέστε γεύση, θα εμφανιστεί το ακόλουθο παράθυρο:

ΣΕ κορυφαία γραμμήσε αυτό το παράθυρο, πληκτρολογήστε το όνομα του μεταγλωττιστή WinAVR (αυθαίρετο) και μέσα κατώτατη γραμμήεισάγω πλήρης διαδρομή, όπου είναι εγκατεστημένος ο ίδιος ο μεταγλωττιστής της αλυσίδας εργαλείων (που υποδεικνύει τον φάκελο \bin) και κάντε κλικ στο κουμπί Προσθέτω. Ο μεταγλωττιστής που προστέθηκε θα εμφανιστεί στη λίστα Γεύσεις, όπως φαίνεται στο στιγμιότυπο οθόνης.

Επιλέξτε τον μεταγλωττιστή WinAVR που προστέθηκε πρόσφατα με το ποντίκι και κάντε κλικ στο κουμπί Ορισμός ως προεπιλογή(κάντε το προεπιλεγμένο εργαλείο) και κάντε κλικ στο OK. Μετά από αυτή τη διαδικασία, το AS6 μας θα χρησιμοποιήσει τον μεταγλωττιστή WinAVR.

Ήρθε η ώρα να διαμορφώσουμε τις ιδιότητες του έργου μας για να το κάνουμε αυτό, με τον κέρσορα στο Solution Explorer, κάντε αριστερό κλικ στο όνομα του έργου και κάντε κλικ Alt+F7(μενού Έργο -> Ιδιότητες), θα εμφανιστεί ένα παράθυρο με ρυθμίσεις:

Κάνω παρακάτω ρυθμίσεις:

  • Στην ενότητα AVR/GNU C Compiler -> Σύμβολαπροσθέστε στο πεδίο -ΡΕγραμμή F_CPU=12000000UL- αντιστοιχεί σε συχνότητα μικροελεγκτή 12 MHz (αυτός ο χαλαζίας είναι εγκατεστημένος στην πλακέτα ανάπτυξης AVR-USB-MEGA16).
  • Στην ενότητα AVR/GNU Assembler -> Γενικάστο χωράφι Σημαία συναρμολογητήπρέπει να προστεθούν -DF_CPU=12000000UL.
  • Στην ενότητα AVR/GNU C Compiler -> Βελτιστοποίησηστο χωράφι Επίπεδο βελτιστοποίησηςπρέπει να σταθεί Βελτιστοποίηση για μέγεθος (-Os).
Περαιτέρω πολύ σημαντικό σημείο- στην αριστερή πλευρά του παραθύρου, επιλέξτε μια ενότητα στη λίστα Προχωρημένος, όπως φαίνεται στο παρακάτω σχήμα.

Στην αναπτυσσόμενη λίστα Γεύση αλυσίδας εργαλείωνεπιλέξτε τον προστιθέμενο μεταγλωττιστή WinAVR, ώστε το AS6 να τον χρησιμοποιεί κατά τη μεταγλώττιση του έργου. Αυτό ολοκληρώνει τη ρύθμιση του AS6.

Στη συνέχεια, πρέπει να προσθέσετε τα αρχεία πηγαίου κώδικα του έργου στο δημιουργημένο έργο - δείτε το φάκελο firmware\VUSB, τα αρχεία VUSB.c, usbdrv.c, usbdrvasm.S και oddebug.c. Το έργο ASS6 βασίζεται σε ένα από τα παραδείγματα βιβλιοθήκης V-USB: hid-custom-rq, το οποίο είχε αρχικά μεταγλωττιστεί χρησιμοποιώντας το βοηθητικό πρόγραμμα make από γραμμή εντολών. Πολλά άλλα παραδείγματα κώδικα μπορούν να βρεθούν με βάση τη βιβλιοθήκη V-USB - κυρίως συσκευές USB HID (ποντίκια, πληκτρολόγια, συσκευές εισόδου και εξόδου), αλλά υπάρχουν και συσκευές USB CDC (εικονική θύρα COM). Εάν είστε πολύ τεμπέλης για να δημιουργήσετε ένα έργο μόνοι σας, απλώς ανοίξτε το αρχείο έργου VUSB.atsln στο AS6, όλα έχουν ήδη γίνει σε αυτό απαραίτητες ρυθμίσειςκαι προστίθενται όλα τα απαραίτητα αρχεία.

Εάν χρησιμοποιείτε διαφορετική πλακέτα ανάπτυξης, πρέπει να ρυθμίσετε σωστά τις παραμέτρους του αρχείου usbconfig.h. Αυτό είναι το αρχείο διαμόρφωσης βιβλιοθήκης V-USB, πολλές ρυθμίσεις και παράμετροι καθορίζονται σε αυτό (VID, PID, ακίδες μικροελεγκτή, τιμές για περιγραφείς και άλλες ρυθμίσεις). Αναλυτική περιγραφήΌλες οι ρυθμίσεις δίνονται στα σχόλια αυτού του αρχείου. Η κύρια προσοχή πρέπει να δοθεί στην εκχώρηση των ακροδεκτών μικροελεγκτή, που χρησιμοποιούνται για τα σήματα USD D+ και D- (ορισμοί μακροεντολής USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT, USB_CFG_DPLUS_BIT), επιβάλλονται ειδικές απαιτήσεις σε αυτές τις ακίδες. Αρχείο διαμόρφωσης usbconfig.hαπό το αρχείο έχει σχεδιαστεί για τη δρομολόγηση των ποδιών της πλακέτας ανάπτυξης AVR-USB-MEGA16 και είναι εγγυημένη ότι λειτουργεί. Το πρόγραμμα θα αναβοσβήνει το LED που βρίσκεται ήδη στο breadboard και είναι συνδεδεμένο στην ακίδα 0 της θύρας Β.

Δημιουργία προγράμματος υπολογιστή (λογισμικό υποδοχής)

Το πρόγραμμά μας θα πρέπει να αποστέλλεται μέσω Σύνδεση USBπακέτα που θα ελέγχουν τον μικροελεγκτή.

Σημείωμα. Το πρόγραμμα δημιουργήθηκε με βάση το παράδειγμα εφαρμογή κονσόλαςαπό την ίδια βιβλιοθήκη V-USB. Ο πηγαίος κώδικας για την εφαρμογή της κονσόλας μεταγλωττίστηκε χρησιμοποιώντας ένα makefile και το πακέτο MinGW και χρησιμοποιήθηκε η βιβλιοθήκη LibUSB. Στο παράδειγμά μας, θα χρησιμοποιήσουμε το γραφικό περιβάλλον του Visual Studio και τη βιβλιοθήκη LibUsbDotNet. Ωστόσο, το κύριο πλεονέκτημα της χρήσης του LibUsbDotNet δεν είναι καθόλου ότι τώρα μπορείτε εύκολα και άνετα να φτιάξετε όχι μόνο κονσόλα, αλλά και γραφικές εφαρμογές. Το μεγαλύτερο πλεονέκτημα είναι ότι τώρα δεν υπάρχει ανάγκη για πρόγραμμα οδήγησης φίλτρου, το οποίο η βιβλιοθήκη LibUSB είχε μαζί του για πολλά χρόνια. Για όσους βρίσκονται στη δεξαμενή, το πρόγραμμα οδήγησης φίλτρου είναι ένα ειδικό πρόσθετο λογισμικού στη βιβλιοθήκη LibUSB, μέσω του οποίου ανταλλάσσονταν δεδομένα με συσκευές USB στο Πλατφόρμα Windows. Τώρα αυτός ο αταβισμός δεν χρειάζεται.
Εκκινήστε το Microsoft Visual C# 2010 Express και δημιουργήστε ένα νέο έργο Βασισμένο στα WindowsΜορφή. Τώρα πρέπει να συνδέσετε τη βιβλιοθήκη στο έργο LibUsbDotNet.dll. Στην Εξερεύνηση λύσεων, κάντε δεξί κλικ στο όνομα του έργου και επιλέξτε "Προσθήκη αναφοράς".

Θα εμφανιστεί ένα άλλο παράθυρο

Εδώ πρέπει να βρείτε τη διαδρομή στο δίσκο όπου βρίσκεται η βιβλιοθήκη LinUsbDotNet.dll (από προεπιλογή είναι εγκατεστημένη στο φάκελο C:\Program Files\LibUsbDotNet, αλλά είναι καλύτερο να δημιουργήσετε ένα αντίγραφο αρχείο DLLστον κατάλογο εργασίας του έργου. Αφού συνδέσετε τη βιβλιοθήκη, πρέπει να δηλωθεί στο έργο για να γίνει αυτό, προσθέστε τις ακόλουθες γραμμές στην κύρια ενότητα προγράμματος (αρχείο Form1.cs):

Χρήση LibUsbDotNet. χρησιμοποιώντας το LibUsbDotNet.Info. χρησιμοποιώντας το LibUsbDotNet.Main.
Μεταβείτε στο πρόγραμμα επεξεργασίας οπτικής φόρμας και κάντε το να μοιάζει κάπως έτσι (προσθέστε 3 κουμπιά και 3 ετικέτες κειμένου ετικέτας):

Δημιουργήστε ένα πρόγραμμα χειρισμού συμβάντων φόρτωσης φόρμας. Απαιτείται έτσι ώστε κατά την εκκίνηση του προγράμματος να αρχικοποιείται μια παρουσία της κλάσης LibUsbDotNet, μέσω της οποίας πραγματοποιείται η ανταλλαγή με τη συσκευή USB. Πριν ξεκινήσετε την ανταλλαγή, είναι απαραίτητο να ανοίξετε την πρόσβαση στη συσκευή μας, επειδή πολλές συσκευές USB HID μπορούν να συνδεθούν στον υπολογιστή και πρέπει να έχετε πρόσβαση σε καθεμία ξεχωριστά. Για τον προσδιορισμό των συσκευών USB, υπάρχουν ειδικά αναγνωριστικά που διαθέτουν απολύτως όλες οι συσκευές USB, αυτά είναι τα VID και PID.

Σημείωμα. Μερικές φορές μια μοναδική συσκευή χρησιμοποιείται επιπλέον για την αναγνώριση της συσκευής. αύξων αριθμόςή ξεχωριστό περιγραφικό κειμένου - όταν πολλές συσκευές USB με το ίδιο VID και PID είναι συνδεδεμένες στον υπολογιστή, αλλά αυτό δεν ισχύει για εμάς. Επειδή συνήθως κάθε συσκευή USB που είναι συνδεδεμένη σε υπολογιστή έχει το δικό της ζεύγος VID/PID, διαφορετικό από άλλες συσκευές, τότε βρείτε απαιτούμενη συσκευήκαι η επικοινωνία μαζί του δεν είναι πρόβλημα.
Το VID είναι το αναγνωριστικό προμηθευτή και το PID είναι το αναγνωριστικό προϊόντος. Η συσκευή μας USB έχει VID: 0x 16C0, PID: 0x 05DF, αυτές οι τιμές υποδεικνύονται στο αρχείο ρυθμίσεων usbconfig.h(έχουμε ήδη αναφέρει αυτό το αρχείο) του έργου μικροελεγκτή AS6. Προκειμένου το λογισμικό κεντρικού υπολογιστή να έχει πρόσβαση στη συσκευή USB μας ειδικά, πρέπει να αρχικοποιήσουμε το αντικείμενο MyUsbFinder με τις ίδιες παραμέτρους VID: 0x16c0, PID: 0x05df, όπως ορίζεται στο αρχείο usbconfig.h. Για να το κάνετε αυτό, προσθέστε τον ακόλουθο κώδικα στην περιοχή ορισμού των καθολικών μεταβλητών της κλάσης Form1:

Δημόσια στατική UsbDevice MyUsbDevice.
δημόσιο στατικό UsbDeviceFinder MyUsbFinder = νέο UsbDeviceFinder(0x16c0, 0x05df);

Αφού αποφασίσουμε με ποια συσκευή USB θα δουλέψουμε, μπορούμε να συνδεθούμε σε αυτήν και αυτό είναι βολικό να το κάνουμε τη στιγμή που ξεκινά το πρόγραμμα (άνοιγμα του παραθύρου της φόρμας). Για να το κάνετε αυτό, επιλέξτε την κύρια φόρμα του προγράμματος και στο πρόγραμμα επεξεργασίας ιδιοτήτων, δημιουργήστε ένα πρόγραμμα χειρισμού συμβάντων φόρτωσης Form1_Load. Στο σώμα του χειριστή, εισαγάγετε τον ακόλουθο κωδικό:
Private void Form1_Load(object sender, EventArgs e) ( MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); if (MyUsbDevice != null) ( label2.Text = "συνδεδεμένο!"; ) else label2.Text = "δεν βρέθηκε!"; Δημιουργήστε ένα πρόγραμμα χειρισμού συμβάντων κλικ για το κουμπί κουμπιού1 ("Ενεργό"), για να το κάνετε αυτόοπτικός επεξεργαστής στο κουμπίδιπλό κλικ

και προσθέστε τον ακόλουθο κώδικα στο σώμα του προγράμματος χειρισμού συμβάντων:
Ιδιωτικό void button1_Click(object sender, EventArgs e) ( // Αποστολή πακέτου που ανάβει το LED στην πλακέτα ανάπτυξης AVR-USB-MEGA16. UsbSetupPacket = νέο UsbSetupPacket((byte)(UsbCtrlFlags.VicetrlFlags.Vicetrl | sbCtrlΣημαίες .Direction_Out) , 1, (short)1, 0, 0 byte data = new byte ControlTransfer(ref packet, data, 0, out countIn);

Για το πρόγραμμα χειρισμού κουμπιών "Απενεργοποίηση", προσθέστε τον ακόλουθο κωδικό:
Ιδιωτικό void button3_Click(object sender, EventArgs e) ( // Αποστολή πακέτου που θα σβήσει το LED στην πλακέτα ανάπτυξης AVR-USB-MEGA16. Πακέτο UsbSetupPacket = νέο UsbSetupPacket((byte)(UsbCtrlFlags.V0gslags. UsbCtrlFlags.Direction_Out) , 1, (σύντομη) 0, 0, 0 byte data = ControlTransfer(ref packet, data, 0, out countIn);

Private void button2_Click(object sender, EventArgs e) ( //Λήψη δεδομένων από την πλακέτα ανάπτυξης AVR-USB-MEGA16 - Κατάσταση LED. Πακέτο UsbSetupPacket = νέο UsbSetupPacket((byte)(UsbCtrlFlags.Requesttrbvicesla | lFlags.Direction_In) , 2, (short)0, (short)0 int countIn = new byte if (MyUsbDevice.ControlTransfer(ref packet, data, 1, out countIn) && (countIn == 1) ) ; Text = "Read value " + data.ToString() )
Ο χειριστής συμβάντων κλεισίματος φόρμας (απενεργοποίηση προγράμματος) σβήνει το LED εάν είναι αναμμένο:

Ιδιωτικό κενό Form1_FormClosed(Αποστολέας αντικειμένου, FormClosedEventArgs e) ( UsbSetupPacket = νέο UsbSetupPacket((byte)(UsbCtrlFlags.RequestType_Vendor | UsbCtrlFlags.Flags. 0, 0, 0) t countIn = νέο byte MyUsbDevice.ControlTransfer (πακέτο αναφοράς, δεδομένα, 0, out countIn)

Πώς αποκωδικοποιούνται τα πακέτα USB στο υλικολογισμικό μικροελεγκτή

Στη λειτουργία πραγματοποιείται λήψη και επεξεργασία δεδομένων από την πλευρά του μικροελεγκτή usbFunctionSetup(βρίσκεται στην κύρια μονάδα VUSB.c του έργου υλικολογισμικού AS6). Αυτή είναι η λειτουργία:

UsbMsgLen_t usbFunctionSetup(uchar data) ( usbRequest_t *rq = (void *)data; if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_VENDOR)( DBG1(0x50, /budReput: &r-q-Εκτύπωση): το αίτημά μας */ if(rq->bRequest == CUSTOM_RQ_SET_STATUS)( if(rq->wValue.bytes & 1)( /* set LED */ LED_PORT_OUTPUT |= _BV(LED_BIT); )άλλο( /* καθαρό LED */ LED_PORT_OUTPUT &= ~_BV(LED_BIT) )άλλο εάν(rq->bRequest == CUSTOM_RQ_GET_STATUS)( static uchar dataBuffer; /* το buffer πρέπει να παραμείνει έγκυρο κατά την έξοδο από το usbFunctionSetup */dataBuffer =(LED_Buffer) ). , * αφού δεν τα λέμε . λειτουργικό σύστημαεπίσης δεν θα έχει πρόσβαση σε αυτά * επειδή η λαβή μας δεν ορίζει καμία τιμή.
Η συσκευή μας USB HID είναι απλή και ανταποκρίνεται μόνο σε μεταφορές ελέγχου που περνούν από το προεπιλεγμένο τελικό σημείο ελέγχου 0. Η κατεύθυνση μετάδοσης δεδομένων αποκωδικοποιείται από τον τύπο της αίτησης (πεδίο bRequest). Εάν CUSTOM_RQ_SET_STATUS, τότε πρόκειται για δεδομένα που προορίζονται για τον μικροελεγκτή. Τα δεδομένα αποκωδικοποιούνται και ο μικροελεγκτής εκτελεί την εντολή που είναι ενσωματωμένη εκεί. Σε αυτήν την περίπτωση, στο πρώτο byte δεδομένων που ελήφθησαν, η κατάσταση του LED κωδικοποιείται - εάν υπάρχει ένα στο λιγότερο σημαντικό bit, τότε το LED ανάβει και εάν είναι μηδέν, τότε σβήνει. Εάν το πεδίο bRequest δέχεται την τιμή CUSTOM_RQ_GET_STATUS, τότε το buffer συμπληρώνεται ως απόκριση τρέχουσα κατάστασηΗ λυχνία LED και τα δεδομένα buffer αποστέλλονται πίσω στον κεντρικό υπολογιστή. Όλα είναι πολύ απλά και, αν θέλετε, η συμπεριφορά του κώδικα μπορεί εύκολα να τροποποιηθεί για να ταιριάζει στις ανάγκες σας.

Βίντεο για το πώς λειτουργεί:

Θα χαρώ να απαντήσω σε ερωτήσεις και εποικοδομητικά σχόλια στα σχόλια.

Μία από τις απλούστερες και πιο συχνά χρησιμοποιούμενες μεθόδους είναι η οργάνωση της ανταλλαγής δεδομένων μεταξύ ενός υπολογιστή και εξωτερικές συσκευέςείναι η χρήση τυπικών θυρών I/O - όπως COM, LPT, IrDA και USB, καθώς και βιομηχανικές διεπαφές SPI, 12C, I-Wire. Αυτό το βιβλίοαφιερώνεται στην επεξήγηση των αρχών της δουλειάς τους και στη δημιουργία διευθυντών προγράμματα χρηστών. Εξετάζονται τα ζητήματα σύζευξης συσκευών με υπολογιστή που χρησιμοποιεί τις καθορισμένες διεπαφές. Εξετάζονται τα ζητήματα σύζευξης συσκευών με υπολογιστή που χρησιμοποιεί τις καθορισμένες διεπαφές. Δίνονται παραδείγματα κυκλωμάτων, καθώς και πηγαίους κώδικεςπρογράμματα για υπολογιστές και μικροελεγκτές της οικογένειας AVR Το εγχειρίδιο απευθύνεται σε προγραμματιστές ηλεκτρονικού εξοπλισμού που πρέπει να παρέχουν υποστήριξη λογισμικού για τις συσκευές τους.

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΘΥΡΑΣ LPT
2.1. Εγκατάσταση του προγράμματος οδήγησης giveio sys
2:2. Έλεγχος της κατάστασης των γραμμών θυρών LPT
2.3. Σχέδιο βάσης για τον εντοπισμό σφαλμάτων ενός προγράμματος
2.4. Σύζευξη μικροελεγκτή με θύρα LPT
2.5. Εργαλεία αφαίρεσης υλικού και λογισμικού χαρακτηριστικά ρεύματος-τάσηςσυσκευές ημιαγωγών
2.5.1. Ανάγνωση χαρακτηριστικών ρεύματος-τάσης διπολικών τρανζίστορ
2.5.2. Λήψη χαρακτηριστικών ρεύματος-τάσης τρανζίστορ φαινομένου πεδίου
2.5.3. Ανάγνωση χαρακτηριστικών ρεύματος-τάσης διόδων
2.5.4. Αφαίρεση χαρακτηριστικών ρεύματος-τάσης των διόδων zener
2.5.5. Μονάδα ελέγχου
2.5.6. Περιγραφή λογισμικού

3 ΣΕΙΡΙΑΚΗ ΘΥΡΑ
3.1. Οργάνωση υλικού του λιμανιού
3.2. Διεπαφή RS-232C
3.3. Ηλεκτρική διεπαφή
3.4. Έλεγχος ροής μετάδοσης
3.4. Τρέχουσα διεπαφή βρόχου
3.6. Διεπαφή υπερύθρων
3.7. Διεπαφή MIDI
3.8. Διαμόρφωση θυρών COM
3.9. Χρήση θυρών COM
3.10. Βλάβες και έλεγχος των θυρών COM
3.10.1. Έλεγχος διαμόρφωσης
3.10.2. Λειτουργική δοκιμή
3.11. Προγραμματισμός UART για μικροελεγκτές
3.11.1. Μεταφορά δεδομένων
3 11.2. Λήψη δεδομένων
3.11.3. Έλεγχος UART
3.11.4. Γεννήτρια ρυθμού Baud
3.12. Σύζευξη υπολογιστή με μικροελεγκτή μέσω θύρας COM
3.13. Το πρόγραμμα για μικροελεγκτή

4. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΘΥΡΩΝ COM
4.1. Άνοιγμα του λιμανιού
3.2. Διαμόρφωση ρυθμίσεων θύρας
4.3. Ρύθμιση χρονικών ορίων
4.4. Χρησιμοποιώντας το παράθυρο διαλόγου τυπικών ρυθμίσεων θύρας
4.5. Λήψη και μετάδοση δεδομένων
4.6. Χρήση νημάτων

5. USB BUS
5.1. Οργάνωση λεωφορείων υλικού
5.2. Μετατροπείς USB-FIFO
5.3. Σύνδεση του τσιπ FT245BM σε USB
5.4. Μετατροπείς USB-RS232
5.5. Σύνδεση του τσιπ FT232BM σε USB

6. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ USB BUS
6.1. Εγκατάσταση προγραμμάτων οδήγησης
6.2 Αναγνώριση συνδεδεμένων συσκευών. Λήψη πληροφοριών συσκευής
6.3. Οργάνωση ανταλλαγής δεδομένων
6.4. Το πρόγραμμα για τον ελεγκτή AVR
6.5. Χρήση χρονικών ορίων
6.6. Προγραμματισμός συσκευών που βασίζονται στο FT232
6.7. Προγραμματισμός EEPROM
6.8. Κωδικοί σφάλματος κατά την εργασία με USB

7. ΕΠΙΣΚΟΠΗΣΗ ΕΡΓΑΛΕΙΩΝ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗΝ ΕΡΓΑΣΙΑ ΜΕ ΘΥΜΕΣ
7.1. Πρωτεύς
7.2. Συστήματα SCADA
7.2.1. Αρχή λειτουργίας Συστήματα SCADA
7.2.2. Σύστημα τζίνι
7.3. Teiminat
7.4. Wtnscope

8. ΑΡΧΕΣ ΟΡΓΑΝΩΣΗΣ ΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΚΤΥΟΥ
8.1. Χρήση των WindowsΥποδοχές
8.2. Εκκίνηση Winsock
8.3. Δημιουργία πρίζας και άνοιγμα σύνδεσης
8.4. Αποστολή και λήψη μηνυμάτων
8.5. Διαχείριση της διαδικασίας δημιουργίας μηνυμάτων
8.6. Παράδειγμα ανάπτυξης προγράμματος
ΕΦΑΡΜΟΓΕΣ
ΛΟΓΟΤΕΧΝΙΑ

Εκδότης: Oldi-plus
Έτος έκδοσης: 2008
Σελίδες: 380
ISBN: 978-966-8447-51-8
Γλώσσα: Ρωσικά
Μορφή: PDF
Μέγεθος: 8,5 MB
Λήψη: Ryabenky V.M. Έλεγχος υπολογιστήεξωτερικές συσκευές μέσω τυπικών διεπαφών



Συνιστούμε να διαβάσετε

Κορυφή