Saturday, 24 June 2017

02h In Binary Option

Generieren einer CMS-Datei mit IBM GSK iKeyMan Durch die Aktivierung von SSL für den Siebel LDAP-Sicherheitsadapter wird eine sichere Verbindung zwischen der Siebel-Anwendung und ihrem LDAP-Server aufgebaut. Wie Sie SSL für einen LDAP-Server aktivieren, liegt außerhalb des Umfangs dieses Buchs. Zu diesem Zweck konsultieren Sie die Dokumentation zu Ihrer Drittanbieter-LDAP-Serververwaltung. Dieser Abschnitt geht davon aus, dass der LDAP-Server bereits SSL-enabled8212 ist, dh er akzeptiert SSL-Verbindungen. Um SSL für den Siebel LDAP-Sicherheitsadapter zu aktivieren, muss eine Zertifikat-Datenbankdatei auf dem Siebel Server-Computer installiert sein, auf dem AOMs oder andere Komponenten ausgeführt werden, die die LDAP-Authentifizierung über den LDAP-Sicherheitsadapter unterstützen müssen. Der LDAP-Sicherheitsadapter muss über einen Port mit dem LDAP-Server verbunden sein, der SSL-Verbindungen akzeptiert. Der Siebel LDAP-Sicherheitsadapter wird auf dem IBM LDAP Client erstellt. Der IBM LDAP-Client erfordert, dass die Zertifikat-Datenbankdatei das CMS-Dateiformat verwendet. Sie können eine CMS-Datei mit IBM GSK iKeyMan generieren. Der Rest dieses Abschnitts enthält detaillierte Anweisungen zum Generieren einer CMS-Datei und zum Aktivieren von SSL für den Siebel LDAP-Sicherheitsadapter. Nach Abschluss sollten Sie in der Lage sein, Siebel Business Applications mit LDAP-Authentifizierung aufzurufen, und Sie können erwarten, dass die Kommunikation zwischen Siebel Business Applications und dem LDAP-Server sicher ist. Informationen zum Generieren einer CMS-Datei Die CMS-Datei sollte CA-Zertifikate der Zertifikatsautoritäten enthalten, die Serverzertifikate an LDAP-Server ausgestellt haben. Nehmen wir an, dass der Siebel Server so konfiguriert ist, dass er sich gegen den LDAP-Server evlabnet9: 392 authentifiziert. Das Server-Zertifikat für diesen LDAP-Server wird vom Zertifikatserver evlab1 ausgegeben. Daher muss die CMS-Datei nur CA-Zertifikat für evlab1 enthalten. Es muss kein Serverzertifikat für evlabnet9 enthalten. Wenn der Siebel Server so konfiguriert ist, dass er sich gegen einen anderen LDAP-Server authentifiziert, der sein Serverzertifikat von evlab1 erhält, müssen Sie die CMS-Datei nicht aktualisieren. Generieren einer CMS-Datei Mit dem folgenden Verfahren können Sie IBM GSK iKeyMan so konfigurieren, dass CMS-Schlüsseldatenbanken unterstützt und eine CMS-Datei generiert wird. Bevor Sie IBM GSK iKeyMan konfigurieren, installieren Sie den IBM LDAP Client und die GSKit-Software, wie in den vorherigen plattformspezifischen Abschnitten unter diesem Thema LDAP Client Software installieren beschrieben. Sie müssen auch den Patch installieren, der sich im Verzeichnis OSplatform ServerAncillaryIBMLDAP5.1Clientenu befindet, auf dem OSplatform beschreibt. Das Patch ist in einer komprimierten Datei P510 OSplatform -02H enthalten, wobei OSplatform die Plattform wie folgt beschreibt: W Windows (P510W-02H. zip) S HP Solaris (P510S-02H. tar. Z) H HPUX (P510H-02H. tar) A AIX (P510A-02H. tar. Z) Eine Readme-Datei in der komprimierten Datei P510x-02H beschreibt die Installation dieses Patches. Dieses Patch aktualisiert IBM GSK iKeyMan auf eine neuere Version. Frühere Versionen von IBM GSK iKeyMan enthielten abgelaufene CA-Zertifikate und konnten keine neuen CMS-Dateien erstellen. So konfigurieren Sie GSK iKeyMan zur Unterstützung von CMS-Schlüsseldatenbanken Installieren Sie IBM GSK iKeyMan auf Ihrem Computer. Weitere Informationen finden Sie unter Installieren und Konfigurieren von IBM GSK iKeyMan. Bestimmen Sie, welche Zertifizierungsstelle das Serverzertifikat für Ihren LDAP-Server ausgestellt hat, und erhalten Sie dieses CA-Zertifikat. Kopieren Sie das CA-Zertifikat auf das Gerät, auf dem GSK iKeyMan installiert ist. Erstellen Sie eine neue CMS-Datei mit iKeyMan. Navigieren Sie zu GSKinstallationdirectory / bin, wobei GSKinstallationdirectory das Verzeichnis ist, in dem Sie IBM GSKit und GSK iKeyMan installiert haben. Geben Sie den folgenden Befehl ein: Um eine neue CMS-Datei zu erstellen, wählen Sie Neu aus dem Menü Key Database File. Geben Sie im Dialogfenster den Schlüsseldatenbanktyp als CMS an und geben Sie den Dateinamen (mit der Dateierweiterung. kdb) und den Speicherort an, an dem Sie Ihre CMS-Datei speichern möchten. Klicken Sie auf OK. Geben Sie im Dialogfeld Password Prompt (Kennwort-Eingabeaufforderung) das Kennwort ein, und bestätigen Sie es, und aktivieren Sie die Option Stash the password (Kennwort) in einer Datei. Klicken Sie auf OK. Die Option stash password erzeugt eine Datei mit demselben Namen wie die CMS-Datei, aber mit der Endung. sth. Die Datei wird an der gleichen Stelle wie die CMS-Datei erstellt. Beispielsweise wird ldapkey. sth erstellt, wenn Ihre CMS-Datei ldapkey. kdb heißt. Wenn Sie die Option stash password verwenden, klicken Sie auf OK, um die Erstellung der STAM-Datei zu bestätigen. Die neu erstellte CMS-Datei wird im iKeyMan-Hauptfenster geöffnet. Fügen Sie der CMS-Datei, die im vorherigen Schritt erstellt wurde, ein oder mehrere CA-Zertifikate hinzu. Klicken Sie auf der Signer Certificates-Eingabeaufforderung auf Hinzufügen. Geben Sie im Dialogfeld "CA39s-Zertifikat aus einer Datei hinzufügen" den Datentyp an und geben Sie den Namen der Zertifikatsdatei und den Speicherort an, an dem Sie Ihre Datei speichern möchten. Verwenden Sie ggf. die Schaltfläche Durchsuchen, um den Speicherort der CA-Zertifikatdatei anzugeben. Klicken Sie auf OK. Wenn das Zertifikat im Base64-Format gespeichert wurde, geben Sie den Datentyp Base-64-codierte ASCII-Daten an. Wenn das Zertifikat im DER Binärformat gespeichert wurde, geben Sie den Datentyp DER Binärdaten an. Wiederholen Sie den vorherigen Unterschritt für jedes CA-Zertifikat, das Sie der CMS-Datei hinzufügen möchten. Stellen Sie sicher, dass Sie den richtigen Datentyp auswählen. HINWEIS: 160 Für LDAP-Server, deren Serverzertifikat von einer neuen Zertifizierungsstelle ausgestellt wurde, fügen Sie einfach das CA-Zertifikat zur CMS-Datei hinzu, anstatt eine neue CMS-Datei für jeden LDAP-Server anzulegen. Aktivieren von SSL für den Siebel LDAP-Sicherheitsadapter Gehen Sie wie nachfolgend beschrieben vor, um SSL für den Siebel LDAP-Sicherheitsadapter zu konfigurieren. Weitere Informationen über die Konfiguration des LDAP-Sicherheitsadapters finden Sie in den folgenden Abschnitten in diesem Kapitel: So aktivieren Sie SSL für den Siebel LDAP-Sicherheitsadapter Kopieren Sie die Dateien ldapkey. kdb (die CMS-Datei) und ldapkey. sth, die Sie soeben im vorherigen Verfahren erstellt haben Server-Maschine, auf der Sie AOM-Komponenten ausführen, die die LDAP-Authentifizierung unterstützen. Beispielsweise können Sie diese Dateien in das Verzeichnis ssldb kopieren. Ändern Sie die Konfiguration des LDAP-Sicherheitsadapters. Konfigurieren Sie die folgenden Parameter: Port 636 Der SSL-Port ist für den LDAP-Server konfigurierbar. Überprüfen Sie die tatsächliche Portnummer, die der LDAP-Server für SSL verwendet. Geben Sie den absoluten Pfad zur CMS-Datei an, z. B. d: ssldbldapkey. kdb. Starten Sie den Siebel Server neu (wenn Sie LDAP auf einem Siebel Server konfigurieren).Converting dezimal auf hexa, octal und binary Hey Leute, zuerst möchte ich sagen, sorry, wenn im keine Anstrengungen auf meine Arbeit hier, aber im wirklich neu zu machen Assembler-Sprache, ich gerade erst begonnen wie vor einem Monat ohne gute Quelle. Ich habe ein Problem hier, ich wurde gebeten, ein Programm, das ein Benutzer einen Dezimalwert eingibt, und kann den Dezimalwert in hexa, oktal und binär. Ich habe bereits die Codes für jeden. Dont mind die vor-deklarierten Variablen, weil dies sind nur Teile aus meinem Programm. Dabei sind diese drei Teile einer Menüoption. Die Frage ist, wann immer ich eine TRY / AGAIN-Funktion (fragt Benutzer, wenn y / n, wenn ja, springt zurück zu diesem Menü, wenn n, geht zurück zum ersten Menü), der Wert, dass die hexa, oktal und Binäre Stapel. SZENARIO: 1Deci zu Hex 2Deci zu Octal 3Deci zu Binary Benutzereingaben 1 (für hexadezimale Konvertierung) Benutzereingaben 10 (dezimal) Programm zeigt 000A (was richtig ist) Programm fragt, ob Benutzer wieder Eingänge Benutzer versuchen will geht y zurück auf das gleiche Menü Benutzereingaben 3 (für Binärumwandlung) Benutzereingaben 10 (dezimale) Programmanzeigen 00001010 (die korrekt ist), Programm fragt, ob der Benutzer erneut Benutzereingaben ausprobieren möchte y geht zurück zu demselben Menü Benutzereingaben 1 (für hexadezimale Umwandlung) Benutzereingaben 10 (Dezimalen) Programm zeigt 030 (das ist korrekt) Programm fragt, ob Benutzer will erneut versuchen Benutzer-Exits-Programm Und das gleiche mit Oktal, aber in hexadezimal, es gibt 0024. Jede Hilfe wäre dankbar, krank versuchen, zu bewältigen, aber zu erinnern Sie, ich habe gerade angefangen zu studieren Montage letzten Monat. EDIT: Eingeschlossene vordefinierte Variablen. Vor 4 Jahren von cookiemonstah. N / a Jede Ziffer ist ein Vielfaches einer Zehnerpotenz. Die vierte Ziffer von 9,321 ist 9103. Summe jedes dieser Vielfachen von Potenzen von zehn (die Basis) und youll haben das binäre Äquivalent des Wertes. Wenn die Ziffern als ASCII-Subtraktion 30H (48d) eingegeben wurden, um sie zu einem unverpackten BCD zu machen: 01, 02, 03, 04, 07. Nach der Umwandlung in einen vorzeichenlosen binären Wert ist es ziemlich einfach, sie dann in Hexadezimal und Oktal umzuwandeln Dass die Basis 16 und 8 kompakte Binärdarstellungen sind. So, dass: 15 0000 1111 0F Hex 0 001 111 17 Octal Hoffe, dass hilft. Dieser Artikel ist seit mehr als sechs Monaten tot. Starten Sie stattdessen eine neue Diskussion. Fragen Sie eine andere Software-Entwicklung Frage HELLO, ich habe ein Projekt (c) auf Quiz (Menü basiert) und im in 11 (cbse) Ich möchte den Quellcode mit dem folgenden 1.admin Menü hellip Hallo haben. im Versuch, Daten aus der Tabelle TBLORDERITEM FLDORDERITEMID FLDORDERID FLDPRODUCTID FLDQTY FLDSUBTOTAL grdproductlist. DataSource (quotSELECT FLDORDERID, FLDPRODUCTID, FLDQTY, FLDSUBTOTAL VON TBLORDERITEMA15428 zu bekommen, wo hellip etwas Hilfe bei diesem Array benötigen. Ich versuche, die Summe der geraden Zahlen und die Summe zu erhalten der ungeraden Zahlen hellip Hallo verwenden. so ist dies eigentlich eine Fortsetzung aus einer anderen Frage von mineHere (daniweb / Programmierung / Software-Entwicklung / Threads / 506795 / dynamisch-Add-Werte-in-Datagridview-Zelle-von-List-Box-vb2010) Aber ich wurde geraten, einen neuen Thread als die ursprüngliche Frage zu starten hellip Wenn ich dieses progammatisch ausführe, bekomme ich einen Tisch mit Zeilenhöhen viel größer als wenn ich dies manuell mache. We ist der hellip Ich habe eine 2d Matrix mit Dimension ( 3, n) genannt, möchte ich die Normalisierung und Kreuzprodukt von zwei Arrays (b, z) berechnen (siehe hellip OK, so dass HostGator aus irgendeinem Grund gcc / g nicht mehr erlaubt, es sei denn, Sie haben ein Designated Server-Konto, das Ist eine Menge Geld zu hellip Hallo. Ich habe ein Formular mit Listenfeld. Lstprodukt, datagridview. Grdorder und button: btnaddline. Lstprodukt hat eine Liste von Produkt-IDs ausgewählt aus hellip Hilfe Ich möchte ein Java-Programm, das die höchste sogar ganzzahlige unter den Werten, die vom Benutzer eingegeben zu finden. Stoppen Sie fragen Werte, wenn hellip Schreiben Sie ein C-Programm, das eine 10-Element-Array von zufälligen Integern (0 bis 9) erstellen sollte. Das Programm sollte alle Zahlen beinhalten. Befehlszeilenregel API-Befehle Der Befehl Get Versioning liefert einen ganzen Slew an Software - und Hardwareinformationen. Itx2019s nützlich, wenn Ihre Client-Anwendung erfordert eine minimale Versionsnummer von einigen Ressource in Sphero, um zu betreiben. Die Datensatzstruktur besteht aus Feldern für jede Ressource, die die Versionsnummer gemäß dem angegebenen Format kodiert. Diese Satzversionsnummer, die momentan auf 02h gesetzt ist. Dies erhöht sich, wenn mehr Ressourcen hinzugefügt werden. Modellnummer derzeit 02h für Sphero Code Hardware-Version (im Bereich von 1 bis 9) Haupt Sphero Anwendungsversion Byte Haupt Sphero Anwendungs ​​Revision Byte Bootloader-Version in gepackten knabbern Format (dh 32h ist Version 3.2) orbBasic Version verpackt knabbern Format (zB 4.4) Macro Executive Version im gepackten Nibble-Format (4.4) großer Revisionscode diese Firmware implementiert API-Moll-Revision-Code diese Firmware implementiert Set Device Name x2013 10h Dies früher das Bluetooth-Modul neu programmiert, um mit einem anderen Namen zu werben, aber dies ist nicht mehr der Fall. Dieser zugewiesene Name wird intern gehalten und im Rahmen des unten aufgeführten Get Bluetooth Info-Dienstes erstellt. Die Namen werden bei 48 Zeichen in der Länge abgeschnitten, um UTF-8 Sequenzen zu unterstützen, können Sie etwas länger senden, aber das Extra wird verworfen. Dieses Feld ist standardmäßig der Bluetooth-Werbename. Um den Bluetooth-Werbenamen vom Standard-Sphero-RGB-Muster zu ändern, müssen Sie innerhalb von 60 Sekunden nach dem Einschalten den RN-42 in den RN-42 eingeben, den Befehl SN, mynewname ausfüllen und mit r, 1 rebooten. Holen Sie sich Bluetooth Info x2013 11h der ASCII-Name des Balls (standardmäßig Bluetooth-Werbung Name) die Bluetooth-Adresse in ASCII-ID-Farben der Ball blinkt, wenn nicht verbunden Das ASCII-Name-Feld wird mit Nullen auf seine maximale Größe aufgefüllt. Dies ist als eine Höflichkeit für Clients, die donx2019t haben eine Methode zum Abfragen ihrer zugrunde liegenden Bluetooth-Stack für diese Informationen zur Verfügung gestellt. Set Auto Reconnect x2013 12h Dies konfiguriert die Steuerung des Bluetooth-Moduls in seinem Versuch, automatisch mit dem letzten mobilen Apple-Gerät wieder zu verbinden. Dies ist ein Höflichkeitsverhalten, da der Apple Bluetooth-Stack doesnapost die automatische Wiedereinschaltung selbst initiiert. Die beiden Parameter sind einfach: Flag ist 00h zu deaktivieren oder 01h zu aktivieren, und Zeit ist die Anzahl der Sekunden nach dem Einschalten, in denen die automatische Wiederverbindung zu aktivieren. Zum Beispiel, wenn die Zeit 30 dann wird das Modul wieder versuchen, 30 Sekunden nach dem Aufstehen wieder aufzubauen. (Siehe RN-APL-EVAL S. 7 für weitere Informationen) Auto Reconnect wiederherstellen x2013 13h Dies gibt die Bluetooth Auto Reconnect Werte zurück, wie im Befehl x201CSet Auto Reconnectx201D definiert. Get Power State x2013 20h Dies gibt den aktuellen Energiezustand und einige zusätzliche Parameter an den Client zurück. Sie sind unten detailliert. Record Versionscode x2013 Die folgende Definition ist für 01h High-Level-Zustand des Stromnetzes, wie vom Power Manager abgeschlossen: 01h Battery Charging, 02h Batterie OK, 03h Battery Low, 04h Battery Critical Aktuelle Batteriespannung skaliert in 100ths eines Volt 02EFh Wäre 7,51 Volt (unsigned 16-Bit-Wert) Um Batteriestrom zu sparen, schaltet Sphero normalerweise nach einem Zeitraum der Inaktivität ein. Ab Werk ist dieser Wert auf 600 Sekunden (10 Minuten) eingestellt, dieser API-Befehl kann jedoch auf einen Wert von 60 Sekunden oder mehr geändert werden. Der Inaktivitätszeitgeber wird jedes Mal zurückgesetzt, wenn ein API-Befehl über Bluetooth empfangen wird oder ein Shell-Befehl im User-Hack-Modus ausgeführt wird. Darüber hinaus wird der Timer kontinuierlich zurückgesetzt, wenn ein Makro ausgeführt wird, es sei denn, das Flag MFSTEALTH wird gesetzt, und das gleiche für orbBasic, wenn das Flag BFSTEALTH nicht gesetzt ist. Jump To Bootloader x2013 30h Dieser Befehl fordert einen Sprung in den Bootloader, um einen Firmware-Download vorzubereiten. Es gelingt immer, weil man immer aufhören kann, wo man ist, alles abschalten und die Ausführung ablegen. Alle Befehle nach diesem müssen die Bootloader-Protokollspezifikation erfüllen, die ein separates Dokument ist. Beachten Sie, dass nur, weil Sie immer Vektor in den Bootloader, es doesnapost bedeuten, können Sie alles getan. Weitere Details werden im zugehörigen Dokument erklärt, aber kurz: Der Bootloader doesnapost implementiert den gesamten Core Device Message Set und wenn der Akku als zu niedrig angesehen wird, um Reflashing-Operationen durchzuführen, können Sie nur noch in die Hauptanwendung zurückkehren. Führen Sie die Diagnose der Ebene 1 aus x2013 40h Antwort 1: Antwort 2: Dies ist ein Befehl auf Entwicklerebene, der dazu dient, fehlerhaftes Verhalten zu diagnostizieren. Die meisten Systemzähler, Prozessflags und Systemzustände werden in menschlich lesbare ASCII decodiert. Es gibt zwei Antworten auf diesen Befehl: eine einfache Antwort, gefolgt von einer großen asynchronen Nachricht, die die Ergebnisse der Diagnosetests enthält. Ab der FW-Version 0.99 war die Antwort weit über 1K in der Länge und ähnlich zu: Führen Sie die Stufe 2-Diagnose aus x2013 41h Dies ist ein Nur-Entwickler-Befehl zur Diagnose eines anomalen Verhaltens. Es ist viel weniger informativ als die Level 1-Befehl, aber es ist im Binär-Format und einfacher zu analysieren. Hier ist das Layout des Datensatzes, der derzeit 58h Bytes lang ist: xFFFCRecord Versionscode x2013 Die folgende Definition ist für 01h Gute Pakete empfangen (unsigned 32-bit Wert) Pakete mit einer schlechten Device ID (unsigned 32-bit Wert) Pakete mit (Vorzeichenloser 32-Bit-Wert) Pakete mit einer fehlerhaften Prüfsumme (unsignierter 32-Bit-Wert) Empfangs-Pufferüberläufe (unsignierter 32-Bit-Wert) Gesendete Nachrichten (unsigned 32-Bit-Wert) Sendepufferüberläufe (vorzeichenloser 32-Bit-Wert) Grund für den letzten Start (8-Bit-Wert) 16 verschiedene Zählungen der Startgründe Ladezyklen (vorzeichenloser 16-Bit-Wert) Wachezeit in Sekunden seit letzter Ladung (unsigned 16 (Nicht signierter 32-Bit-Wert) Anzahl der I2C-Busfehler (vorzeichenloser 16-Bit-Wert) Gyro-Einstellungszähler Lebensdauerzähler der automatischen GACs (unsigned 32-bit) Wert) Diese Befehle sind spezifisch für die Funktionen, die Sphero bietet. Set Heading x2013 01h Damit kann der Smartphone-Client die Ausrichtung von Sphero anpassen, indem er eine neue Referenzüberschrift in Grad angibt, die von 0 bis 359 reicht. Der Ball reagiert sofort auf diesen Befehl, wenn die Stabilisierung aktiviert ist. In FW Version 3.10 und später werden auch die Maximalwertzähler für den Geschwindigkeitskreisel gelöscht, wodurch die Generierung einer asynchronen Nachricht, die den Client auf dieses Ereignis hinweist, wirksam wieder freigegeben wird. Festlegen der Stabilisierung x2013 02h Dies schaltet die interne Stabilisierung von Sphero ein oder aus, wobei die IMU dazu verwendet wird, die Ballapos-Ausrichtung auf ihre verschiedenen Einstellpunkte abzustimmen. Der Flagwert ist wie erwartet, 00h für aus und 01h für on. Die Stabilisierung wird standardmäßig aktiviert, wenn Sphero einschaltet. Sie sollten die Stabilisierung deaktivieren, wenn Sie Sphero als externen Eingabecontroller verwenden oder sogar während der Testphase die Batteriespannung sparen (orbBasic, etc.). Wenn das Sensornetzwerk ohne Sensoren, die die IMU-Wartezeit betreiben, fehlt, wird ein Fehler zurückgegeben Gibt es keine Rückkopplung zur Kontrolle Stabilisierung. Rotationsgeschwindigkeit einstellen x2013 03h Hiermit können Sie die Drehrate steuern, die Sphero für neue Kopfzeilenbefehle verwendet (DID 02h. CID 01h). Ein niedrigerer Wert bietet bessere Kontrolle, aber mit einem größeren Wenderadius. Ein höherer Wert ergibt schnelle Umdrehungen, aber Sphero kann auf sich selbst rollen und die Kontrolle verlieren. Der Befehlswert ist in Einheiten von 0,784 Grad / Sek. Wenn Sie also einen Wert von C8h einstellen, wird die Drehrate auf 157 Grad / s eingestellt. Ein Wert von 255 springt auf das Maximum (derzeit 400 Grad / Sek.). Ein Wert von null doesnapost machen viel Sinn also itaposs interpretiert als 1, das Minimum. Applikations-Konfigurationsbaustein setzen x2013 04h Damit können Sie einen 32-Byte-Block von Daten aus dem Konfigurationsbaustein schreiben, der für die exklusive Nutzung durch Anwendungen reserviert ist. Die Sphero-Firmware interpretiert sie nicht auf der Weise innen oder heraus. Get Application Configuration Block x2013 05h Hiermit können Sie den Anwendungskonfigurationsbaustein abrufen, der für die exklusive Nutzung durch Anwendungen reserviert ist. Selbststufe x2013 09h asynchrone Antwortnachricht Dieser Befehl steuert die Selbstniveauroutine. Die Selbstniveauroutine versucht, eine horizontale Ausrichtung zu erreichen, bei der Nick - und Rollwinkel kleiner als die vorgesehene Winkelgrenze sind. Nachdem beide Winkelgrenzen erfüllt sind, steuern die Optionsbits den Schlaf, den Endwinkel (Überschrift) und die Steuerung ein / aus. Eine asynchrone Nachricht wird zurückgegeben, wenn die Selbstniveauroutine abgeschlossen ist (nur, wenn sie durch API-Aufruf gestartet wird). Die erforderlichen Parameter sind: 0 bricht die laufende Routine ab. 1 die Routine startet. 0 gerade stoppt. 1 dreht sich zur Überschrift gleich der Anfangsüberschrift. 0 bleibt nach dem Nivellieren wach. 1 geht nach dem Nivellieren ein. 0 schaltet die Steuerung aus. 1 Blinkanlage auf (nach Nivellierung). Verwenden Sie den Standardwert Stellen Sie den Maximalwinkel für die Vollendung ein (in Grad) Verwenden Sie den Standardwert Maximale Sekunden setzen, um die Routine auszuführen Verwenden Sie den Standardwert Setzen Sie den erforderlichen x201Ctest für levelnessx201D auf 10True Time (in Millisekunden) Standardwerte sind: Winkel 3 Timeout 15 True Time 30 (300 Millisekunden) True Time 10 gibt die Anzahl der Millisekunden an, die der Nick - und Rollwinkel unterhalb der Winkelgrenze bleiben muss, nachdem die Routine abgeschlossen ist. Wenn einer der Werte die Winkelgrenze überschreitet. Wird der Ball wieder selbstnivellieren und der Genauigkeitstimer startet erneut von 0. Ergebnisbyte Das Ergebnisbyte kann sein: Selbstpegelwinkelgenauigkeit Wir haben festgestellt, daß der Realwinkel hinter dem gemessenen Winkel etwas zurückliegt. Außerdem können sich die Winkel etwas verschieben, nachdem x201Clevelx201D erreicht ist, wenn die Motoren anhalten und das System zum Stillstand kommt. Ein True Time-Wert von 30 (300 Millisekunden) ist im Allgemeinen gut genug, um die Winkel innerhalb eines Grades oder zwei der angegebenen Winkelgrenze zu halten. Wenn eine größere Genauigkeit erforderlich ist, kann der Wert True Time auf 255 (2,55 Sekunden) erhöht werden. Control System On / Off Wenn die Steuerung ausgeschaltet ist, kann natürlich keine Selbstnivellierung erfolgen. Es gibt mehrere Pfade zu diesem Zustand: Wenn die Sensoren festgestellt werden, dass sie sich in einem Fehlerzustand befinden, wird die Selbstnivellierung übersprungen. Sleep-Anfragen werden immer noch auslösen die gehen schlafen Routine. Die Steuerung kann mit dem x201CSet Stabilizationx201D API-Aufruf ausgeschaltet werden. Dies wird für bestimmte Spiele verwendet, bei denen Sphero als Controller in der Hand gehalten wird. Die Steuerung kann mit einem Makro ausgeschaltet werden. Die Steuerung kann mit dem Shell-Befehl x201Cl0x201D ausgeschaltet werden. Die Steuerung kann mit dem Shell-Befehl x201Cx11x201D ausgeschaltet werden. Die Steuerung kann über ein orbBasic Programm ausgeschaltet werden. Wenn die Selbststufe aufgerufen wird, wird die Nivellierung übersprungen, wenn die Sensoren tot sind, da es keinen Rückgriff darauf gibt. Für alle anderen Fälle läuft die Selbstniveauroutine. Da wir das System Options Flag haben, um die Selbst-Level-Routine zu deaktivieren, ist es einfach, dieses Verhalten zu überschreiben. Verwenden Sie das Steuersystem ein / aus-Bit, um festzulegen, ob das Steuersystem ein - oder ausgeschaltet werden soll, nachdem die Selbstniveau-Routine abgeschlossen ist. Das aktuelle Verhalten ist, wenn ein Makro oder orbBasic Programm läuft und der Ball beginnt zu laden, die Selbst-Ebene Routine läuft (aber es doesnapost gehen schlafen). Dieses Verhalten könnte für einige Programme erwünscht sein. System Options Flag Siehe DID 02h. CID 35h für Details. Sleep-Anfragen, die mit diesem Self-Level-API-Aufruf ausgeführt werden, während das Deaktivierungs-Flag gesetzt ist, verursachen weiterhin, dass der Ball schlafen geht. Set Data Streaming x2013 11h Bitweiser Selektor für mehr Datenquellen zu Stream (optional) MASK und PCNT sind ziemlich offensichtlich, aber die N. M Begriffe tragen ein wenig mehr Erklärung. Derzeit läuft das Steuersystem bei 400Hz und weil itaposs ziemlich unwahrscheinlich, dass Sie Daten mit dieser Rate sehen wollen, ermöglicht N können Sie, dass nach unten zu teilen. N 2 liefert Datenabtastwerte bei 200 Hz, N 10, 40 Hz usw. Jede Datenabtastung besteht aus einem Quotienten aus den einzelnen Sensorwerten, wie durch die MASK definiert. Der M-Wert definiert, wie viele Bilder im Speicher gesammelt werden, bevor das Paket emittiert wird. In diesem Sinne steuert es die Latenz der empfangenen Daten. Die Erhöhung von N und die Anzahl der in MASK eingestellten Bits steuern den erforderlichen Durchsatz. Sie sollten mit verschiedenen Werten von N. M und MASK experimentieren, um zu sehen, was am besten für Sie arbeitet. Das MASK2-Bitfeld wurde hinzugefügt, um MASK zu erweitern, wenn wir mehr als 32 Datenquellen entwickelten. Der API-Prozessor ist so implementiert, dass dieser Wert optional ist, wenn er darin enthalten ist, dann werden alle Bits auf Null gesetzt. (Hinzugefügt in FW 1.15) Jeder Parameter wird als 16-Bit-Ganzzahl mit Vorzeichen zurückgegeben. Die folgende Tabelle definiert die Bits in MASK zu den Parametern mit den angegebenen Bereichen und Einheiten. Wenn der Befehl mit einer MASK von Null ausgegeben wird, ist das Daten-Streaming deaktiviert. Sphero enthält eine leistungsfähige Analysefunktion, um Beschleunigungsmesserdaten zu filtern, um Kollisionen zu erkennen. Da dies ein großartiges Beispiel für ein High-Level-Konzept, dass Menschen excel und x2013 aber Roboter nicht x2013 eine Reihe von Parametern das Verhalten kontrollieren. Wenn eine Kollision erkannt wird, wird eine asynchrone Nachricht an den Client erzeugt. Konfigurationsfelder Die Konfigurationsfelder sind wie folgt definiert: zu verwendender Erkennungsmethode-Typ. Derzeit ist die einzige Methode unterstützt 01h. Verwenden Sie 00h, um diesen Dienst vollständig zu deaktivieren. Eine einstellbare 8-Bit-Schwelle für die X - (links / rechts) und Y (vorne / hinten) Achsen von Sphero. Ein Wert von 00h deaktiviert den Beitrag dieser Achse. Ein einstellbarer 8-Bit-Wert für die X - und Y-Achse. Diese Einstellung wird durch die Geschwindigkeit geregelt und dann zu Xt addiert, um den endgültigen Schwellenwert zu erzeugen. Eine 8-Bit-Nachkollisions-Totzeit, um ein erneutes Auslösen zu verhindern, das in Schritten von 10 ms spezifiziert ist. Durch die Streaming-Schnittstelle liefert Sphero Echtzeit-Standortdaten in Form von (X, Y) - Koordinaten auf der Grundebene. Wenn Sphero aufwacht, sind die Koordinaten (0,0) und die Position 0, die der positiven Y-Achse gegenüberliegt, mit der positiven X-Achse nach rechts. Mit diesem Befehl können Sie Sphero an eine neue Position verschieben und die Ausrichtung der Locator-Koordinaten mit den IMU-Überschriften ändern. Wenn Sphero einen Satzüberschrift-Befehl empfängt, ändert er die Richtung, die der Überschrift 0 entspricht. Der Locator kompensiert dies standardmäßig durch Ändern seines Wertes für Gier-Tara, so daß die Y-Achse immer noch in der gleichen Wirkrichtung zeigt. Zum Beispiel, wenn Sie aufwachen Sphero und fahren geradeaus werden Sie fahren die Y-Achse. Wenn Sie die Einstellung Kopfzeile in der Laufwerkanwendung um 90 Grad drehen, haben Sie immer noch Überschrift 0, aber der Locator weiß, dass Sie um 90 Grad gedreht haben und jetzt mit der X-Achse nach unten zeigen. Diese Funktion kann deaktiviert werden. In diesem Fall weiß der Locator nichts über den Befehl Set Heading. Dies kann zu einigen seltsamen Ergebnissen führen. Wenn Sie beispielsweise nur Rollbefehle mit der Kopfzeile 0 fahren und Kopfzeilenbefehle zum Ändern der Richtung setzen, wird der Locator Ihren gesamten Pfad als auf der Y-Achse liegend wahrnehmen. Bit 0 x2013 Bestimmt, ob die Kalibrierbefehle automatisch den Gier-Tara-Wert korrigieren. Wenn false, stimmt die positive Y-Achse mit der Überschrift 0 überein (vorausgesetzt, Sie ändern die Gier-Tara nicht manuell mit diesem API-Befehl). Andere Bits - Reserviert Die aktuellen (X, Y) Koordinaten von Sphero auf der Grundplatte in Zentimetern. Steuert, wie die X, Y-Ebene mit dem Koordinatensystem Spherox2019s ausgerichtet ist. Wenn dieser Parameter auf Null gesetzt wird, bedeutet dies, dass die Gier 0 der nach unten gerichteten Y-Achse in positiver Richtung entspricht. Der Wert wird im Bereich 0-359 interpretiert. Set Accelerometer Range x2013 14h Diese Befehle Sphero rollen entlang des bereitgestellten Vektors. Sowohl eine Geschwindigkeit als auch eine Überschrift sind erforderlich, wobei letztere bezüglich der letzten kalibrierten Richtung betrachtet wird. Ein Zustandswert ist ebenfalls vorgesehen. In der CES-Firmware wurde dies verwendet, um das Steuersystem zu torren, um entweder dem Roll-Vektor zu folgen oder ihn zu ignorieren und ein optimales Bremsen auf Nullgeschwindigkeit anzuwenden. Detaillierte Informationen finden Sie in Anhang C. Die Client-Konvention für die Überschrift folgt den 360 Grad auf einem Kreis, bezogen auf den Ball: 0 ist geradeaus, 90 ist nach rechts, 180 ist zurück und 270 nach links. Der gültige Bereich ist 0..359. Set Raw Motor Werte x2013 33h Damit können Sie einen oder beide Motorausgangswerte übernehmen, anstatt das Stabilisierungssystem zu steuern. Jeder Motor (links und rechts) benötigt einen Modus (siehe unten) und einen Leistungswert von 0 - 255. Dieser Befehl deaktiviert die Stabilisierung, wenn beide Modi arenapost quotignorequot, so dass Sie müssen sie wieder aktivieren über CID 02h, sobald Sie fertig sind Ist unterbrochen) Bremse (Motor ist kurzgeschlossen) Ignorieren (Motormodus und Leistung bleibt unverändert) Motion Timeout einstellen x2013 34h Hiermit wird die ultimative Zeitüberschreitung für den letzten Bewegungsbefehl festgelegt, damit Sphero im Falle eines abgestürzten (oder unterbrochenen) ) - Client-Anwendung Der TIME-Parameter wird in Millisekunden ausgegeben und nach dem Aufwachen auf 2000 gesetzt. Wenn das Steuersystem aktiviert ist, löst das Timeout einen Stopp aus, ansonsten wird für beide Motoren ein Null-PWM angewiesen. Diese Quotierung wird bei einem Makro gesperrt Die mit dem Flag MFEXCLUSIVEDRV ausgeführt wird, oder ein orbBasic-Programm wird mit einem ähnlichen Flag ausgeführt, BFEXCLUSIVEDRV. Beachten Sie, dass Sie diese Aktion aktivieren müssen, indem Sie die Option Systemoption festlegen 4. Permanente Option Flags setzen x2013 35h Weist die permanenten Optionsflags dem angegebenen Wert zu und Schreibt sie in den Konfigurationsblock für die Persistenz über Leistungszyklen. Siehe unten für die Bit-Definitionen. Holen Sie sich Permanent Option Flags x2013 36h Gibt die permanenten Option Flags als ein Bitfeld wie unten definiert: Set, um zu verhindern, dass Sphero sofort schlafen, wenn in das Ladegerät platziert und über Bluetooth verbunden. Um Vector Drive zu aktivieren, dh, wenn Sphero gestoppt wird und ein neuer Rollbefehl ausgegeben wird, erreicht er die Überschrift, bevor er sich bewegt. Deaktivieren Sie die Selbstnivellierung, wenn Sphero in das Ladegerät eingesetzt wird. Legen Sie fest, dass die Heck-LED immer eingeschaltet ist. Einstellung, um Bewegungs-Timeouts zu aktivieren (siehe DID 02h, CID 34h) Zur Aktivierung des Einzelhandels-Demomodus (wenn er im Ladegerät platziert wird, läuft ein langsamer Regenbogen-Makro für 60 Minuten und schläft dann ein). Diese speichert die angehängte Makro-Definition in den temporären RAM-Puffer für die spätere Ausführung. Jede vorhandene Makro-ID kann über diesen Befehl gesendet werden und wird dann in ID FFh umbenannt. Wenn dieser Befehl gesendet wird, während ein temporärer oder Stream-Makro ausgeführt wird, wird er beendet, damit sein Speicherplatz überschrieben werden kann. Wie bei allen Makros beträgt die längste Definition, die gesendet werden kann, 254 Byte (was bedeutet, dass DLEN FFh ist). Sie müssen dies mit einem Befehl Ausführen des Makros beenden, um die Ausführung zu starten. Save Macro x2013 52h Hiermit wird die angehängte Makrodefinition in den persistenten Speicher zur späteren Ausführung gespeichert. Dieser Befehl kann auch gesendet werden, wenn andere Makros ausgeführt werden. Sie erhalten eine Fehlerantwort, wenn Sie versuchen, eine ID-Nummer im Systemmakrobereich zu senden, 255 für das Temp-Makro und die ID eines vorhandenen Benutzer-Makros im Speicherblock. Wie bei allen Makros beträgt die längste Definition, die gesendet werden kann, 254 Byte (was bedeutet, dass DLEN FFh ist). Ein spezieller Fall dieses Befehls besteht darin, die Ausführung des Stream-Makros, ID 254, zu starten und fortzusetzen. Wenn ein temporäres Makro ausgeführt wird, wird es beendet und das Stream-Makro wird gestartet. Wenn ein Stream-Makro bereits ausgeführt wird, wird dieses Chunk angehängt (wenn Platz ist). Stream-Makros beenden über Abort oder mit einem speziellen END-Code. Weitere Informationen finden Sie in der Dokumentation zu Sphero Macro. Reinit Macro Executive x2013 54h Dies beendet alle laufenden Makros und initialisiert das Makrosystem neu. Die Tabelle der persistenten Benutzer-Makros wird gelöscht. Abbrechen Macro x2013 55h Dieser Befehl unterbricht jeden Ausführungs-Makro und gibt sowohl seinen ID-Code als auch die aktuell in Bearbeitung befindliche Befehlsnummer zurück. Eine Ausnahme ist ein Systemmakro, das mit dem UNKILLABLE-Flag-Set ausgeführt wird. Ein normaler Returncode zeigt den ID-Code des abgebrochenen Makros sowie die Befehlsnummer an, bei der die Ausführung gestoppt wurde. Ein Return-ID-Code von 00h zeigt an, dass kein Makro ausgeführt wurde und ein ID-Code mit FFFFh als CmdNum, dass das Makro unkillable war. Get Macro Status x2013 56h Dieser Befehl gibt den ID-Code und die Befehlsnummer des aktuell ausgeführten Makros zurück. Wenn momentan kein Makro läuft, wird 00h für den ID-Code zurückgegeben, während die Befehlsnummer vom letzten Makro übrig bleibt. Festlegen des Makroparameters x2013 57h Mit diesem Befehl können Systemkombinationen, die bestimmte Makrobefehle beeinflussen, selektiv von außerhalb des Makrosystems geändert werden. Die Werte von Val1 und Val2 hängen vom Parameterindex ab. Systemverzögerung 1 zuweisen: Val1 MSB, Val2 LSB Systemverzögerung 2 zuweisen: Val1 MSB, Val2 LSB Systemgeschwindigkeit 1 zuweisen: Val1-Geschwindigkeit, Val2 0 (ignoriert) Systemgeschwindigkeit 2 zuweisen: Val1-Geschwindigkeit, Val2 0 (ignoriert) Val1 Schleifenzähler, Val2 0 (ignoriert) Die Details dieser Systemvariablen werden im Sphero-Makrodokument dargestellt. Append Macro Chunk x2013 58h Diese speichert die angehängte Makro-Definition in den temporären RAM-Puffer für die spätere Ausführung. Sie ähnelt dem Makroaufruf "Temporäre Makros speichern", ermöglicht aber das Erstellen längerer temporärer Makros. Jede vorhandene Makro-ID kann über diesen Befehl gesendet und über den Makroaufruf mit der ID FFh ausgeführt werden. If this command is sent while a Temporary or Stream Macro is executing it will be terminated so that its storage space can be overwritten. As with all macros, the longest chunk that can be sent is 254 bytes (thus requiring DLEN to be FFh ). You must follow this with a Run Macro command (ID FFh ) to actually get it to go and it is best to prefix this command with an Abort call to make certain the larger buffer is completely initialized. Erase orbBasic Storage x2013 60h Sending an orbBasic program to Sphero involves appending blocks of text to existing ones in the specified storage area ( 00h for RAM, 01h for persistent. Complete lines are not required. A line begins with a decimal line number followed by a space and is terminated with a. See the orbBasic Interpreter document for complete information. Possible error responses would be ORBOTIXRSPCODEEPARAM if an illegal storage area is specified or ORBOTIXRSPCODEEEXEC if the specified storage area is full. Execute orbBasic Program x2013 62h This attempts to run a program in the specified storage area beginning at the specified line number. This command will fail if there is already an orbBasic program executing. Abort orbBasic Program x2013 63h Aborts execution of any currently running orbBasic program. Submit Value to Input Statement x2013 64h (32-bit signed val) This takes the place of the typical user console in orbBasic and allows a user to answer an input request. If there is no pending input request when this API command is sent, the supplied value is ignored without error. Refer to the orbBasic language document for further information. Macro Commands Set Stabilization This turns on and off the control system which actively stabilizes Sphero. If you intend to drive around, you should make sure the system that allows you to do it is enabled. Note that sending raw motor commands implicitly disables the stabilization system. Flag is 00h for OFF, 01h for ON with control system reset and 02h for ON without a reset. Set Stabilization This reassigns Spheroaposs current heading to the supplied value. The units are degrees so the valid range is 0 to 359. This forms the basis for future roll commands. For example if you assign the current heading to zero and issue a roll command along heading 90, Sphero will make a right turn. Set Rotation Rate Spheroaposs control system implements an intermediate rate limiter for the yaw axis, feeding smoothed transitions to that servo loop. This sets the maximum increment. As of firmware version 0.92 the formula for converting the rate parameter R to degrees/second is 40 R/2. which yields a smoothed range from 40 to 167 deg/s. This only applies to Roll commands if you use the macro command Rotate Over Time this setting is bypassed. This causes an immediate delay in the execution of additional macro commands while allowing the background ones to keep running. Set SD1, SD2 Macro Codes Quick Reference User Variables 50 unique user controlled variables are supported, half directly named and the other half indexed: Direct variables are named A..Y (or as a..y if you prefer) Z is in the index variable and when accessed, the Yth index is dereferenced, implying Z(Y). There are no zero indices in Basic so the valid range of Y when accessing Z is 1..25 All variables are 32-bit signed integers yielding a range of -2,147,483,647 to 2,147,483,647 . If you want to use fractions then you will need to learn how to use fixed point math. There is currently no support for strings, other than their temporary assembly in print statements. When a program is run, all variables, timers, pending delays and flags are initialized to zero. You can assume a clean slate. System Variables A number of special system variables are implemented allowing enhanced functionality and control. timerA, timerB, timerC Access: read, write Size: 16-bit positive value Available: ver 0.9 (enh in 1.07) xFFFC These are built-in timers that count either up or down by themselves, once per millisecond. They are both readable and writeable. If you assign a value greater than zero to the timer, it will count down and stop at zero. If you assign it a zero it will begin counting up and wrap at 65,535. The following demonstrates a 125ms delay between print statements (though it would be smarter to use the delay keyword): You can also use them to time events: Access: read, write Size: 1-bit value Available: ver 0.9 xFFFC When read, this variable returns 0 if the control system if off and 1 if it is on. When assigned, 0 turns off the control system and any other value turns it on. Access: read Size: 8-bit positive value Available: ver 0.9 xFFFC Returns the approximate speed of the robot in real time. This value is the filtered average speed of both motors so there is some delay between what you see and what this returns. It is read-only and ranges from 0..255 . Access: read Size: 16-bit positive value Available: ver 0.9 Returns the current heading of the robot as reported by the IMU. It is read-only and ranges from 0..359 in the usual convention of how Sphero manages headings. This program turns the back LED on and off in 45 degree sectors download it and spin Sphero like a top. Access: read Size: 16-bit positive value Available: ver 0.9 Returns the current pitch angle of the robot as reported by the IMU. It is read-only and ranges from -90 when the front of Sphero is pointing straight down to 90 when it is pointing straight up. Access: read Size: 16-bit positive value Available: ver 0.9 Returns the current roll angle of the robot as reported by the IMU. It is read-only and ranges from -180 as Sphero rolls to the left and 180 when it rolls completely over to the right. Here is a good program to display the relationship of all three of the above variables. accelX, accelY, accelZ Access: read Size: 16-bit signed value Available: ver 0.9 Returns the current filtered reading from the accelerometer. The range is -32768 to 32767 for full-scale, which defaults to xB18Gs. The convention is that X is the pitch axis, Y is roll and Z is yaw. gyroX, gyroY, gyroZ Access: read Size: 16-bit signed value Available: ver 0.9 Returns the current filtered reading from the rate gyro in units of 0.1 degrees/second. The range is -20000 to 20000 for full-scale. The convention is that X is the pitch axis, Y is roll and Z is yaw. Access: read Size: 16-bit signed value Available: ver 0.9 Returns the current battery voltage in 100ths of a volt, so a return value of 756 indicates 7.56V. Access: read Size: 16-bit signed value Available: ver 0.9 Returns the current state of the power system, as follows: xFFFC1xFFFC-xFFFCBattery is charging xFFFC2 - xFFFCBattery is OK xFFFC3 - xFFFCBattery voltage low xFFFC4 - xFFFCBattery voltage critical Returns a value of 1 when a new roll command has been sent by a Bluetooth client, essentially making this a quotfresh dataquot flag. Reading this system variable automatically sets it to zero. Roll commands usually donapost arrive faster than 10Hz so there isnx2019t much use in checking this flag faster than every 100ms. When this variable reads as one, the other two system variables spdval and hdgval will have fresh values in them. Older versions of orbBasic prior to 1.6 named this cmdval. Access: read Size: 8-bit positive value Available: ver 0.9 Returns the last commanded speed portion of a roll command sent from the smartphone client, ranging from 0 (stop) to 255 (full speed). Access: read Size: 16-bit positive value Available: ver 0.9 Returns the last command heading portion of a roll command sent from the smartphone client ranging from 0 to 359 degrees. Returns a value of 1 when a new RGB LED command has been sent by a Bluetooth client, essentially making this a quotfresh dataquot flag. Reading this system variable automatically sets it to zero. This command allows you to intercept RGB commands and either use the supplied parameters for other purposes or reprocess and re-express it through the RGB command. The same message timing applies here like it does to cmdval. redval, grnval, bluval Access: read Size: 8-bit positive value Available: ver 1.6 Returns the last commanded red, green and blue values of an RGB command sent from the smartphone client. Each value ranges from 0 to 255. This variable provides real time access to the current state of a connected smartphone over Bluetooth. Returns a value of 1 when double-shake event has been detected. Reading this system variable automatically sets it to zero. Access: read Size: 16-bit positive value Available: ver 0.9 Returns the effective acceleration vector that Sphero is experiencing. The IMU computes this as the vector sum of the X, Y and Z axis components so it is expressed here multiplied by 1,000. A perfectly calibrated Sphero will return 1,000 when still, 0 when in free fall and up to 8,000 when being shaken. But since few things are perfect, you will need to apply some soft ranges to convert this hard value to a state. xpos, ypos Access: read Size: 16-bit signed value Available: ver 0.9 Returns the current x and y position of Sphero as determined by the internal locator. The approximate scale is in centimeters. Use the function locate to assign these values. Run this program in the background while using the Drive App to move Sphero in and out of the 40cm circle. Qzero, Qone, Qtwo, Qthree Access: read Size: 16-bit signed value Available: ver 0.9 Spheroaposs IMU is quaternion based and these variables access the elements of that vector. Each value ranges from -10,000 to 10,000 which corresponds to the normalized internal value of -1.0 to 1.0. Reading these system variables faster than 400 Hz is not useful and will return duplicate data. Expressions Simple mathematical operators are supported up to a reasonable expression depth. The goal was to allow an expression anywhere a variable or a numeric literal was permitted, offering the most flexibility. But this may not always be the case (testing will reveal) Few of these are supported but if demanded, I will expand the list. I started with the most useful ones. Returns the square root of any expression that follows. A negative number halts on error. Since orbBasic only supports integer math you need to understand the following identity to really use this for smaller numbers: x221Aa b x221Aa x221Ab where a is the number you want to take the square root of and b is a multiplier to increase the precision. Since the maximum positive value of any expression in orbBasic is around 2.1 million, choosing b as 1002 or 10,000 is a good choice. Consider the following example where you want to take the square root of 42: Let a 42 and b 10000. so sqrt 420000 yields 648. Since x221A10000 100. this answer is 100 times too large. Which lines up with the real answer of x221A42 which is about 6.48 Using a multiplier of 10,000 to extract two extra decimal places of precision in your answer will allow you to take the square root of up to about 214,000 or 4622 xFFFC Access: read Size: 32-bit positive value Available: ver 0.9 xFFFC Size: 32-bit positive value Available: ver 0.9 This returns a pseudo random number between 1 and the value provided, which can be either a literal number or an expression. Use the random statement to reseed the number generator. For example: Access: read Size: 32-bit positive value Available: ver 0.9 This returns the absolute value of an expression, which is always positive. Statements These are a mix of the traditional ones supported in Basic plus extensions that allow interaction with Spheroaposs other systems. Case is regarded so goto is not the same as GOTO. I chose statements in lower case so that a) programs donapost look like shouting in email and b) capitalizing user variables helps them stand out. This is the classic if. dann. else construct. In some variants of Basic the then keyword was implied and therefor optional here it is required. The else clause is optional. You can use and/or to glue two relations together if necessary. Currently the only operators supported are: xFFFC if Agt5 then A5 if AB BC then goto 60 if timer1 0 then print quotOut of timequot if A. B then print quotNot equalquot if Agt1 and Alt10 then quotIn rangequot else return It isnapost possible to accommodate every possible nested statement in the true/false clause processing but the following are supported: print, data, RGB, LEDC, read, rstr, goto, gosub, on X goto/gosub, return, delay, backLED, tron, troffandgoroll. The standard method for looping over a number range in orbBasic is the for..next loop. The loop variable can be any user variable. The start and end values can be literal numbers or expressions x2013 even involving other variables (both user and system). The step value is optional and if excluded, 1 is assumed. Of course this wonapost work if your ending value is lower than your starting one. There is a maximum nesting level and when exceeded an appropriate error is generated. It is acceptable to change the loop variable in the middle of the loop, for example, if you wish to terminate before completing the original numbers of loops. (If you choose to do this just remember that the loop terminates when the loop variable falls outside the end value. k for X 1 to 5 step 2. next x o yields 3 loops with X 1,3,5 for Y 10 to 3 step -3. next x o yields 3 loops with Y 10,7,4 This is pretty straight forward. In both cases the target line number must be a numeric literal (i. e. it cannot be an expression). Not too surprisingly the way to return from a subroutine is to use the return statement. There is a maximum nesting level and when exceeded, an appropriate error is generated. Indexed Branching This statement implements an N-way transfer of control to one of N line numbers. The expression must evaluate to a number between 1 and N, when there are N line numbers in the list. orbBasic wouldnapost be too useful if you couldnapost export information from your running program back to the smartphone client. The print statement takes care of this. The final length of each print statement is limited to 32 bytes. ( If you exceed this, a warning message is printed instead.) The print statement is a sequence of string literals and expressions. String literals get copied exactly as written while expressions are evaluated and their numeric value is expressed. If the symbol precedes an expression, it is evaluated but instead of the number itself a single character, the ASCII value of the expression, is emitted instead. Commas between print elements insert a space in the output. If the final character of the print string is terminated with a semicolon then no linefeed is appended to the message sent back to the client. The output of print is enqueued for transmit so it is possible to fill up that queue faster than it can be emptied over the Bluetooth link. If this happens, data is not lost but program execution is paused until the print statement can complete normally. The single. character is shorthand for print and can help save program space. Access: see below Size: see below Available: ver 1.5 Just like print, the absence of an input statement would severely limit the interaction of orbBasic with the user (or a smartphone app). Unlike most forms of BASIC, our input statement takes two forms because Sphero is a multitasking robot and running an orbBasic program is just ONE of the things it can do. The first form is the traditional blocking type youaposve seen before: In this form the input statement will wait forever until the API command to deliver a number is sent to Sphero. (Note that the API command is DID 02h. CID 64h ) The only other way out is by sending an abort command to the orbBasic interpreter. The second form helps manage the infinite wait: The two extra parameters added to the input statement are respectively how long to wait for an answer (in milliseconds) and what value to assign to the variable if that time limit expires. In this example the program will wait for 3 seconds and if no API command delivers a new value for X, it is assigned a zero. Access: parameterized Size: 16-bit positive value Available: ver 0.9 This is a built-in delay statement that doesnapost use the three timers. It takes one parameter, an expression resolving to the number of milliseconds in the delay. Here is an interesting use of this statement: Programs terminate in the following ways: the final line number is executed, an error occurs, an abort command is sent or an end statement is encountered. This statement allows you to, well, end in the middle of a program. Access: parameterized Size: 8-bit positive values Available: ver 0.9 This commands the RGB LED with the three provided parameters, each of which is evaluated as an expression. Values range from 0,0,0 (off) to 255,255,255 (white). Note that this statement is in all-caps since its still an abbreviation. The RGB LED is updated every 1ms so changing its value faster than this with orbBasic is ineffective. When orbBasic is running, the RGB LED assumes the color of any programmatic RGB commands unless a macro is also running x2013 where it will take the value of the macro commands. You can override this precedence with an orbBasic flag, however. Access: parameterized Size: 8-bit positive value Available: ver 0.9 This is like the RGB command but sets the LED to one of eight predefined colors, without requiring you to know the three component values. Access: parameterized Size: 8-bit positive value Available: ver 0.9 This commands the aiming LED with an intensity from 0..255. For example: This reseeds the pseudorandom number generator based on the jitter of the sensor network. Since this operation is performed prior to the execution of an orbBasic program, you shouldnx2019t normally need to call this x2013 but hey, you can if you wish. goroll h, s,g Access: parameterized Size: three values, see below Available: ver 1.2 This executes a roll command to the control system with the provided values of heading and speed. Heading is over the usual range of 0..359 and speed over 0..255. The last parameter, a flag for quotgoquot tells the control system whether to force fast rotate to on (g2), attempt to drive normally (g 1) or perform a controlled stop (g0). If you havenapost turned on exclusive drive ability from orbBasic via the basflg statement, roll commands from macros or the Bluetooth client can overwrite this and cause unexpected behavior. Access: parameterized Size: 16-bit positive value Available: ver 1.2 This assigns the current yaw heading to the provided value, in the range of 0..359. raw Lmode, Lspeed, Rmode, Rspeed Access: parameterized Size: four values, see below Available: ver 1.3 This allows you to take over one or both of the motor output values, instead of having the stabilization system control them. Each motor (left and right) requires a mode (see below) and a power value from 0- 255. This command will disable stabilization if both modes arenapost quotignorequot so youaposll need to re-enable it once youaposre done. xFFFC0 - Off (motor is open circuit) 1 - xFFFCForward 2 - xFFFCReverse 3 - xFFFCBrake (motor is shorted) 4 - Ignore (motor mode and power is left unchanged) locate x, y Access: parameterized Size: two values, see below Available: ver 0.9 This assigns the XY position of the internal locator to the provided values. Access: write only Size: 16-bit positive value Available: ver 0.9 This statement accepts a decimal value to assign state flags that are effective during execution of the program. If you want to set multiple flags then add up their values. At the end of program execution these effect of these flags is removed. I will be adding more as needs arise.


No comments:

Post a Comment