Schritt 2: Angabe und Gestaltung der neuen PyMata API und Reporter Methodenschnittstellen
Verwenden Sie die Stepper.h öffentliche Schnittstelle zur Orientierung, können wir beginnen, PyMata Schrittmotor API und Reporter Methodenschnittstellen zu entwerfen.
Zuerst benötigen wir eine Methode, die die serielle Bibliothek ein motor-Objekt zu instanziieren beauftragen wird. Nennen wir diese Methode, Stepper_config, und ähnlich wie bei der Stepper Bibliothek Konstruktoren, wir lassen den Anrufer angeben, die Anzahl der Schritte pro Umdrehung, sowie eine Liste der Motorsteuerung Pins zur Verfügung. Dieser Liste, auf die Anrufer-Option enthält 2 Pin-Werte für einen 2-Leiter-Motor oder 4 Werte für einen 4-Leiter-Motor.
Hier ist die Signatur für die API-Methode Stepper_config.
def stepper_config(self, steps_per_revolution, stepper_pins): """ Configure stepper motor prior to operation. steps_per_revolution: number of steps per motor revolution stepper_pins: a list of control pin numbers - either 4 or 2 """
Unter Bezugnahme auf Stepper.h, die Bibliothek separate stellt Methoden bereit, um die Drehzahl des Motors und den Motor bewegen eine bestimmte Anzahl von Schritten.
Unsere PyMata -Schnittstelle benötigen, das gleiche zu tun, aber wir werden eine Designentscheidung zu treffen und kombinieren beide Vorgänge in eine Methode.
Nennen wir diese Methode Stepper_step und die API-Signatur ist unten dargestellt.
def stepper_step(self, motor_speed, number_of_steps): """ Move a stepper motor for the number of steps at the specified speed motor_speed: 21 bits of data to set motor speed number_of_steps: 14 bits for number of steps & direction positive is forward, negative is reverse """
Außerdem müssen wir eine Methode, um dem Benutzer erlauben, die Stepper Motor Bibliothek Version anfordern. Durch die asynchrone Natur Firmata Berichterstattung benötigen wir bieten separate Methoden Version Ersuchen an den Arduino zu senden und die Antwort abrufen. Beide Methoden sind Teil der öffentlichen API.
Die Anforderungsmethode haben die folgende API-Signatur:
def stepper_request_library_version(self): """ Request the stepper library version from the Arduino. To retrieve the version after this command is called, call get_stepper_version(). """
Wir müssen vor der Diskussion der letzten API-Methode, die Signatur der Methode Reporter angeben, die die Daten aus dem Arduino an den Client gesendet. Diese Daten sind in Form von zwei 7-Bit-Bytes, die zusammengesetzt werden, um die Versionsnummer der Bibliothek bilden, die vom Client gespeichert werden müssen.
def stepper_version_response(self, data): """ This method handles a stepper library version message sent from the Arduino and stores the value until the user requests its value using get_stepper_version() data -Two 7 bit bytes that contain the library version number """
Der Rückgabewert von dem Arduino in der Stepper_version_response-Meldung wird intern durch PyMata gespeichert werden. Um den Wert abzurufen, ruft der Benutzer die Get_stepper_version-API-Methode. Um für Arduino die Datenübertragung und Bearbeitungszeiten zu ermöglichen, ist ein Wartezeit von maximal Zeitparameter angegeben. Der Standardwert für diesen Parameter beträgt 20 Sekunden. Wenn die Arduino antwortet vor Ablauf der maximale Zeit, der Wert wird sofort zurückgegeben und der Timer wird abgebrochen. Die Signatur für diese Methode lautet:
def get_stepper_version(self, timeout=20): """ timeout: specify a max time to allow arduino to process and return the version the stepper version number if it was set. """
Ein wichtiger Hinweis
In pymata.pysind alle PyMata "Befehl" Methoden implementiert. Also wenn wir Stepper_config, Stepper_step, Stepper_request_library_version und Get_stepper_version, code werden sie alle pymata.py hinzugefügt werden.
Alle "Reporter-Nachrichten" aus dem Arduino erfolgt durch pymata_command_handler.py. Daher wird die Umsetzung der Stepper_version_response zu dieser Datei hinzugefügt werden.