Einen Roboter nach eigenen Ideen zu programmieren macht Spaß. Am einfachsten gelingt das Programmieren einfacher Aufgaben mit der grafischen Software von Lego. Für größere und komplexere Programme braucht man jedoch eine textbasierte Programmiersprache. Es gibt auch viele verschiedene Projekte, um Programmiersprachen für den EV3 zu adaptieren (LeJOS, MonoBrick, RobotC, ev3dev, und andere). Aber alle haben eine Sache gemeinsam: Sie sind unglaublich schwierig zum Laufen zu bringen und zu benutzen. Man benötigt jahrelange Erfahrung, um auch nur eine davon benutzen zu können. Um diese Lücke zwischen ganz-einfach-aber-eingeschränkt und allmächtig-aber-schwierig zu füllen, habe ich EV3Basic entwickelt. Diese Sprache ist speziell auf EV3-Benutzer zugeschnitten, die über die Beschränkungen der grafischen Programmierung hinausgehen wollen, selbst aber noch keine IT-Profis sind. EV3Basic ist recht einfach zu lernen und bietet trotzdem alle Möglichkeiten, komplexere Steuerungen zu entwickeln. Dabei programmieren zu lernen, ist noch ein zustätzlicher Bonus. EV3Basic basiert auf der Programmiersprache "Small Basic" von Microsoft, die für Kinder oder allgemein für Anfänger als Möglichkeit eines Einstiegs ins Programmieren geschaffen wurde. "Small Basic" wurde absichtlich einfach gehalten und für meine EV3-Erweiterung have ich versucht, das selbe Prinzip anzuwenden. Ich würde mich sehr freuen, wenn diese Sprache tatsächlich dabei helfen könnte, programmieren zu lernen und den EV3 kreativer zu benutzen. Reinhard Graflreinhard.grafl@aon.at Erste SchritteWas man zuerst braucht, ist ein PC mit Microsoft Windows (jede Version seit Windows XP) und die aktuelle Version von Microsoft Small Basic die man sich gratis runterladen kann. Für komplette Programmier-Neulinge empfehle ich die Tutorials auf Small Basic - Webseite um die grundlegenden Prinzipien zu erlernen. Das dauert nicht all zu lange und macht für sich alleine auch schon Spaß. Der nächste Schritt ist, die EV3-Erweiterung für Small Basic runterzuladen und zu installieren. Bei der neuesten Version gibt es die Datei "EV3BasicInstaller.msi", die man gratis runterladen und installieren kann. Die Installation muss direkt in das selbe Verzeichnis wie Small Basic gespeichert werden. Normalerweise ist das schon richtig voreingestellt, wenn man den Installationspfad vom vorigen Schritt auch nicht verändert hat. Beim nächsten Start von Small Basic, hat man Zugriff auf verschiedene Objekte, mit denen sich die unterschiedlichen Aspekte des EV3-Bricks ansteuern lassen, sowie noch ein paar weitere universell nützliche Objekte. Als erstes Programm könnte man LCD.Clear() LCD.Write(40,40, "Hello EV3") Program.Delay(10000) in das Programm-Fenster tippen (oder kopieren). Sobald der EV3-Brick über ein USB-Kabel mit dem PC verbunden und eingeschaltet ist, kann man das Programm mit dem großen blauen "Ausführen" - Knopf von Small Basic starten. Während des Programmierens zeigt das Intellisense-System von Small Basic die möglichen Bibliotheksfunktionen und Erklärungen für deren Benutzung. Diese Information is die selbe wie im Kapitel "Programmierbibliotheken". Es sind noch viele zusätzliche Beispiel auf der EV3Basic Webseite als 'Examples.zip' verfügbar. Den EV3-Brick vom PC aus fernzusteuern ist eine gute Sache, aber für viele Anwendungen ist es besser, das Programm direkt auf dem Roboter auszuführen, unabhängig von einem PC, der jeden einzelnen Schritt festlegen muss. Um das Programm auf den Brick zu bekommen, gibt es den EV3Explorer, der gleichzeit mit der EV3-Erweiterung mitinstalliert wurde, und nun über das Windows Start Menü (EV3Basic/EV3Explorer) geöffnet werden kann. Dieses Programm zeigt ein Fenster mit zwei Hälften: Links sieht man die Dateien, die am Brick gespeichert sind und rechts die Dateien am PC. Man kann jedes der Beispiele oder jedes eigene Programm übersetzen und am Brick starten, indem man es auswählt und "Compile and Run" drückt. Dadurch wird das Quellprogramm in eine für den Brick verständliche Form übersetzt (in eine Datei mit der Erweiterung .rbf), auf den Brick übertragen und sofort gestartet. Wenn das Programm auch im Menu auf dem Brick sichtbar sein soll, muss zuerst ein Unterverzeichnis des "prjs"-Verzeichnisses mit einem aussagekräftigen Namen erstellt werden, in das das ausführbare Programm hineinkopiert werden muss (Der EV3-Brick zeigt nur Programme im Menü an, die auch in ihrem eigenen Unterverzeichnis liegen). Kurzreferenz für Small BasicFür Personen, die bereits in der einen oder anderen Sprache programmieren können, und die nicht die Small Basic Tutorials für die grundlegendsten Dinge durcharbeiten wollen, habe ich hier ein kleines Beispiel zusammengestellt, in dem die meisten Sprachkonstrukte von Small Basic vorkommen. Das Beispiel läuft nicht am EV3-Brick sondern nur am PC, weil es das TextWindow - Objekt benutzt.
Unterschiede zwischen Small Basic and EV3BasicObwohl ich versucht habe, das Originalverhalten von Small Basic in meinem EV3-Compiler so gut wie möglich zu imitieren, gibt es doch einige Dinge, die mit der Laufzeitumgebung des EV3-Bricks nicht möglich sind. Variablen haben einen DatentypWährend Small Basic in jede Variable abwechselnd sowohl Zahlen oder Texte oder ganze Arrays speichern kann, erhält bei EV3-Basic jede Variable einen der folgenden Datentypen:
Jede Variable bekommt bei der ersten Benutzung im Programm einen dieser Typen zugewiesen und kann ab dann nichts anderes als Werte dieses Types speichern. Operatoren und Funktionen arbeiten entsprechend der Operanden-TypenArithmetische oder logische Operatoren müssen mit spezifischen Datentypen benutzt werden und liefern ebenfalls einen definierten Datentyp als Ergebnis (z.B. der Operator "<" erhält zwei Zahlen und liefert einen Text). Eine Ausnahme sind die Gleichheits/Ungleichheits-Operatoren, die entweder mit Zahlen oder Texten arbeiten, abhängig von den Datentypen der Operanden. Zweite Ausnahme ist der "+" - Operator, der entweder Zahlen addiert, oder Texte zusammenhängt. Ähnliche Einschränkungen gibt es für die Parameter von Bibliotheksfunktionen, die jeweils einen fixen Typ erwarten. Als kleine Erleichterung werden dort Zahlen automatisch in Texte konvertiert, wenn die Funktion einen Text benötigt (aber nicht anders herum). ArraysDie Arrays von Small Basic arbeiten sehr universell und können jede Zahl oder jeden Text als Index verwenden. EV3-Basic kann das nicht. Nur Zahlen sind als Index erlaubt, und nur nicht-negative ganze Zahlen funktionieren wie erwartet. (A[4.5] ist das selbe wie A[4], A[-4] liefert aber immer 0 oder "") Es gibt keine Unterstütztung für mehrdimensionale Arrays. Arrays können an Bibliotheksfunktionen übergeben werden. Array-Rückgabewerte müssen aber jeweils sofort in eine Variable gespeichert werden und können nicht statt dessen sofort an andere Funktionen geschickt werden (es gibt keinen automatisch angelegten temporären Speicher für Arrays). Einschränkungen bei TextJede Variable vom Typ Text kann maximal 251 Zeichen enthalten und die möglichen Zeichen beschränken sich auf die Unicode-Werte 1 - 255. Das selbe gilt für alle Elemente eines Text-Arrays. Bluetooth-UnterstützungDie einfachste und verlässlichste Methode, den EV3 mit dem PC zu verbinden, ist über ein USB-Kabel. Aber in manchen Fällen ist eine Kabelverbindung zu unpraktisch, vor allem bei mobilen Robotern. Wenn der PC Bluetooth unterstützt (entweder mit einem Dongle oder schon eingebaut), kann der EV3 so konfiguriert werden, dass die Kommunikation auch drahtlos möglich ist. Wenn es noch nicht bereits geschehen ist, muss der EV3 zur Liste der Bluetooth-Geräte am PC hinzugefügt werden. Zuerst muss Bluetooth am EV3 aktiviert werden. Dazu müssen im Einstellungs-Menü die Punkte "Bluetooth" und "Visibility" angewählt werden. Am PC muss man dann in der Übersicht der Bluetooth-Geräte das neue Gerät suchen und hinzufügen. Nach einigen weiteren geführten Schritten, bei denen man auch am EV3 den Zugriff zulassen, und einen Kopplungs-Code (ist normalerweise "1234") eingeben muss, sollte die Verbindung hergestellt sein. Sobald es eine Verbindung gibt, und die notwendigen Gerätetreiber automatisch installiert wurden, kann der PC mit dem EV3 über einen sogenannten "Seriellen Anschluss" kommunizieren. Dieser Anschluss hat eine Bezeichnung in der Form "COM1", "COM2", oder ähnlich. Der tatsächlich vergebene Name ist in der Eigenschafts-Seite des Bluetooth-Gerätes ersichtlich. Um diese neue Verbindung mit EV3-Basic zu verwenden, muss man nur das Programm wie gewohnt vom Small Basic starten, oder den EV3-Explorer benutzen. Falls kein EV3 an einem USB-Anschluss gefunden werden kann, zeigt das Programm weitere Möglichkeiten an. In dem Dialogfenster erscheinen auch alle potentiellen "Seriellen Anschlüsse", an denen ein EV3 verbunden sein könnte. Wenn man den richtigen auswählt, sollte eine Verbindung funktionieren. WiFi-Unterstützung (WLAN)Wie die Bluetooth-Verbindung, dient eine Kommunikation über WiFi ebenfalls zur drahtlosen Kommunikation zwischen dem PC und dem EV3-Brick. WiFi hat einige Vorteile, wie höhere Geschwindigkeit, Reichweite und Stabilität. Es hat aber auch Nachteile wie größeren Stromverbrauch und die Tatsache, dass man einen WiFi-Dongle an den EV3 anstecken muss. Außerdem funktioniert das nur, wenn man auch einen WiFi-Router zur Verfügung hat. Teilweise ist es eine Geschmackssache, ob man Bluetooth oder das WiFi verwenden will. Um die WiFi-Variante zu benutzen, benötigt man einen speziellen Dongle, der kompatibel mit dem EV3 ist. Derzeit gibt es nur ein einziges Modell das mit einem unmodifizierten EV3 funktioniert: "Netgear WNA1100", der an den großen USB-Stecker an der linken Seite des EV3 angesteckt wird. Die Verbindung kann man direkt am Einstellungs-Menü vom EV3 einrichten. Man muss zuerst die Option "WiFi" aktivieren (das dauert ein bisschen bis der Dongle gestartet ist) und dann muss man die Verbindung zum WiFi-Router herstellen. Für den Fall, dass das Wifi-Netzwerk durch Verschlüsselung geschützt ist, muss hier der WPA2-Schlüssel eingegeben werden. Derzeit werden keine anderen Verschlüsselungsmethoden unterstützt. Sobald eine Verbindung zwischen EV3 und Router hergestelllt ist, sollte der EV3 eine IP-Adresse erhalten haben. Diese Adresse in der Form "10.2.3.4" oder ähnlich, wird im Einstellungs-Menu im Punkt "Brick Info" ganz unten in der Liste angezeigt. Um endlich den EV3 von Small Basic oder mit dem EV3-Explorer anzusteuern, muss man den "WiFi"-Button im Dialogfenster, das nach der richtigen Verbindungsmethode fragt, drücken. Dort muss die IP-Adresse genauso wie vom Brick angezeigt eingegeben werden. Das muss man nur einmal machen, diese Adresse wird am PC für zukünftige Verwendung gespeichert. Achtung: Der EV3-Brick verbindet sich nach dem Start nicht automatisch mit dem Router. Das muss jedesmal von Hand veranlasst werden. Dokumentation der BibliotheksfunktionenDie Laufzeit-Bibliothek für den EV3 besteht aus einzelnen Komponenten, die 'Objekte' genannt werden. Jedes Objekt stellt Funktionen für einen spezifischen Teil des Systemes bereit. Diese Liste enthält alle Objekte, die sowohl für Small Basic am PC (mit der EV3-Erweiterung) als auch am EV3-Brick selbst verfügbar sind. Beim Schreiben vom Programmen, die sowieso nur am PC laufen sollen, kann man auch alle weiteren Objekte von Small Basic benutzen. Sie sind hier aber nicht beschrieben. AssertDas Assert-Objekt unterstützt den Programmierer dabei, Teile des Programmes auf Korrektheit zu überprüfen. Assert.Equal (a, b, message)Prüft, ob zwei Werte völlig identisch sind. Bei diesem Test gelten sogar "True" und "tRue" als verschieden. aErster Wert bZweiter Wert messageFehlermeldung, die ausgegeben wird, wenn der Test fehlschlägt. Assert.Failed (message)Gibt eine Fehlermeldung am Bildschirm aus. Dieser Befehl soll nur verwendet werden, wenn bereits ein Fehler erkannt wurde. messageFehlermeldung, die ausgegeben werden soll Assert.Greater (a, b, message)Prüft, ob der erste Wert größer als der zweite Wert ist. aErster Wert bZweiter Wert messageFehlermeldung, die ausgegeben wird, wenn der Test fehlschlägt. Assert.GreaterEqual (a, b, message)Prüft, ob der erste Wert größer als der zweite Wert oder gleich ist. aErster Wert bZweiter Wert messageFehlermeldung, die ausgegeben wird, wenn der Test fehlschlägt. Assert.Less (a, b, message)Prüft, ob der erste Wert kleiner als der zweite Wert ist. aErster Wert bZweiter Wert messageFehlermeldung, die ausgegeben wird, wenn der Test fehlschlägt. Assert.LessEqual (a, b, message)Prüft, ob der erste Wert kleiner als der zweite Wert oder gleich ist. aErster Wert bZweiter Wert messageFehlermeldung, die ausgegeben wird, wenn der Test fehlschlägt. Assert.Near (a, b, message)Prüft, ob zwei Werte gleich beziehungsweise fast gleich sind. 'Fast gleich' bedeutet, dass ein geringer Unterschied, der eventuell durch Rundungsfehler entstanden ist, auch noch zulässig ist. aErster Wert bZweiter Wert messageFehlermeldung, die ausgegeben wird, wenn der Test fehlschlägt. Assert.NotEqual (a, b, message)Prüft, ob zwei Werte verschieden sind. Bei diesem Test gelten sogar "True" und "tRue" als verschieden. aErster Wert bZweiter Wert messageFehlermeldung, die ausgegeben wird, wenn der Test fehlschlägt. ButtonsDieses Objekt liest den Zustand der Tasten und die letzten Tastendrücke. Buttons.Current - EigenschaftLiest alle Tasten, die gedrückt sind. Buttons.Flush ()Löscht alle gespeicherten Tastendrücke. Spätere Aufrufe von GetClicks liefern nur mehr die Tasten, die nach dem Flush gedrückt wurden. Buttons.GetClicks ()Erkennt, welche Tasten in der Zeit seit dem letzten Aufruf von GetClicks am Brick gedrückt wurden. RückgabewertEin Text der die Buchstaben aller gedrückten Tasten enthält (kann auch leer sein) Buttons.Wait ()Wartet bis zumindest eine Taste am Brick gedrückt wird. Falls eine Taste bereits vorher gedrückt war und der Tastendruck noch nicht mit GetClicks abgeholt wurde, dann kehrt dieser Befehl sofort zurück. EV3Nützliche kleine Funktionen für verschiedene Teile des EV3-Bricks. EV3.BatteryLevel - EigenschaftAktueller Ladezustand der Batterie in Prozent (Wertebereich 0 bis 100). EV3.Time - EigenschaftDie Zeit in Millisekunden seit dem Start des Programmes. EV3.QueueNextCommand ()Reduziert den Kommunikationsaufwand, wenn das Programm am PC läuft und den EV3 fernsteuert: Das nächste Kommando wird nicht sofort an den EV3 geschickt, sondern erst wenn noch ein weiteres Kommando geschickt werden muss. Man kann das Abschicken mit weiteren QueueNextCommand - Befehlen noch weiter verzögern, um möglichst viele Befehle als ganzen Block auf einmal zu schicken. EV3.SetLEDColor (color, effect)Setzt die Farbe der Tasten-Beleuchtung und einen der optischen Effekte. colorEines der folgenden: "OFF", "GREEN", "RED", "ORANGE" effectEines der folgenden: "NORMAL", "FLASH", "PULSE" EV3.SystemCall (commandline)Führt einen externen Befehl das Linux-Systems aus. Alle Threads des Basic-Programmes werden so lange angehalten, bis der Systembefehl beendet ist. commandlineAuszuführendes Systemkommando. RückgabewertExit-Status des Kommandos. EV3FileEV3File dient zum Ansprechen des Dateisystems auf dem Brick, um Daten zu lesen und zu schreiben. EV3File.Close (handle)Schließt eine offene Datei. handleDie Nummer, die vom Open... - Befehl zurückgeben wurde. EV3File.ConvertToNumber (text)Befehl um einen Text in eine Zahl zu konvertieren. textEin Text, der die dezimale Darstellung einer Zahl (mit optionalen Nachkommastellen) enthält. RückgabewertDie Zahl EV3File.OpenAppend (filename)Öffnet eine Datei zum Hinzufügen von Dateien. Falls die Datei noch nicht existiert, wird sie angelegt. filenameName der Datei, die erweitert bzw. angelegt werden soll. RückgabewertEine Nummer mit der die offene Datei später angesprochen wird. EV3File.OpenRead (filename)Öffnet eine Datei zum Lesen. Falls die Datei nicht existiert, wird 0 zurückgeben. filenameName der Datei, von der gelesen werden soll. RückgabewertEine Nummer, mit der die offene Datei später angesprochen wird, oder 0 falls die Datei nicht existiert. EV3File.OpenWrite (filename)Öffnet eine Datei zum Schreiben. Falls die Datei schon existiert, wird sie überschrieben. filenameName der Datei die angelegt bzw. überschrieben werden soll. RückgabewertEine Nummer, mit der die offene Datei später angesprochen wird. EV3File.ReadByte (handle)Liest ein einzelnes Byte aus einer Datei. handleDie Nummer, die vom Open... - Befehl zurückgegeben wurde. RückgabewertDas nächste Byte aus der Datei. EV3File.ReadLine (handle)Liest eine Zeile Text aus einer Datei. Der Text wird bis zum Zeilenumbruch (code 10) aus der Datei gelesen und entsprechend ISO-8859-1 dekodiert. handleDie Nummer, die vom Open... - Befehl zurückgegeben wurde. RückgabewertDer Text, der aus der Datei gelesen wurde. EV3File.ReadNumberArray (handle, size)Liest ein ganzes Array von Zahlen im Binärformat aus einer Datei. Die Zahlen müssen als einfache IEEE-Fließkommazahlen (4 Byte pro Zahl) in der Datei vorliegen. handleDie Nummer, die vom Open... - Befehl zurückgeben wurde. sizeAnzahl der Zahlen, die gelesen werden sollen. RückgabewertEin Array mit den gelesenen Zahlen. EV3File.TableLookup (filename, bytes_per_row, row, column)Hilfsfunktion, um aus einer möglicherweise extrem großen Datei ein einzelnes Byte herauszulesen. filenameDer Name der Datei. bytes_per_rowWenn man eine Zeilen/Spalten-Adressierung verwenden will, ist das die Länge der einzelnen Zeilen. Ansonsten muss man hier 1 verwenden um jedes Byte als eigene Zeile zu interpretieren. rowWelche Zeile soll genommen werden (start bei 0)? columnWelche Spalte soll genommen werden (start bei 0)? RückgabewertDas Byte an der gewünschten Stelle. EV3File.WriteByte (handle, data)Schreibt ein einzelnes Byte in die Datei. handleDie Nummer, die vom Open... - Befehl zurückgeben wurde. dataEin Byte, das geschrieben werden soll (Eine Zahl von 0 bis 255). EV3File.WriteLine (handle, text)Schreibt eine Zeile Text in die Datei. Der Text wird entsprechend ISO-8859-1 kodiert und mit einem Zeilenumbruch (code 10) abgeschlossen. handleDie Nummer, die vom Open... - Befehl zurückgeben wurde. textDer Text, der geschrieben werden soll. LCDSteuert die LCD-Anzeige am Brick. LCD.BmpFile (color, x, y, filename)Zeichnet ein Bild aus einer Datei. Nur Dateien im .rgf-Format werden unterstützt. color0 (normal) oder 1 (invertiert) xX-Koordinate der linken Kante yY-Koordinate der oberen Kante filenameName der Datei ohne die .rgf - Erweiterung. Dieser Dateiname kann relativ zum 'prjs'-Verzeichnis oder ein absoluter Name (mit führendem '/') sein. LCD.Circle (color, x, y, radius)Zeichnet einen Kreis in einer Farbe. color0 (Weiß) oder 1 (Schwarz) xX-Koordinate des Mittelpunkts yY-Koordinate des Mittelpunkts radiusRadius des Kreises LCD.Clear ()Setzt alle Pixel der Anzeige auf Weiß. LCD.FillCircle (color, x, y, radius)Füllt einen Kreis mit einer Farbe. color0 (Weiß) oder 1 (Schwarz) xX-Koordinate des Mittelpunkts yY-Koordinate des Mittelpunkts radiusRadius des Kreises LCD.FillRect (color, x, y, width, height)Füllt ein Rechteck mit einer Farbe. color0 (Weiß) oder 1 (Schwarz) xLinke Kante des Rechtecks yObere Kante des Rechtecks widthBreite des Rechtecks heightHöhe des Rechtecks LCD.InverseRect (x, y, width, height)Invertiert die Farbe aller Pixel innerhalb eines Rechtecks. xLinke Kante des Rechtecks yObere Kante des Rechtecks widthBreite des Rechtecks heightHöhe des Rechtecks LCD.Line (color, x1, y1, x2, y2)Zeichnet eine gerade Linie von Pixel mit einer Farbe. color0 (Weiß) oder 1 (Schwarz) x1X-Koordinate des Startpunkts y1Y-Koordinate des Startpunkts x2X-Koordinate des Endpunkts y2Y-Koordinate des Endpunkts LCD.Pixel (color, x, y)Setzt die Farbe eines einzelnen Pixels auf der Anzeige. color0 (Weiß) oder 1 (Schwarz) xX-Koordinate yY-Koordinate LCD.Rect (color, x, y, width, height)Zeichnet den Umriss eines Rechtecks in einer Farbe. color0 (Weiß) oder 1 (Schwarz) xLinke Kante des Rechtecks yObere Kante des Rechtecks widthBreite des Rechtecks heightHöhe des Rechtecks LCD.StopUpdate ()Verhindert, dass nachfolgende Ausgabebefehle sofort auf die Anzeige zeichnen und speichert die Änderungen zuerst nur. LCD.Text (color, x, y, font, text)Schreibt einen Text (oder eine Zahl) in einer Größe und Farbe. color0 (Weiß) oder 1 (Schwarz) xX-Koordinate, wo der Text anfangen soll yY-Koordinate, wo der Text anfangen soll fontSchriftgröße: 0 (winzig), 1 (klein), 2 (groß) textDer Text (oder die Zahl), die geschrieben werden soll LCD.Update ()Zeichnet alle Änderungen seit dem letzten StopUpdate auf die Anzeige. LCD.Write (x, y, text)Schreibt einen Text (oder eine Zahl) in mittlerer Größe und schwarzer Farbe. xX-Koordinate, wo der Text anfangen soll yY-Koordinate, wo der Text anfangen soll textDer Text (oder die Zahl), die geschrieben werden soll MailboxKommunikationsystem um Daten von einem EV3-Brick zu einem anderen über Bluetooth-Funk zu übertragen. Mailbox.Connect (brickname)Versucht, eine Verbindung zu einem anderen EV3-Brick aufzubauen. bricknameName des anderen Bricks. Mailbox.Create (boxname)Erzeugt einen Briefkasten für ankommenden Nachrichten auf dem Brick. boxnameName des neuen Briefkastens RückgabewertEine Identifikationsnummer für den Briefkasten. Sie wird benötigt um später Nachrichten herauszuholen Mailbox.IsAvailable (id)Prüft, ob bereits eine Nachricht im Briefkasten ist. idIdentifikationsnummer des lokalen Briefkastens. Rückgabewert"True", falls bereits eine Nachricht vorliegt. Sonst "False". Mailbox.Receive (id)Entfernt und holt die älteste Nachricht aus dem Briefkasten. Wenn noch keine Nachricht vorhanden ist, blockiert dieser Befehl so lange, bis eine Nachricht eintrifft. idIdentifikationsnummer des Briefkastens RückgabewertDie Nachricht als einfacher Text. Derzeit werden keine anderen Nachrichtenformate unterstützt. Mailbox.Send (brickname, boxname, message)Sendet eine Nachricht an einen Briefkasten eines anderen EV3-Bricks. bricknameDer Name des Bricks, der die Nachricht empfangen soll. Zuvor muss eine Verbindung zu diesem Brick geöffnet worden sein. Es ist auch möglich, einen Leertext als Namen anzugeben. In diesem Fall wird die Nachricht an alle verbundenen Bricks geschickt. boxnameName des Briefkastens in dem die Nachricht gespeichert werden soll. messageDie Nachricht als einfacher Text. Derzeit werden keine anderen Nachrichtenformate unterstützt. MathDas Math-Objekt stellt zahlreiche nützliche mathematische Methoden zur Verfügung Math.Pi - EigenschaftGibt den Wert der Zahl Pi zurück Math.Abs (number)Ruft den absoluten Wert einer Zahl ab. Zum Beispiel gibt -32.233 den Wert 32.233 zurück. numberDie Zahl, für die der absolute Wert abgerufen werden soll. RückgabewertDer absolute Wert einer Zahl. Math.ArcCos (cosValue)Ermittelt den Bogenmaßwinkel anhand des Kosinuswertes. cosValueDer Kosinuswert, dessen Winkel benötigt wird. RückgabewertDer Bogenmaßwinkel für den gegebenen Kosinuswert. Math.ArcSin (sinValue)Ermittelt den Bogenmaßwinkel anhand des Sinuswertes. sinValueDer Sinuswert, dessen Winkel benötigt wird. RückgabewertDer Bogenmaßwinkel für den gegebenen Sinuswert. Math.ArcTan (tanValue)Ermittelt den Bogenmaßwinkel anhand des Tangenswertes. tanValueDer Tangenswert, dessen Winkel benötigt wird. RückgabewertDer Bogenmaßwinkel für den gegebenen Tangenswert. Math.Ceiling (number)Ruft eine Ganzzahl ab, die den gleichen Wert wie die angegebene Dezimalzahl hat oder größer als diese ist. Zum Beispiel gibt 32.233 den Wert 33 zurück. numberDie Zahl, deren größter Wert erforderlich ist. RückgabewertDer größte Wert einer Zahl. Math.Cos (angle)Ermittelt den Kosinus des angegebenen Winkels im Bogenmaß. angleDer Winkel (im Bogenmaß), dessen Kosinus benötigt wird. RückgabewertDer Kosinus des gegebenen Winkels. Math.Floor (number)Ruft eine Ganzzahl ab, die den gleichen Wert wie die angegebene Dezimalzahl hat oder kleiner als diese ist. Zum Beispiel gibt 32.233 den Wert 32 zurück. numberDie Zahl, deren kleinster Wert erforderlich ist. RückgabewertDer kleinste Wert einer Zahl. Math.GetDegrees (angle)Rechnet einen Winkel im Bogenmaß in Gradmaß um. angleDer Winkel im Bogenmaß. RückgabewertDer umgewandelte Winkel in Grad. Math.GetRadians (angle)Rechnet einen Winkel im Gradmaß in Bogenmaß um. angleDer Winkel in Grad. RückgabewertDer umgewandelte Winkel im Bogenmaß. Math.GetRandomNumber (maxNumber)Liefert eine Zufallszahl zwischen 1 und der gegebenen Zahl (inklusive). maxNumberDie Obergrenze für die angeforderte Zufallszahl. RückgabewertEine Zufallszahl die kleiner oder gleich der spezifiziert Zahl ist. Math.Log (number)Ermittelt den Logarithmus zur Basis 10 der angegebenen Zahl. numberDie Zahl, deren Logarithmus ermittelt werden soll. RückgabewertDer Logarithmus der angegebenen Zahl Math.Max (number1, number2)Vergleicht zwei Zahlen und gibt die größere der beiden zurück. number1Die erste von zwei zu vergleichenden Zahlen. number2Die zweite von zwei zu vergleichenden Zahlen. RückgabewertDie Größere der zwei Zahlen. Math.Min (number1, number2)Vergleicht zwei Zahlen und gibt die kleinere der beiden zurück. number1Die Erste von zwei zu vergleichenden Zahlen. number2Die Zweite von zwei zu vergleichenden Zahlen. RückgabewertDie Kleinere der zwei Zahlen. Math.NaturalLog (number)Ermittelt den natürlichen Logarithmus der angegebenen Zahl. numberDie Zahl, deren natürlicher Logarithmuswert erforderlich ist. RückgabewertDer natürliche Logarithmuswert einer Zahl. Math.Power (baseNumber, exponent)Berechnet die angegebene Potenz der Zahl baseNumber. baseNumberDie Zahl, deren Potenz berechnet werden soll. exponentDer Exponent, der bei der Berechnung der Potenz verwendet werden soll. RückgabewertDie angebenene Potenz der Zahl baseNumber. Math.Remainder (dividend, divisor)Teilt die erste Zahl durch die zweite Zahl und gibt den Rest zurück. dividendDie zu teilende Zahl. divisorDie Zahl durch die geteilt werden soll. RückgabewertDer Divisionsrest. Math.Round (number)Rundet eine gegebene Zahl auf die nächstliegende ganze Zahl. Die Zahl 32.233 wird zum Beispiel auf 32.0 abgerundet, während numberDie Zahl dessen Näherungswert benötigt wird. RückgabewertDer gerundete Wert der gegebenen Zahl. Math.Sin (angle)Ermittelt den Sinus des angegebenen Winkels im Bogenmaß. angleDer Winkel (im Bogenmaß), dessen Sinus ermittelt werden soll RückgabewertDer Sinus des angegebenen Winkels Math.SquareRoot (number)Ermittelt die Quadratwurzel einer angegebenen Zahl. numberDie Zahl dessen Quadratwurzel benötigt wird. RückgabewertDie Quadratwurzel der gegebenen Zahl. Math.Tan (angle)Ermittelt den Tangens des angegebenen Winkels im Bogenmaß. angleDer Winkel (im Bogenmaß), dessen Tangens benötigt wird. RückgabewertDer Tangens des gegebenen Winkels. MotorSteuert die angeschlossenen Motoren. Motor.GetCount (port)Fragt den aktuellen Rotationszähler eines Motors ab. portName des Motor-Ports RückgabewertDer aktuelle Wert des Rotationszählers. Motor.GetSpeed (port)Fragt die derzeitige Geschwindigkeit eines Motors ab. portMotor port name RückgabewertAktuelle Geschwindigkeit im Bereich -100 bis 100 Motor.Invert (ports)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Invertiert the Bedeutung von Vorwärts und Rückwärts eines oder mehrerer Motoren. Alle späteren Motor-Befehle werden dann mit umgekehrter Richtung ausgeführt, und auch die Befehle zum Auslesen des Umdrehungszählers und der Geschwindkeit funktionieren umgekehrt. Diese Funktion ist nützlich, wenn man einen Motor umgekehrt in ein Modell einbaut und den Rest des Programm nicht änderen muss. Ein einmaliger Aufruf von Invert ganz am Anfang des Programms kann die Umkehrung kompensieren. portsName des/der Motor-Ports Motor.IsBusy (ports)Prüft, ob einer oder mehrere Motoren gerade aktiv laufen. portsName des/der Motor-Ports Rückgabewert"True" wenn zumindest einer der Motoren läuft. Motor.Move (ports, speed, degrees, brake)Bewegt einen oder mehrere Motoren mit der gewählten Geschindigkeit den angegebenen Winkel weit. portsName des/der Motor-Ports speedGeschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts). degreesDer Winkel den der Motor drehen soll brake"True", wenn die Motoren die elektrische Bremse benutzen sollen. Motor.MovePower (ports, power, degrees, brake)Bewegt einen oder mehrere Motoren mit der gewählten Leistung den angegebenen Winkel weit. portsName des/der Motor-Ports powerLeistung von -100 (maximal rückwärts) bis 100 (maximal vorwärts). degreesDer Winkel den der Motor drehen soll brake"True", wenn die Motoren die elektrische Bremse benutzen sollen. Motor.MoveSteer (ports, speed, turn, degrees, brake)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Dreht 2 Motoren synchronisiert einen gewünschten Winkel weit. Synchronisiert bedeutet, dass die Regelung immer versucht, das Geschwindigkeitsverhältnis beizubehalten, auch wenn ein Motor gebremst wird. In diesem Fall wird der zweite Motor automatisch auch langsamer. Das ist besonders nützlich für Fahrzeuge mit unabhängig angetriebenen Rädern, die aber trotzdem gerade oder eine definierte Kurve fahren sollen. portsName der beiden Motor-Ports speedGeschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des schnelleren Motors. turnKurvenform von -100 (im Stehen links drehen) bis 100 (im Stehen rechts drehen). degreesDer Winkel, den der schnellere Motor zurücklegen soll brake"True", wenn die Motoren die elektrische Bremse benutzen sollen. Motor.MoveSync (ports, speed1, speed2, degrees, brake)Dreht 2 Motoren synchronisiert einen gewünschten Winkel weit. portsName der beiden Motor-Ports speed1Geschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des Motors mit dem niedrigeren Port-Namen (A vor B, etc.). speed2Geschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des Motors mit dem höheren Port-Namen (A vor B, etc.). degreesDer Winkel, den der schnellere Motor zurücklegen soll brake"True", wenn die Motoren die elektrische Bremse benutzen sollen. Motor.ResetCount (ports)Setzen den Rotationszähler eines oder mehrerer Motoren auf 0 zurück. portsName des/der Motor-Ports Motor.Schedule (ports, speed, degrees1, degrees2, degrees3, brake)Bewegt einen oder mehrere Motoren entsprechend mehrerer Geschwindigkeits-Parameter. Die Geschwindkeit kann positionsabhängig gesteigert oder verringert werden, um einen sanften Anlauf oder Stopp zu erreichen. portsName des/der Motor-Ports speedGeschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts). degrees1Der Teil der Rotation für die Beschleunigung degrees2Der Teil der Rotation in gleichmäßiger Bewegung degrees3Der Teil der Rotation für das Abbremsen brake"True", wenn der Motor die elektrische Bremse benutzen soll. Motor.SchedulePower (ports, power, degrees1, degrees2, degrees3, brake)Bewegt einen oder mehrere Motoren entsprechend mehrerer Leistungs-Parameter. Die Leistung kann positionsabhängig gesteigert oder verringert werden, um einen sanften Anlauf oder Stopp zu erreichen. portsName des/der Motor-Ports powerLeistung von -100 (maximal rückwärts) bis 100 (maximal vorwärts). degrees1Der Teil der Rotation für die Beschleunigung degrees2Der Teil der Rotation in gleichmäßiger Bewegung degrees3Der Teil der Rotation für das Abbremsen brake"True", wenn der Motor die elektrische Bremse benutzen soll. Motor.ScheduleSteer (ports, speed, turn, degrees, brake)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Dreht 2 Motoren synchronisiert einen gewünschten Winkel weit. Synchronisiert bedeutet, dass die Regelung immer versucht, das Geschwindigkeitsverhältnis beizubehalten, auch wenn ein Motor gebremst wird. In diesem Fall wird der zweite Motor automatisch auch langsamer. Das ist besonders nützlich für Fahrzeuge mit unabhängig angetriebenen Rädern, die aber trotzdem gerade oder eine definierte Kurve fahren sollen. Der Winkel für die Gesamtrotation wird immer beim Motor mit der höheren Geschwindigkeit gemessen. portsName der beiden Motor-Ports speedGeschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des schnelleren Motors. turnKurvenform von -100 (im Stehen links drehen) bis 100 (im Stehen rechts drehen). degreesDer Winkel, den der schnellere Motor zurücklegen soll brake"True", wenn die Motoren die elektrische Bremse benutzen sollen. Motor.ScheduleSync (ports, speed1, speed2, degrees, brake)Dreht 2 Motoren synchronisiert einen gewünschten Winkel weit. portsName der beiden Motor-Ports speed1Geschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des Motors mit dem niedrigeren Port-Namen (A vor B, etc.). speed2Geschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des Motors mit dem höheren Port-Namen (A vor B, etc.). degreesDer Winkel, den der schnellere Motor zurücklegen soll brake"True", wenn die Motoren die elektrische Bremse benutzen sollen. Motor.Start (ports, speed)Startet einen oder mehrere Motoren mit der gewählten Geschwindigkeit oder setzt die Geschwindigkeit neu fest. portsName des/der Motor-Ports speedGeschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts). Motor.StartPower (ports, power)Startet einen oder mehrere Motoren mit der angegebenen Leistung. portsName des/der Motor-Ports powerLeistung von -100 (maximal rückwärts) bis 100 (maximal vorwärts). Motor.StartSteer (ports, speed, turn)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Startet zwei Motoren, die synchronisiert mit fixem Geschwindigkeitsverhältnis laufen. Synchronisiert bedeutet, dass die Regelung immer versucht, das Geschwindigkeitsverhältnis beizubehalten, auch wenn ein Motor gebremst wird. In diesem Fall wird der zweite Motor automatisch auch langsamer. Das ist besonders nützlich für Fahrzeuge mit mit unabhängig angetriebenen Rädern, das aber trotzdem gerade oder eine definierte Kurve fahren soll. portsName der beiden Motor-Ports speedGeschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des schnelleren Motors. turnKurvenform von -100 (im Stehen links drehen) bis 100 (im Stehen rechts drehen). Motor.StartSync (ports, speed1, speed2)Startet zwei Motoren, die synchronisiert mit jeweils einstellbaren Geschwindigkeiten laufen. Synchronisiert bedeutet, dass die Regelung immer versucht, das Geschwindigkeitsverhältnis beizubehalten, auch wenn ein Motor gebremst wird. In diesem Fall wird der zweite Motor automatisch auch langsamer. Das ist besonders nützlich für Fahrzeuge mit mit unabhängig angetriebenen Rädern, das aber trotzdem gerade oder eine definierte Kurve fahren soll. portsName der beiden Motor-Ports speed1Geschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des Motors mit dem niedrigeren Port-Namen (A vor B, etc.). speed2Geschwindigkeit von -100 (maximal rückwärts) bis 100 (maximal vorwärts) des Motors mit dem höheren Port-Namen (A vor B, etc.). Motor.Stop (ports, brake)Stoppt einen oder mehrere Motoren. portsName des/der Motor-Ports brake"True", wenn der Motor die elektrische Bremse benutzen soll. Motor.Wait (ports)Wartet bis ein oder mehrere Motoren ihre Bewegung abgeschlossen habe. portsName des/der Motor-Ports ProgramDie Klasse 'Program' enthält Hilfsfunktionen, um die Ausführung von Programmen zu kontrollieren. Program.ArgumentCount - EigenschaftRuft die Anzahl der Befehlszeilenargumente ab, die an das Programm übergeben wurden. Program.Directory - EigenschaftLiefert das Verzeichnis des laufenden Programms. Program.Delay (milliSeconds)Verzögert die Ausführung eines Programms um die angegebene Anzahl Millisekunden (MilliSeconds). milliSecondsDie Verzögerung. Program.End ()Beendet das Programm. Program.GetArgument (index)Gibt das Argument zurück, das an das Programm übergeben wurde. indexDer Index des Arguments. RückgabewertDas Befehlszeilenargument am angegebenen Index. SensorSteuert die angeschlossenen Sensoren. Sensor.CommunicateI2C (port, address, writebytes, readbytes, writedata)Kommuniziert mit Geräten (nicht unbedingt nur Sensoren), die an einem Sensor-Port angeschlossen sind und das I2C-Protokoll verwenden. portNummer des Sensor-Ports addressAdresse (0 - 127) des I2C-Slaves am I2C-Bus writebytesAnzahl der Bytes, die gesendet werden sollen (maximal 31). readbytesAnzahl der Bytes, die empfangen werden sollen (maximal 32, minimal 1). writedataArray mit den zu sendenden Bytes. RückgabewertEin Array mit den empfangenen Bytes. Sensor.GetMode (port)Liest den aktuellen Modus des Sensors. portNummer des Sensor-Ports RückgabewertAktuelle Modus (0 ist immer der Anfangs-Modus) Sensor.GetName (port)Liest den Namen und den Modus eines gerade angeschlossenen Sensors. portNummer des Sensor-Ports RückgabewertLesbarer Text mit Port und Modus(z.B. "TOUCH") Sensor.GetType (port)Liest die Identificationsnummer des Sensors. portNummer des Sensor-Ports RückgabewertIdentificationsnummer (z.B. für einen Tastsensor) Sensor.IsBusy (port)Prüft, ob ein Sensor gerade mit einem Moduswechsel beschäftigt ist. Nach Umschaltung kann es einige Zeit dauern, bevor neue Messergebnisse vorliegen. portNummer des Sensor-Ports Rückgabewert"True", wenn der Sensor gerade noch beschäftigt ist Sensor.ReadI2CRegister (port, address, registernumber)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Kommuniziert mit Geräten (nicht unbedingt nur Sensoren), die an einem Sensor-Port angeschlossen sind und das I2C-Protokoll verwenden. Dieser Befehl liest den Wert eines einzelnen Geräte-Registers aus (sofern das Gerät die Kommunikation über Register unterstützt). portNummer des Sensor-Ports addressAdresse (0 - 127) des I2C-Slaves am I2C-Bus registernumberDie Nummer (0 - 255) des zu lesenden Registers. RückgabewertDen gelesen Registerwert (0-255). Sensor.ReadI2CRegisters (port, address, registernumber, readbytes)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Kommuniziert mit Geräten (nicht unbedingt nur Sensoren), die an einem Sensor-Port angeschlossen sind und das I2C-Protokoll verwenden. Dieser Befehl liest den Wert mehrerer Geräte-Registers aus (sofern das Gerät die Kommunikation über Register unterstützt). Achtung: Dieser Befehl funktioniert nicht bei EV3-Bricks, die an einem Haupt-Brick angeschlossen und von diesem gesteuert werden. portNummer des Sensor-Ports addressAdresse (0 - 127) des I2C-Slaves am I2C-Bus registernumberDie Nummer (0 - 255) des zu lesenden Registers. readbytesDie Anzahl der zu lesenden Register (maximal 32) RückgabewertEin Array mit den empfangenen Bytes. Sensor.ReadPercent (port)Liest einen einzelnen Wert und rechnet ihn in eine sinnvolle Prozentangabe um. portNummer des Sensor-Ports RückgabewertDer Prozentwert des gemessenen Werts (z.B.: Ein Tastsensor liefert immer 100 wenn gedrückt, und 0 wenn nicht gedrückt) Sensor.ReadRaw (port, values)Liest einen Sensorwert wenn das Ergebnis von ReadPercent() nicht ausreichend ist. portNummer des Sensor-Ports valuesAnzahl der Werte-Komponenten RückgabewertEin Array mit der geforderten Anzahl an Komponenten. Der Index beginnt bei 0. Komponenten, für die der Sensor keinen Wert liefert, werden auf 0 gesetzt. Sensor.ReadRawValue (port, index)Ähnlich wie ReadRaw, aber anstatt eines ganzen Arrays von Komponenten liest dieser Befehl nur eine einzige Komponente. portNummer des Sensor-Ports indexIndex der zu lesenden Komponente RückgabewertEine Komponente des Sensor-Wertes. Sensor.SendUARTData (port, writebytes, writedata)Sendet Daten an Geräte, die über den UART an einen Sensor-Port angeschlossen sind. portNummer des Sensor-Ports writebytesAnzahl der zu sendenden Bytes (maximum 32). writedataArray mit den Bytes. Sensor.SetMode (port, mode)Schaltet einen Sensor in einen anderen Modus. portNummer des Sensor-Ports modeDer Modus, in den umgeschaltet werden soll. Das funktioniert nur, wenn der Sensor diesen Modus auch unterstützt. Sensor.Wait (port)Wartet, bis ein Sensor seinen Moduswechsel abgeschlossen hat. Wenn kein Sensor am angegebenen Port angeschlossen ist, kehrt der Befehl sofort zurück. portNummer des Sensor-Ports Sensor.WriteI2CRegister (port, address, registernumber, value)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Kommuniziert mit Geräten (nicht unbedingt nur Sensoren), die an einem Sensor-Port angeschlossen sind und das I2C-Protokoll verwenden. portNummer des Sensor-Ports addressAdresse (0 - 127) des I2C-Slaves am I2C-Bus registernumberDie Nummer (0 - 255) des zu beschreibenden Registers. valueDer Wert (0 - 255), der in das Register geschrieben werden soll. Sensor.WriteI2CRegisters (port, address, registernumber, writebytes, writedata)Dieser Befehl ist nur in Version 1.2 und später der EV3-Erweiterung verfügbar. Kommuniziert mit Geräten (nicht unbedingt nur Sensoren), die an einem Sensor-Port angeschlossen sind und das I2C-Protokoll verwenden. Dieser Befehl beschreibt schreibt den Wert mehrerer Geräte-Register (sofern das Gerät die Kommunikation über Register unterstützt). portNummer des Sensor-Ports addressAdresse (0 - 127) des I2C-Slaves am I2C-Bus registernumberDie Nummer (0 - 255) des ersten zu beschreibenden Registers. writebytesWie Anzahl der zu beschreibenden Register (maximal 30). writedataEin Array mit den zu schreibenden Werten. SpeakerDer eingebaute Lautsprecher des Bricks kann einfache Töne oder Geräuscheffekte abspielen. Speaker.IsBusy ()Prüft, ob der Lautsprecher noch einen Ton oder einen Geräuscheffekt abspielt. Rückgabewert"True", wenn noch etwas gespielt wird, sonst "False". Speaker.Note (volume, note, duration)Beginnt einen Ton zu spielen, der durch eine Text-Beschreibung definiert ist. volumeLautstärke im Bereich 0 - 100 noteText-Beschreibung einer Note "C4" "B7" oder eines Halbtones wie "C#5" durationDauer des Tones in Millisekunden Speaker.Play (volume, filename)Spielt einen Geräuscheffekt aus einer am Brick gespeicherten Datei. Derzeit werden nur Dateien im .rsf - Format unterstützt. volumeLautstärke im Bereich 0 - 100 filenameName der Datei ohne die .rsf - Erweiterung. Dieser Dateiname kann relativ zum 'prjs'-Verzeichnis oder ein absoluter Pfadname sein (mit führendem '/'). Speaker.Stop ()Stoppt jeden gerade laufenden Ton oder Geräuscheffekt.. Speaker.Tone (volume, frequency, duration)Beginnt einen Ton der angegebenen Frequenz zu spielen. volumeLautstärke im Bereich 0 - 100 frequencyFrequenz in Hz im Bereich 250 - 10000 durationDauer des Tones in Millisekunden Speaker.Wait ()Wartet bis der gerade gespielte Ton/Geräuscheffekt fertig ist. TextDas Text-Objekt bietet nützliche Vorgänge für das Arbeiten mit Text. Text.Append (text1, text2)Fügt zwei Texteingaben zusammen und gibt das Resultat als einen neuen Text zurück. Dieser Vorgang ist besonders dann nützlich, wenn man unbekannten Text in Variablen verarbeitet, der versehentlich als Zahl behandelt und addiert werden könnte, anstelle zusammengefügt zu werden. text1Der erste Teil des zu verknüpfenden Textes. text2Der zweite Teil des zu verknüpfenden Textes. RückgabewertDer verknüpfte Text mit beiden Bestandteilen. Text.ConvertToLowerCase (text)Konvertiert den Textteil in kleine Buchstaben. textDer Text, der in Kleinbuchstaben umgewandelt werden soll. RückgabewertDer angegebene Text in Kleinbuchstaben. Text.ConvertToUpperCase (text)Konvertiert den Textteil in Großbuchstaben. textDer Text, der in Großbuchstaben umgewandelt werden soll. RückgabewertDer angegebene Text in Großbuchstaben. Text.EndsWith (text, subText)Ruft ab, ob ein bestimmter Textabschnitt mit dem angegebenen Textteil endet. textDer Textabschnitt, in dem gesucht werden soll. subTextDie gesuchte Zeichenfolge. RückgabewertTrue, wenn die Zeichenfolge am Ende des Textes gefunden wurde. Text.GetCharacter (characterCode)Je nach Unicode-Zeichencode wird das entsprechende Zeichen abgerufen, das dann als normaler Text verwendet werden kann. characterCodeDer Unicode-Zeichencode für ein bestimmtes Zeichen. RückgabewertDas Unicode-Zeichen, das dem Unicode-Zeichencode entspricht. Text.GetCharacterCode (character)Wird ein Unicode-Zeichen eingegeben, wird der entsprechende Unicode-Zeichencode abgerufen. characterDas Zeichen, für das der Zeichencode abgerufen werden soll. RückgabewertDer Unicode-Zeichencode, der dem angegebenen Zeichen entspricht. Text.GetIndexOf (text, subText)Sucht die Position einer Zeichenfolge innerhalb eines angegebenen Textes. textDer Text, in dem gesucht werden soll. subTextDer zu suchende Text. RückgabewertDie Position, an der das Textsegment im angegebenen Text erscheint. Wenn der Text nicht erscheint, wird 0 zurückgegeben. Text.GetLength (text)Ruft die Länge des Textes ab. textDer Text, dessen Länge benötigt wird. RückgabewertDie Länge eines angegebenen Textes. Text.GetSubText (text, start, length)Ruft einen Textteil aus einem größeren Textabschnitt ab. textDer Text, dem die Zeichenfolge entnommen werden soll. startBestimmt, wo angefangen werden soll. lengthBestimmt die Länge einer Zeichenfolge. RückgabewertDer angeforderte Textteil Text.GetSubTextToEnd (text, start)Ruft eine Zeichenfolge innerhalb eines Textes ab, angefangen bei einer bestimmten Position bis zum Ende. textDer Text, dem die Zeichenfolge entnommen werden soll. startBestimmt, wo angefangen werden soll. RückgabewertDie angeforderte Zeichenfolge. Text.IsSubText (text, subText)Ruft ab, ob ein Textteil ein Bestandteil eines größeren Textabschnittes ist. textDer Textabschnitt, in dem die Zeichenfolge gesucht werden soll. subTextDie gesuchte Zeichenfolge. RückgabewertTrue, wenn die Zeichenfolge im angegebenen Text gefunden wurde. Text.StartsWith (text, subText)Ruft ab, ob ein bestimmter Textabschnitt mit dem angegebenen Textteil beginnt. textDer Textabschnitt, in dem gesucht werden soll. subTextDie gesuchte Zeichenfolge. RückgabewertTrue, wenn die Zeichenfolge zu Beginn des Textes gefunden wurde. ThreadDieses Objekt unterstützt die Verwendung von Nebenläufigkeiten (Threads) in einem Programm. Thread.Run - EigenschaftMit dieser Objekt-Eigenschaft werden neue Threads erzeugt. Sobald dieser Eigenschaft ein Unterprogram zugewiesen wird, startet dieses Unterprogramm als unabhängiger Thread (zum Beispiel: Thread.Run = MYSUB). Thread.CreateMutex ()Erzeugt einen Mutex (kurz für "Mutual Exclusion" = "gegenseiter Ausschluss") der dann für die Synchronisierung von Threads benutzt werden kann. RückgabewertDie Identifikationsnummer des neue erzeugten Mutex. Thread.Lock (mutex)Versucht, den Mutex exklusiv für diesen Thread zu sperren, sodass kein anderer Thread darauf zugreifen kann. mutexDie Identifikationsnummer des Mutex (wie von CreateMutex() zurückgeliefert) Thread.Unlock (mutex)Gibt einen Mutex wieder frei. Dieser Befehl darf nur nach einem vorangegangen Lock() benutzt werden. mutexDie Identifikationsnummer des Mutex Thread.Yield ()Gibt die Kontrolle über die CPU explizit an dieser Stelle frei. VectorDieses Objekt bietet verschiedene Operationen zur Manipulation größerer Zahlenmengen. Vector.Add (size, A, B)Addiert zwei Vektoren elementweise (C[0]=A[0]+B[0], C[1]=A[1]+B[1]...) sizeAnzahl der Elemente von jedem Vektor für die Berechnung AErster Vektor BZweiter Vektor RückgabewertA Vektor der angegebenen Größe, der alle Summen enhält. Vector.Init (size, value)Initialisiert einen Vektor mit angegebener Länge und Startwert für alle Elemente. sizeLänge des Vektors valueDer Wert für alle Elemente RückgabewertDen neu erzeugten Vektor Vector.Multiply (rows, columns, k, A, B)Matrizenmultiplikation. rowsAnzahl der Zeilen der Ergebnis-Matrix columnsAnzahl der Spalten der Ergebnis-Matrix kAnzahl der Spalten in Matrix A und gleichzeitig der Zeilen in Matrix B AEin Matrix der Größe rows * k BEine Matrix der Größe k * columns RückgabewertEine neue Matrix mit dem Multiplikationsergebnis Vector.Sort (size, A)Sortiert die Element eines Vektors in aufsteigender Reihenfolge. sizeAnzahl der Elements ADer zu sortierende Vektor RückgabewertEin neuer Vektor mit den sortierten Elementen A |
EV3 Basic programming > EV3 Basic Manual >