Forum: PC-Programmierung FLTK statisch linken


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tom A. (toma)


Angehängte Dateien:

Lesenswert?

Ich habe unter Ubuntu-Linux ein kleines Testprogramm mit FLTK/Fluid 
geschrieben, womit ich dynamisches/statisches linken teste. Dynamisch 
gelinkt ist es 21 kByte, statisch gelinkt 580,7 kByte groß. Statisch 
dazu gelinkt wird nur die FLTK-Library. Beide Programme funktionieren 
auf meinem PC gleich (Bild OutWin.png die anderen Bilder zeigen die 
Dateigrößen).

Wenn ich mir in der Konsole mit "file QtTest" dessen Eigenschaften 
ansehe steht dort beide male "dynamically linked", was mich etwas 
verunsichert.
----------------
QtTest: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), 
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, 
BuildID[sha1]=ab966515cfaa015f744d7423b747e04cff3242fe, for GNU/Linux 
3.2.0, with debug_info, not stripped
----------------
Wenn ich in der Konsole mit "ldd QtTest" der statisch gelinkten Version 
die Liste der dynamisch gelinkten Librarys für das Programm ansehe, 
finde ich dort kein FLTK. Dies bedeutet zusammen mit der Dateigröße 
doch, daß FLTK statisch gelinkt ist. In der dynamisch gelinkten Version 
ist FLTK mit aufgeführt.
----------------
  linux-vdso.so.1 (0x00007ffc34b56000)
  libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007c6826b15000)
  libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007c68269d5000)
  libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007c6826600000)
  libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 
(0x00007c68269b5000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007c6826200000)
  /lib64/ld-linux-x86-64.so.2 (0x00007c6826c8b000)
  libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007c682698b000)
  libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007c6826983000)
  libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 
(0x00007c682697b000)
  libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007c6826963000)
  libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007c6826956000)
----------------
Meine Frage: Da ich auf allen meinen Rechnern FLTK installiert habe, wie 
kann ich sicher sein dass das Programm auf Rechnern ohne installiertes 
FLTK läuft?

Gruß. Tom

von Motopick (motopick)


Lesenswert?

Tom A. schrieb:

> Wenn ich mir in der Konsole mit "file QtTest" dessen Eigenschaften
> ansehe steht dort beide male "dynamically linked", was mich etwas
> verunsichert.

Du hast ja nur einen Teil statisch dazugelinkt.
Da bleibt noch genug uebrig. :)

Edith:
> wie
> kann ich sicher sein dass das Programm auf Rechnern ohne installiertes
> FLTK läuft?

Sicher ist das nicht. Wenn naemlich das FLTK nicht (mehr) zu den
uebrigen Bibliotheken passt.

: Bearbeitet durch User
von Tom A. (toma)


Lesenswert?

Konnte das Problem selbst lösen.

Habe eine statisch und eine dynamisch gelinkte Version des Programms 
erstellt und gespeichert. Danach FLTK deinstalliert und jede Version mal 
gestartet. Die dynamische Version läuft nicht mehr, die statische 
Version funktioniert.

Da der PC ein normales Ubuntu Entwicklungssystem, ohne Besonderheiten, 
ist sollte das Programm auf den meisten Linux-PC's laufen. Und falls 
nicht kann man mit "ldd" nachsehen was fehlt.

Jetzt hoffe ich nur, dass ich FLTK wieder installieren kann. Bei 
www.fltk.org ist heute der Wurm drin und sie sind nicht erreichbar.

Tom

von Motopick (motopick)


Lesenswert?

Tom A. schrieb:
> Konnte das Problem selbst lösen.
>
> Habe eine statisch und eine dynamisch gelinkte Version des Programms
> erstellt und gespeichert. Danach FLTK deinstalliert und jede Version mal
> gestartet. Die dynamische Version läuft nicht mehr, die statische
> Version funktioniert.

Umbenennen haette gereicht.

> Da der PC ein normales Ubuntu Entwicklungssystem, ohne Besonderheiten,
> ist sollte das Programm auf den meisten Linux-PC's laufen. Und falls
> nicht kann man mit "ldd" nachsehen was fehlt.

Das ist nur das Prinzip Hoffnung. Oder hast du geprueft welche
externen Referenzen noch von FLTK angezogen werden? Die koennen ja
durchaus in weiteren dynamisch gelinkten Libs liegen...

von Alexander S. (alesi)


Lesenswert?

Tom A. schrieb:
> Jetzt hoffe ich nur, dass ich FLTK wieder installieren kann. Bei
> www.fltk.org ist heute der Wurm drin und sie sind nicht erreichbar.

Normalerweise installiert man doch Pakete für seine Distribution über 
den Paketmanager seiner Distribution. Bei Dir also deb Pakete aus 
Ubuntu. Brauchst Du die aller neueste Version von fltk?

von Εrnst B. (ernst)


Lesenswert?

Tom A. schrieb:
> Jetzt hoffe ich nur, dass ich FLTK wieder installieren kann. Bei
> www.fltk.org ist heute der Wurm drin und sie sind nicht erreichbar.

Wenn das Programm nachher möglichst problemlos auf andere 
Linux-Installationen übertragbar sein soll, wär libfltk-dev / 
libfltk1.3-dev aus den Paketquellen vmtl. besser.

Verhindert Probleme mit:
Motopick schrieb:
> externen Referenzen noch von FLTK angezogen

Und du könntest dynamisch linken, und das dann einfach in ein passendes 
.deb verpacken, was die Abhängigkeiten reinzieht.

von Daniel A. (daniel-a)


Lesenswert?

Normalerweise ist das ganz einfach, wenn man alles statisch linken will. 
Man macht einfach "gcc -s" statt "gcc", fertig. Solange man die Libs mit 
-lirgendnelib angegeben hat, und nicht mit libirgendnelib.so oder 
libirgendnelib.a, nimmt es dann jenachdem ob man -s angegeben hat oder 
nicht die .a oder die .so, und damit geht dann alles out of the box.

Dann kann man noch Optimierungen einschalten (-Os -Wl,--gc-sections 
-ffunction-sections -fdata-sections), dann ist es oft auch gar nicht 
mehr allzu gross.

von Tom A. (toma)


Lesenswert?

Da wurden ja noch einige Tips gegeben, danke euch - werde ich mir 
ansehen.

Da FLTK 1.3.8 nun schon weg war, habe ich die Version 1.4 ausprobiert. 
Dort ist das Problem genau umgekehrt, es wird immer die statische 
Bibliothek gelinkt. Da hat so ein einfaches Programm schnell eine Größe 
von 1MByte. Bin wieder zurück auf 1.3.8.

Ist ja nicht für ein Projekt, sondern zum lernen und ausprobieren.

Tom

von Rolf M. (rmagnus)


Lesenswert?

Daniel A. schrieb:
> Normalerweise ist das ganz einfach, wenn man alles statisch linken will.
> Man macht einfach "gcc -s" statt "gcc", fertig.

Maja, nicht ganz. Man muss schon auch von sämtlichen verwendeten Libs 
eine statische Version installiert haben. Und in manchen Fällen, wie es 
z.B. oft bei openssl gemacht wird, werden dynamische Bibliotheken auch 
zur Laufzeit per dlopen() nachgeladen.

von Manfred M. (bittbeisser)


Lesenswert?

Ich benutze FLTK schon seit einigen Jahren. Aber der Anfang war sowohl 
bei Debian als auch bei Ubuntu etwas holperig. Das lag daran, dass beide 
Distris gegen libfltk.so linken wollen oder aber zu alt sind.

Ich installiere FLTK seit dem immer aus dem Quelltext von der 
Projektseite. Da wird dann normalerweise der FLTK-Anteil immer statisch 
eingebunden, die Systembibliotheken jedoch dynamisch. Auf der 
Projektseite hatte ich damals ein Muster für ein entsprechendes Makefile 
gefunden.

Das funktionierte bisher immer recht gut. Ich hatte meine Programme 
bisher immer auf Ubuntu Systemen entwickelt. Einmal hatte ich zu einem 
Linux-Treffen einen USB-Stick vorbereitet und durfte erstaunt 
feststellen, dass mein Programm sogar auf einem WeTab lief. Ein anderes 
Programm lief später, ohne Installation, auch auf Arch Linux. Ich 
vermute, das dass das gewünschte Verhalten ist.

Ich kann die Installation aus dem Quelltext nur empfehlen, da man da 
immer aktuell ist und zudem auch viele Beispielprogramme bekommt, aus 
denen der Sinn einiger Methoden erst ersichtlich wird. Und da ich auch 
schon mal an einem BugFix mitgearbeitet hatte, kommt für mich sowiso 
keine andere Variante mehr in Frage.

von Christoph M. (mchris)


Lesenswert?

Gerade eben habe ich FLTK mal kurz ausprobiert, weil ich es noch nicht 
kannte.
In Ubuntu konnte ich es einfach via Synaptic ohne weiteren Aufwand 
installieren.
Die Hauptschwierigkeit das "Hello World" ans Laufen zu bringen war statt 
einfach "gcc hello.cxx" fltk-config zu verwenden:

fltk-config --compile hello.cxx

Eigentlich ist das ganze hier beschrieben:
https://stackoverflow.com/questions/53136185/fltk-box-element-not-visible-in-window

Nun an eine Frage an euch: Kann man mit FLTK einen Graph zur Darstellung 
von Daten aus dem Mikrocontroller erzeugen?

von Harald K. (kirnbichler)


Lesenswert?

Christoph M. schrieb:
> Nun an eine Frage an euch: Kann man mit FLTK einen Graph zur Darstellung
> von Daten aus dem Mikrocontroller erzeugen?

Diese Frage kannst Du herunterbrechen:

Kann man mit FLTK einen Graphen zur Darstellung von Daten erzeugen?

https://www.fltk.org/documentation.php/doc-1.1/Fl_Chart.html
(ein willkürliches, mit fünf Sekunden Google-Suche gefundenes Beispiel)

Welchen Unterschied sollte es machen, ob die Daten aus einem 
Microcontroller, einer Datei oder von sonstwo kommen?

von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

Harald K.
>Kann man mit FLTK einen Graphen zur Darstellung von Daten erzeugen?
>https://www.fltk.org/documentation.php/doc-1.1/Fl_Chart.html
>(ein willkürliches, mit fünf Sekunden Google-Suche gefundenes Beispiel)

Tja, heutzutage ist ja "ChatGPT", das ich die letzte halbe Stunde mal 
verwendet habe.
Man kann sich darüber streiten, ob es das wirklich bringt. Im Anhang 
aber mal ein dynamischer Graph, der mit 100ms Sekunden update läuft.

Zu compilieren mit

fltk-config --compile graphDynamical.cxx

Was jetzt fehlt, ist das Empfangen von Daten über die serielle 
Schnittstelle.

von Christoph M. (mchris)


Lesenswert?

Der Grund meiner Frage nach dem Graphen war, dass der "Fast Light 
User-Interface Designer (FLUID)" keine Graph- oder Chartelemente 
anbietet.

https://www.fltk.org/shots.php

Das ist etwas schade, da Charts- und Graphen nun mal eine wesentliche 
Komponente technischer User-Interfaces sind.

Ein weiteres Problem ist die Anbindung der seriellen Schnittstelle. Fast 
alle PC-Guis scheinen ein Problem damit zu haben.

von Manfred M. (bittbeisser)


Lesenswert?

> Ein weiteres Problem ist die Anbindung der seriellen Schnittstelle. Fast alle 
PC-Guis scheinen ein Problem damit zu haben.

Da ist wohl was dran. Die serielle Schnittstelle brauchte ich bisher 
nicht, aber dafür das Netzwerk Interface. Bisher hatte ich nur ein 
Beispiel dafür gefunden und dafür sollte ich boost::asio installieren. 
Da sollte auch die serielle Schnittstelle enthalten sein. Aber boost 
scheint es nur komplett zu geben.

Daher habe ich mich dann direkt mit den Linux Systemfunktionen zergnügt, 
obwohl mir viele davon abgeraten hatten. War sehr lehrreich.

P.s. Mein Eindruck ist, dass allgemein davon ausgegangen wird, man könne 
nur das verwenden, was FLTK direkt anbietet. Aber man kann alles 
verwenden, was das System hergibt. Man muss nur Makefile entsprechend 
einrichten.

von Tom A. (toma)


Angehängte Dateien:

Lesenswert?

Im Bild ein Beispiel eines Linienschreibers für das LIDL 
PDM300-Multimeter. Es basiert auf dem Beispiel "NTSC Waveform Monitor 
Sim" von "Erco's FLTK Cheat Page" 
(https://www.seriss.com/people/erco/fltk/).

Es erhält seine Daten vom Multimeter, mit 3 Messungen je Sekunde, über 
einen USB/Seriell-Wandler. Benutzt werden für die Übertragung keine 
FLTK-Methoden, sondern die Funktionen des Betriebssystems.

Leider fehlt mir im Moment die Zeit das Programm fertig zu stellen, da 
ich mit einem anderen Projekt beschäftigt bin.

Tom

von Christoph M. (mchris)


Lesenswert?

Manfred M.
>Beispiel dafür gefunden und dafür sollte ich boost::asio installieren.
>Da sollte auch die serielle Schnittstelle enthalten sein. Aber boost
>scheint es nur komplett zu geben.

Das habe ich auch schon versucht zu compilieren. Da scheint aber auch 
"fltk-config --compile " zu versagen und man muss es wahrscheinlich 
irgendwie anpassen.

>Daher habe ich mich dann direkt mit den Linux Systemfunktionen zergnügt,
>obwohl mir viele davon abgeraten hatten. War sehr lehrreich.

Hast Du dafür ein kurzes Codebeispiel. Wäre super, vielleicht kann man 
es einfach anpassen.

Tom A.
>Im Bild ein Beispiel eines Linienschreibers für das LIDL
>PDM300-Multimeter.
>Es basiert auf dem Beispiel "NTSC Waveform Monitor
>Sim" von "Erco's FLTK Cheat Page"
https://www.seriss.com/people/erco/fltk/ntsc-waveform-sim/ntsc-waveform-sim.cxx.txt

Ich konnte es kompilieren und es sieht ganz nett aus, aber die serielle 
Schnittstelle fehlt. Hast Du einen Link auf den Linienschreiber?

von Manfred M. (bittbeisser)


Lesenswert?

Ich weis jetzt nicht wofür du ein Codebeispiel haben willst. Der 
Netzwerkclient hat ca 1700 Zeilen. Ich könnte zwar die Methode 
send_request() raus kopieren, aber dann fehlen viele Informationen.

Ich fange mal mit dem Makefile aus meinem aktuellen Projekt an. Da kann 
man dann sehen, wie man auch so Dinge wie die clib2 einbinden kann (ca. 
40 Zeilen habe ich raus gekürzt).
1
CXX      = $(shell fltk-config --cxx)
2
CC       = $(shell fltk-config --cc )
3
DEBUG    = -g
4
CXXFLAGS = $(shell fltk-config  --use-images --cxxflags ) -I.
5
CXXFLAGS += $(shell pkg-config --cflags glib-2.0)
6
LDFLAGS  = $(shell fltk-config  --use-images --ldflags )
7
LDSTATIC = $(shell fltk-config  --use-images --ldstaticflags )
8
LDSTATIC += $(shell pkg-config --libs glib-2.0)
9
LINK     = $(CXX)
10
DEPENDFILE = depend
11
12
PROGDIR    := /usr/local/bin/
13
ICONDIR    := /usr/share/pixmaps/
14
DESKTOPDIR := /usr/share/applications/
15
FILESDIR   := /usr/local/share/vted/
16
17
TARGET = vted
18
OBJS = vted.o\
19
  File_Box.o\
20
  ImageBox_.o\
21
  ...
22
  Unicode_Input.o
23
24
SRCS = vted.cpp\
25
  File_Box.cpp\
26
  ImageBox_.cpp\
27
  ThumbBox.cpp\
28
  ...
29
  Unicode_Input.cpp
30
31
.SUFFIXES: .cpp .o
32
%.o: %.cpp
33
  $(CXX) $(CXXFLAGS) $(DEBUG) -c $<
34
35
.SUFFIXES: .c .o
36
%.o: %.c
37
  $(CC) $(CXXFLAGS) $(DEBUG) -c $<
38
39
$(TARGET): $(OBJS)
40
  $(LINK) -o $(TARGET) $(OBJS) $(LDSTATIC)
41
42
43
depend: $(SRCS)
44
  $(CXX) -MM $(SRCS) > $(DEPENDFILE)
45
-include $(DEPENDFILE)
46
47
install:
48
  install -s $(TARGET) ${PROGDIR}
49
  @cp -u $(TARGET).png ${ICONDIR}
50
  @cp -u $(TARGET).desktop ${DESKTOPDIR}
51
  @mkdir -p $(FILESDIR)
52
  @cp -u frame_mask.png $(FILESDIR)
53
  @cp -u vted_splash.png $(FILESDIR)
54
  @cp -u $(TARGET).cfg $(FILESDIR)
55
#
56
uninstall:
57
  @rm ${DESKTOPDIR}$(TARGET).desktop
58
  @rm ${ICONDIR}$(TARGET).png
59
  @rm ${PROGDIR}$(TARGET)
60
  @rm $(FILESDIR)frame_mask.png
61
  @rm $(FILESDIR)vted_splash.png
62
  @rm $(FILESDIR)$(TARGET).cfg
63
  @rmdir $(FILESDIR)
64
65
clean:
66
  rm -f *.o vted
Die Make Datei habe ich mir im Laufe der Jahre aus verschiedenen 
Beispielen zusammengebastelt. Da sind auch reine C-Module dabei, deshalb 
zwei Compiler. Und die Debug Info wird bei
1
install -s
 enfernt.

p.s. ich vergaß zu erwähnen, wo bei mir libfltk liegt:

/usr/local/lib/libfltk.a

: Bearbeitet durch User
von Tom A. (toma)


Angehängte Dateien:

Lesenswert?

Hallo Christoph.

Ich habe dir das wesentliche aus dem PDM300-Programm zusammen kopiert.
In "Schnittstelle suchen und konfigurieren" wird die durch ihren Namen 
angegebene Schnittstelle gesucht und mit den aufgeführten Parametern 
konfiguriert. Default ist ttyACM0 eingestellt, es könnte auch ttyUSB0 
oder tty0 oder etwas anderes sein. Welche Schnittstelle du brauchst, 
musst du für dein System nachsehen und der Initialisierung in "strSio" 
übergeben.

Da das PDM300 nur sendet ist nur eine Methode "ReadTelex" vorhanden, in 
der mit der Funktion "iNum = read(SPort, &cDaten[1], 9);" ein Telegramm 
vom Multimeter empfangen wird. Zum senden wäre es die Funktion "write".

Es hilft sich zu erinnern, dass unter Linux alles eine Datei ist. Auch 
die Schnittstellen werden behandelt wie eine Datei. Sich mit den 
Grundlagen der seriellen Schnittstelle vertraut machen, hilft die 
Einzelheiten zu verstehen.

Ich hoffe es hilft dir weiter. Tom

von Christoph M. (mchris)


Lesenswert?

Danke für eure Code-Beispiele.

Ich habe mal versucht, das Mulitmeter-Beispiel zu compilieren:

fltk-config --compile FLTK-SIO.cxx

Seltsamerweise wirft es sofort einige Fehler:

FLTK-SIO.cxx:16:1: error: ‘strSio’ does not name a type
   16 | strSio = "/dev/ttyACM0";      // Schnittstelle ACM0 
voreinstellen


Obwohl strSio in Zeile 12 definiert ist.

von Harald K. (kirnbichler)


Lesenswert?

Christoph M. schrieb:
> Seltsamerweise wirft es sofort einige Fehler:

Das ist eine Zuweisung außerhalb einer Funktion.

Kann es sein, daß Dir ein paar Grundlagen in C bzw. C++ fehlen?

von Tom A. (toma)


Lesenswert?

Hallo Christoph.

Das Beispiel ist kein Programm zum kompilieren, sondern eine 
zusammenkopierte Reihe an Codestücken die du, an den jeweils richtigen 
Stellen, anpassen und in dein Programm einbauen kannst. Die Beispiele 
zeigen nur den Umgang mit der seriellen Schnittstelle.

Echten Quellcode für Programme kann man in diesem Forum leider nicht 
veröffentlichen. Wenn man keine end- und fruchtlosen Diskussionen um 
Kaisers Bart haben möchte, darf man keinen Schaltplan, kein 
Platinenlayout und keinen Quellcode zeigen.

Gruß. Tom

von Christoph M. (mchris)


Lesenswert?

>Das Beispiel ist kein Programm zum kompilieren,

Danke, das habe ich leider zu spät gesehen.

>Echten Quellcode für Programme kann man in diesem Forum leider nicht
>veröffentlichen. Wenn man keine end- und fruchtlosen Diskussionen um
>Kaisers Bart haben möchte, darf man keinen Schaltplan, kein
>Platinenlayout und keinen Quellcode zeigen.

Da hast Du recht, das Forum ist oft etwas nörgelig. Es gibt ja keinen 
perfekten Quellcode, deshalb kann man auch immer meckern.

Ich versuche immer trotzdem die Beispiele vollständig und kompilierbar 
zu halten ( inclusive Compilier-Command Line) wie im Beispiel oben:

Beitrag "Re: FLTK statisch linken"

Das sollte bei jedem Linux-Rechner einfach so laufen.

von Tom A. (toma)


Lesenswert?

Hallo Christoph

Ich habe dir eine Mail, mit dem vollständigen Quellcode des 
Multimeterprograms, geschrieben. Ohne die Hardware startet es nicht, 
aber es zeigt dir die nötigen Schritte im Zusammenhang. Es ist ein FLTK 
Programm.

Viel Erfolg. Tom

von Tom A. (toma)


Lesenswert?

Hier noch ein Link zum Programm hier im Forum:

Beitrag "Re: Interface für Parkside PDM-300 Multimeter"

Da steht ein wenig beschrieben, wie es aufgerufen wird und funktioniert.

von Harald K. (kirnbichler)


Lesenswert?

Tom A. schrieb:
> Echten Quellcode für Programme kann man in diesem Forum leider nicht
> veröffentlichen. Wenn man keine end- und fruchtlosen Diskussionen um
> Kaisers Bart haben möchte, darf man keinen Schaltplan, kein
> Platinenlayout und keinen Quellcode zeigen.

Das ist natürlich Quatsch, sofern man keinen besonders abnormen 
Programmierstil hat, oder sehr grobe Schnitzer in seinen Code eingebaut 
hat.

von Manfred M. (bittbeisser)


Lesenswert?

> Das ist natürlich Quatsch, sofern man keinen besonders abnormen Programmierstil 
hat, ...

Hier habe ich so etwas noch nicht erlebt, aber ein anderen Foren schon. 
Der eine sagt, man soll lange und aussagekräftige Namen verwenden. 
Gleichzeitig soll die Zeilenlänge 80 Zeichen nicht überschreiten.

Wieder andere verlangen das die geschweiften Klammern immer eine eigen 
Zeile belegen sollen. Ich finde das Quatsch, weil dadurch der Lesefluss 
unterbrochen wird (Bildschirme sind dafür nicht hoch genug). Oft wird 
man auch dafür kritisiert, dass man bestimmte Befehle oder Methoden 
verwendet oder nicht verwendet.

Bei ubuntuusers.de wurde ich mal z.B. nur dafür runtergemacht, weil ich 
eine Funktion selber programmieren wollte, die in einer Lib bereits 
vorhanden war (das Rad neu erfinden u.s.w.). Aber wie soll man dann 
Programmieren lernen, wenn man sich nicht an praktischen Problemen 
ausprobiert?

von Christoph M. (mchris)


Lesenswert?

Tom A.
>Ich habe dir eine Mail,

Ging leider nicht. Ich habe Dir mal eine PN geschrieben.

von Tom A. (toma)


Lesenswert?

Hallo Christoph.

Habe dir die Mail an die andere Adresse geschickt.

von Christoph M. (mchris)


Lesenswert?

Tom A.
>Habe dir die Mail an die andere Adresse geschickt

Vielen Dank dafür. Nach einigen Mühen konnte ich das Programm 
kompilieren.
Ich habe leider kein "Multimeter PDM-300-C2", deshalb habe ich es mit 
einem Arduino simuliert.
Der Arduino kann damit als vermutlich etwas ungenauerer Ersatz der 
Spannungsmessung des Multimeters benutzt werden:

Beitrag "Multimeter PDM-300-C2 Simulator"

Vielleicht hat mal jemand Lust, es zu testen :-)

von Tom A. (toma)


Lesenswert?

Gratuliere!

Die serielle Schnittstelle ist gar nicht so schwer zu benutzen. Wenn man 
es einmal verstanden und gemacht hat geht es auch in künftigen Projekten 
gut.

Weiterhin viel Erfolg. Tom

von Tom A. (toma)


Lesenswert?

Da das veröffentlichen von Quellcode hier im Forum zu nichts führt, 
halte ich mich damit sehr zurück. Das bedeutet aber nicht, dass die 
benötigten Funktionen der seriellen Schnittstelle ein Geheimnis sind. In 
diesem Beitrag:

Beitrag "Re: FLTK statisch linken"

ist im Anhang "FLTK-SIO.cxx" eine Sammlung von Funktionen zum Umgang mit 
der seriellen Schnittstelle in C/C++ zu finden.

Tom

von Harald K. (kirnbichler)


Lesenswert?

Tom A. schrieb:
> Da das veröffentlichen von Quellcode hier im Forum zu nichts führt,
> halte ich mich damit sehr zurück.

Das ist, auch wenn es wiederholt wird, schlicht und einfach nicht wahr.

von Tom A. (toma)


Lesenswert?

Du erklärst hier deine Meinung einfach mal schnell zur Wahrheit? gewagt

Es ist, auch wenn ich mich wiederhole, wahr!

Und jetzt? Jetzt haben wir zwei sich widersprechende Wahrheiten.

Wie gesagt - es führt zu nichts.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Tom A. schrieb:
> Es ist, auch wenn ich mich wiederhole, wahr!

Aha.

Hunderte, wenn nicht gar tausende Threads, in denen Leute ihren Code 
präsentieren, sei es unter "Projekte & Code" oder sonstwo, sagen was 
anderes.

von Rolf M. (rmagnus)


Lesenswert?

Tom A. schrieb:
> Du erklärst hier deine Meinung einfach mal schnell zur Wahrheit? gewagt

Das tust du aber ebenfalls.

> Wie gesagt - es führt zu nichts.

Wenn jemand deiner Behauptung widerspricht, dass das Posten von Code 
hier nichts bringe, ist das kein Argument, das für selbige Behauptung 
spricht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.