Textschnittstelle durch C++ Programm bereitstellen (ansprechbar z.B. über SSH)
-
Hi!
Ich habe folgendes Problem. Ich schreibe ein C++ Programm (ohne GUI), welches auf einem Embedded Linux Rechner läuft. Da man eigentlich nur über die Serielle Schnittstelle (SSH) Zugriff auf den Rechner bekommt, möchte ich nun eine Text-Schnittstelle durch das Programm bereitstellen, über die ich das Programm bedienen kann.
Wie mache ich das am besten? Es soll so sein, dass das Programm, weil es im Hintergrund kontinuierlich Daten schicken soll, unabhängig von der Benutzereingabe laufen soll.
Man soll dann z.B. die Datenrate über das Interface variieren können. Ich stelle mir das so vor, dass man die Schnittstelle aufruft mit einem Befehl der Form:> tool.exe -befehl:wert
oder irgendwie so etwas in der Art. Da "tool.exe" im Prinzip ja schon läuft, weiß ich nicht, wie ich das am besten mache...
Gruß Christoph
-
hast außer ssh wirklich keinen netzwerkzugriff? sonst würde ich das eher mit tcp sockets machen, textschnittstelle ist nämlich nicht besonders schön. Und wird eigentlich nur zum konfigurieren beim start genutzt.
-
Bin der da der gleichen Meinung wie Bengo, lieber eine tcp Socken Schnittstelle. ZB als Telnet-Server implementieren, damit könntest du bei Bedarf auch direkt von extern alles konfigurieren bzw den Status abfragen.
Zusätzlich, könntest du dann noch eine Tool.exe bereitstellen, die die Übergabeparameter nimmt und an die TCP Socket schickt, wenn du es unbedingt benötigst.
Sollte dir das nicht gefallen, dann müsstest du über interprozes Kommunikation nachdenken. Dies könnte über Pipes oder Shared Memory gehen oder auch wieder über TCP Sockets.
MFG Marco
Edit: blöde Autokorrektur
-
SchlitzInDaHaus: SSH ist _nicht_ die serielle Schnittstelle. Womit hast du denn Schwierigkeiten? Klingt so als bräuchtest du einfach einen Thread, der auf User-Input wartet, während der normale Worker weiterläuft. Dieser Thread liest dann entweder von der Standardeingabe, oder von einem Socket, oder…
Wie klein ist denn deine Hardware? Auf einem normalen Linux-System würde ich einfach von der Standardeingabe lesen. Später kannst du immer noch per netcat ein Netzwerk-Socket dranhängen.
-
nman schrieb:
Wie klein ist denn deine Hardware? Auf einem normalen Linux-System würde ich einfach von der Standardeingabe lesen. Später kannst du immer noch per netcat ein Netzwerk-Socket dranhängen.
Oder GNU Screen nutzen.
Erstmal würde ich jedenfalls auch keinen Server implementieren.
-
Also das Board hat 2 Schnittstellen. Einmal ein USB Interface welches eine Ethernet Schnittstelle und virtuelle COM-Ports bereit stellt. Es soll nun ein COM Port benutzt werden, um Kommandos an ein auf dem Board laufendes C++ Programm zu senden.
Es muss auf jeden Fall so sein, dass jeder mit einem Rechner, einem Kabel und irgendwie sowas wie Putty das Gerät steuern können soll. Was brauche ich da? Irgendeine Art von COM-Port library?
Christoph
-
Ok. Ich bin jetzt soweit, dass ich Strings über den Seriellen Port senden und empfangen kann. Ich würde ganz gern mal allgemein wissen, wie Putty & Co. das eigentlich so machen.
Warten die in einer Schleife darauf, dass jemand etwas in ein Terminal eingibt und schicken das eingegebene direkt zurück, sodass die Eingabe angezeigt wird? Weil wenn man in Putty was eintippt, passiert ja erstmal nix und die Eingabe kommt auf der anderen Seite heraus.