INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ausdruck "->" ist mir unbekannt
20.09.2016, 09:47
Beitrag #1
Ausdruck "->" ist mir unbekannt
Hi,

ich bin leider nicht sonderlich fit in C++ und kann in einer Library unter anderem folgende Zeile nicht interpretieren:

while(port->read() >= 0);

ich habe in allen möglichen Referenzen nach diesem "->" gesucht aber konnte nichts finden. Ich habe es vorher nie in einem Arduino Programm gesehen. Wie wird diese Zeile abgearbeitet?

Am Ende müßte der Compiler, da SoftwareSerial aktiviert ist und mySerial heißt, es wohl so übersetzen:

while ( mySerial.read() >=0);

aber irgendwie habe ich da Zweifel, da die Schnittstelle nicht angesprochen wird...

danke,
Pardini
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 14:46
Beitrag #2
RE: Ausdruck "->" ist mir unbekannt
Leider ist der Rest deines Programmes nicht zu sehen.

port sollte wohl ein Pointer auf ein instanziertes Klassenobjekt sein. Methoden darauf ruft man port->read () auf.
ansonsten würde man es port.read () aufrufen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 15:55
Beitrag #3
RE: Ausdruck "->" ist mir unbekannt
danke für die Hilfe.
Bin auch mit meinem Problem etwas weiter gekommen. "Port" ist ein Zeiger und bekommt im Vorfeld etwas zugewiesen. Dass man dann -> statt . schreibt war mir bislang unbekannt. Obwohl ich dazu nichts in den Referenzen gefunden habe, kennt die Arduino IDE, oder zumindest deren Compiler den -> Ausdruck. Ich habe versuchshalber mal port.read () draus gemacht, da kam beim Compilieren eine Fehlermeldung ob ich nicht -> meinte ;-)
Das ist also nicht die Ursache, warum mein Prog. nicht läuft. Hilft also nur weiter Zeile für Zeile verstehen lernen was passieren soll um den Fehler zu finden. Dummerweise liegt der Fehler wohl in einer verwendeten Library und das ist derzeit noch etwas hoch für mich.

Pardini
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 16:05 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2016 16:29 von Pit.)
Beitrag #4
RE: Ausdruck "->" ist mir unbekannt
Beispiel
SerialObject myserial = SerialObject ();
myserial.read();
---
gleich wie
SerialObject* mySerialPointer = new SerialObject ();
mySerialPointer->read();
......
delete mySerialPointer;
oder
SerialObject myserial = SerialObject ();
SerialObject* portzeiger = &myserial;
portzeiger->read();
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 16:47
Beitrag #5
RE: Ausdruck "->" ist mir unbekannt
(20.09.2016 15:55)Pardini schrieb:  Hilft also nur weiter Zeile für Zeile verstehen lernen was passieren soll um den Fehler zu finden. Dummerweise liegt der Fehler wohl in einer verwendeten Library und das ist derzeit noch etwas hoch für mich.

Das es an einer Library liegt, kann ich mir kaum vorstellen. Es sei denn, die wurde von dir geschrieben.

So lange du deinen Sketch geheim hältst, werden wir wohl kaum helfen können.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 17:41
Beitrag #6
RE: Ausdruck "->" ist mir unbekannt
ich sehe schon, mir fehlen an dieser Stelle einfach Grundlagen. Bislang hat das "einfache" gereicht. Librarys habe ich bisher nur hochachtungsvoll verwendet. Nun muß ich wohl doch mal die trockene Theorie büffeln...
Meine lieben Probleme habe ich mit der Modbus Library
Mein Code ist wahrlich kein Geheimnis, da er quasi den Examples entspricht. Dennoch verlange ich offensichtlich von ihr etwas, was scheinbar nicht vorgesehen/getestet ist. Ich habe einen Arduino Nano und brauche einen Modbus Master per SoftwareSerial aber bitte mit Ansteuerung des TXenpin (HalbDuplex) für einen Bustreiber RS485. Mit der HardwareSerial funktioniert es, die brauche ich aber schon als Slave. Mit SoftwareSerial funktioniert RS232, das nützt mir aber nichts. Sobald ich versuche den TXenpin zu defiinieren "kracht's". Programm wird compiliert hängt sich aber nach dem ersten loop Durchlauf auf und macht nach außen nichts mehr.
Mit einem Mega und seinen 4 UARTs würde es vermutlich sofort klappen aber es ärgert mich jetzt einfach, daß ich zu blöd bin und beiße mich daran fest...

Pardini
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.09.2016, 09:07 (Dieser Beitrag wurde zuletzt bearbeitet: 21.09.2016 09:08 von hotsystems.)
Beitrag #7
RE: Ausdruck "->" ist mir unbekannt
(20.09.2016 17:41)Pardini schrieb:  ich sehe schon, mir fehlen an dieser Stelle einfach Grundlagen.

Das vermute ich auch.

Zitat:Mein Code ist wahrlich kein Geheimnis, da er quasi den Examples entspricht.

Dann zeige ihn uns doch, oder sollen wir uns alle Beispiele ansehen und deine Anpassungen hinzudenken ?

Zitat:...Ansteuerung des TXenpin...

Was bitte ist ein "TXenpin" ?

Eine bessere Erklärung wäre da auch hilfreich.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.10.2016, 16:54
Beitrag #8
RE: Ausdruck "->" ist mir unbekannt
so, möchte das Thema mal noch zum Abschluß bringen...
Die oben genannte Modbus-Library ist natürlich nicht fehlerhaft, sondern einfach nicht für die Ansteuerung von RS485 Bustreibern in Verbindung mit SoftwareSerial vorgesehen. Übergibt man ihr dennoch Parameter für die nötigen Senderichtungspins, werden diese mit default Werten für UART0 übersetzt, was natürlich schief gehen muss. Gesendet wird über SoftwareSerial und dann jedoch gewartet, daß UART0 "fertig" meldet. Da dies mittels while Schleife abgefragt wird, hängt das Programm dann dort fest.
Aus Zeitdruck habe ich nun das Projekt doch mit einem MEGA und seinen ausreichend vorhandenen seriellen Hardware Ports verwirklicht. Für später werde ich die Library ändern, daß auch bei SoftwareSerial die richtigen Signale für die Bustreiber erzeugt werden.

Pardini
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste