Ok,
gut zu wissen.
Aber was wäre das beste GUI-Framework für einen Newbie.
Und gibt es eine Rahmenprogramm, an welchen man langsam an die Sache rankommt.
Derzeit arbeite ich nur mit der xlib und das ist sehr muehsam und wahrscheinlich programmiert keiner damit Dialog Programme.
Wahrscheinlich ist der Artikel
http://www.c-plusplus.net/forum/viewtopic-var-t-is-126450.html
wohl am besten ...
Gruss
Problem gelöst.
So, hatte mittlerweile Zeit die ganze Sache mal anständig auszuprobieren. Funktioniert ganz gut bis jetzt.
Hier noch mal kurz der Ablauf (falls jemand was ähnliches machen will)
1. serielle Schnittstelle überwachen
2. wenn Daten anstehen, diese Lesen
3. XOpenDisplay(...)
4. mit XGetInputFocus(...) das Fenster im Vordergrund ermitteln
5. Daten der Schnittstelle aufbereiten und mit XSendEvent(...) an die Applikation leiten
6. XCloseDisplay(...)
Wichtig dabei:
Das Paket xorg-dev (so heißt es unter Kubuntu) muss installiert sein.
Dem Linker das Flag -lX11 mitgeben.
Hi!
Ich hab seid einigen Tagen ein ziemlich nerviges Problem, durch google hab ich leider nichts gefunden was mir weiterhilft, also wende ich mich an euch.
Ich programmiere seid ca. nem halben jahr an kiba-dock (ein gnome basierter dock mit physik engine, real transparency und einigen nutzlosen effekten, natuerlich opensource).
Nun zu meinem problem: ich versuche ein pluginsystem zu integrieren. Ich bin schon soweit, dass ich libs fuer die jeweiligen plugins erstelle, die dann nach /usr/lib/kiba-dock installiert werden. Der maincode ruft keine der Pluginfunktionen mehr direkt auf, allerdings muss jeweis die init funktion der plugins aufgerufen werden, dies moechte ich mit dload("pluginlibrary"); erreichen, allerdings funktioniert das nie wie es soll, unter bestimmten umstaenden bekomme ich folgende errormessage beim starten des docks:
failed to load /usr/local/lib/kiba-dock/plugins/liblauncher.so
/usr/local/lib/kiba-dock/plugins/liblauncher.so: undefined symbol: add_spacer
die plugins nutzen jeweils funktionen aus dem maincode.
vorher hab ich einfach objecte fuer die quellcodedateien erstellt und dann zu einem binary zusammengelinkt.
die plugins includen also header des maincodes, ich weiz allerdings nicht ob das reicht um die funktionen auch aufzurufen, eigentlich muessen die plugins ja mit den dock objecten verlinkt werden oder so aehnlich. und ich glaub hier is das problem (aba sicher bin ich mir da auch nich), also was muss ich genau tun damit ich die funktionen der header meines mainprogramms in den plugins auch benutzen kann?
hier ist ein link zum kompletten projekt, ich poste bei bedarf aba auch gern hier relevanten code: http://forum.beryl-project.org/download.php?id=275&f=38
EDID: sry hab schon hilfe bekommen, nach einigen stunden googlen war ich schon ziemlich verzweifelt, dabei hab ich nur ganz stunpf was uebersehen. naja eher peinlich, ich hab dlopen falsch benutzt
manchmal is man halt blind
Schlecht. Sehr schlecht. So wirst du weit mehr als 2Mhz bekommen (bitte lasst eure 386er im Schrank, ich glaube euch, dass ihr damit weniger hinbekommt). - Nur wirst du es nie schaffen so genau Frequenzen zu realisieren.
Eventuell kommst du mit busy-waiting nahe an das Ergebniss, wobei es dann natuerlich davon abhaengt wann genau der Sheduler dein Programm ran laesst. Je hoeher die Last des PCs, desto ungenauer wird das ganze.
Afair gehn die interen Timer bis max. 1MHz, und bin mir nicht mal sicher ob du das praktisch ueberhaupt erreichen kannst.
Wartet dein dispatcher mit select() auf neue Verbindungen? Wenn ja, kannst du eine pipe einrichten und mit select darauf warten. Ein Thread kann dann seine Information in die pipe schreiben, der dispatcher wird darauf geweckt.
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
OK danke erstmal... Allerdings weiß ich nicht so genau, wie man mit popen umgeht.
Da ich das gleiche schonmal mit Python gemacht habe und da das auch mit popen ging, hab ich mir gedacht, vielleicht geht der Rest auch so. Rausgekommen ist folgender Code, der (natürlich) nicht funktioniert:
int main()
{
string Ausgabe;
Ausgabe = repr(popen("/home/till/projekte/Steuerung/v1.0/Example", "r").read());
cout << Ausgabe;
pclose("/home/till/projekte/Steuerung/v1.0/Example");
}
Ausgabe beim Kompilieren:
start.cpp: In function ‘int main()’:
start.cpp:11: error: request for member ‘read’ in ‘popen(((const char*)"/home/till/projekte/Steuerung/v1.0/Example"), ((const char*)"r"))’,
which is of non-class type ‘FILE*’
start.cpp:11: error: ‘repr’ was not declared in this scope
start.cpp:14: error: cannot convert ‘const char*’ to ‘FILE*’ for argument ‘1’ to ‘int pclose(FILE*)’
Ich hoffe, es ist verständlich, was ich erreichen wollte... Wie geht das richtig? Freue mich über jede Hilfe
PS: Kenn mich in C++ noch nicht so aus
Also der minimalste Zeitintervall den ich brauch sind 250 µs.
unter windows hab ich das ganze ja schon umgesetzt,
und da hab ich bei zeitintervallen von 250 µs noch keine probleme
gehabt. Und die meisten sagen, dass das unter linux auch möglich ist!?
mfg
hallo!
ich möchte gerne mittels der regex.h von linux eine split() funktion für strings schreiben. so a la java/php. normale matches krieg ich hin aber wie mach ich jetzt ein split? hab bei google leider nix sinnvolles gefunden. hat vielleicht jemand ein beispiel bitte?
thx
sn0b
Also den Diskettenwechsel stellt Linux auf jeden fall fest,
jedesmal wenn ich eine neue einlege, versucht Ubuntu die Disk zu mounten.
Danke für den Link.
mir kommt da grad der subtile verdacht, dass es vielleicht klappen würde, einfach ganz einfach vorzugehen.
packet an port x
xinetd startet dämon der für port x eingetragen ist
dämon listen auf port x, eingabe ist quasi garantiert
dämon reagiert ( und beendet sich, also KEINE endlosschleife wie normal)
fertig
könnte evtl. funktionieren, müsste ich mal ausprobieren.