Forum: PC-Programmierung PC104, C# + WPF


von OsirisBob (Gast)


Lesenswert?

Hallo zusammen,

zuerst zu meiner Person: Ich bin 26 Jahre alt und habe Medieninformatik 
studiert. Seit neusten beschäftige ich mich in meinem Job mit der 
Programmierung von Maschinen in C.

Jetzt zu meiner Frage. Die Maschine soll auch eine Fernbedienung haben. 
IN dieser soll sich ein Touchscreen befinden. Der Benutzer soll anhand 
der GUI die Maschine steuern. Jetzt habe ich noch ein paar Fragen. Ein 
paar Antworten habe ich schon beim durchsuchen des Forums gefunden.

Ist es möglich auf einer PC104 ein Interface laufen zu lassen, welches 
mit C# und WPF bzw. XAML programmiert wurde? ODer würde ihr eher eine 
andere Hardware für die Fernbedienung nutzen? Die Kommunikation in der 
Maschine geht über einen CANBus.

Ich hoffe ich befinde mich hier im richtigen Forum.

Vielen Dank für Eure Antworten,

Robert

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Ist es möglich auf einer PC104 ein Interface laufen zu lassen

Solltest Du mit "eine PC104" einen embedded PC meinen, dann kann Deine 
Frage dann mit ja beantwortet werden, wenn dessen Hardware ausreichend 
Resourcen für die Anwendung mit sich bringt und das, was auch immer Du 
mit "Fernbedienung" meinst, irgendwie sinnvoll mit diesem embedded PC 
kommunizieren kann.

von HalfBit (Gast)


Lesenswert?

Ok - drei Fragen:

Touch-Screens lassen sich zum einen sehr leicht mit WPF-Programmieren. 
Selbst Multi-Touch ist bereits ab Werk dabei. Für einfache Klicks 
Buttons etc. in XAML ablegen, Designen und die Events in der 
Code-Behind-Datei verarbeiten (eine Sache von Minuten ;-)). Visual 
Studio Express ist bereits ausreichend.

PC/104 ist nur eine normierte Bauform und sagt wenig über die verwendete 
Hardware aus. Für WPF muss eine GPU mit mindestens DirectX 
9-Unterstützung vorhanden sein, um die API vollständig zu nutzen. Die 
PC/104-Boards mit ATOMs haben fast immer eine solche GPU mit dabei (Oft 
angeboten: ATOM 450 mit Intel GMA 3150). RAM 1GB Minimum. Mehr ist mehr!

Um zum CANBus-Durchzukommen ist ein leichter Kniff notwendig. Stellt der 
Anbieter ein SDK bereit, dann kann die DLL zur CANBus-Steuerung einfach 
mit C# und P/Invoke eingebunden werden.

von OsirisBob (Gast)


Lesenswert?

Hallo,

danke Dir! Genau diese Antworten brauchte ich!

> Touch-Screens lassen sich zum einen sehr leicht mit WPF-Programmieren.
> Selbst Multi-Touch ist bereits ab Werk dabei. Für einfache Klicks
> Buttons etc. in XAML ablegen, Designen und die Events in der
> Code-Behind-Datei verarbeiten (eine Sache von Minuten ;-)). Visual
> Studio Express ist bereits ausreichend.

WPF fürs Design und C# für die Logik hab ich schonmal programmiert. Das 
dürfte das kleinste Problem sein.

> PC/104 ist nur eine normierte Bauform und sagt wenig über die verwendete
> Hardware aus. Für WPF muss eine GPU mit mindestens DirectX
> 9-Unterstützung vorhanden sein, um die API vollständig zu nutzen. Die
> PC/104-Boards mit ATOMs haben fast immer eine solche GPU mit dabei (Oft
> angeboten: ATOM 450 mit Intel GMA 3150). RAM 1GB Minimum. Mehr ist mehr!

Genau solche PC104 mit diesen Eigenschaften haben wir! Also mit 2GB Ram.

> Um zum CANBus-Durchzukommen ist ein leichter Kniff notwendig. Stellt der
> Anbieter ein SDK bereit, dann kann die DLL zur CANBus-Steuerung einfach
> mit C# und P/Invoke eingebunden werden.

hmm das weiss ich jetzt nicht! Der Anbieter ist Advantech.

Noch zu den PC104, wie laufen die? Muss ich zuerst WIndows Embedded 
installieren?

Vielen Dank im Voraus,


Robert

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Noch zu den PC104, wie laufen die? Muss ich zuerst WIndows Embedded
> installieren?

Sicher, ohne Betriebssystem tun die Dinger gar nichts. Wenn eine 
Festplatte oder SSD dranhängt, kannst Du natürlich auch ein beliebiges 
anderes Windows nutzen.

von OsirisBob (Gast)


Lesenswert?

Vielen Dank für deine Antworten!
Ich denk ein  WIndows Embedded sollte darein, oder? Welche Version 
würdet ihr für ein solches Unterfangen auswählen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Ich denk ein  WIndows Embedded sollte darein, oder?

Ganz plumpe Gegenfrage: Warum?

Und hast Du Dich schon mal damit beschäftigt, was es bedeutet, Windows 
Embedded irgendwo zu installieren, und welcher Aufwand erforderlich ist, 
um überhaupt an eine Lizenz dafür zu gelangen?

Unterschätz das nicht!

von OsirisBob (Gast)


Lesenswert?

Nee hab ich noch nicht! Dann habe ich den Aufwand wohl unterschätzt. Und 
warum ist das so schwer?

Die Anwendung auf der Fernbedienung sollte sofort laufen, also damit 
meine ich ohne zuerst Windows hochfahren zu müssen. Gibts da noch andere 
Möglichkeiten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Und warum ist das so schwer?

Weil Windows Embedded nicht im Laden verkauft wird, sondern nur gegen 
einen entsprechenden Lizenzvertrag von Microsoft rausgerückt wird. Und 
das Werkzeug, das man dann verwendet, um das System an die vorhandene 
Hardware anzupassen, ist auch deutlich komplexer als die übliche 
Windows-Installationsroutine.

OsirisBob schrieb:
> Gibts da noch andere Möglichkeiten.

Wenn die Fernbedienung eine Fernbedienung ist (also damit ein anderer PC 
fernbedient wird, auf dem die fernzubedienende Software läuft), dann 
würde eine Fernbedienungssoftware à la VNC, Remote Desktop o.ä. auf dem 
Rechner mit dem Touchscreen genügen. Und die gibt es auch in Form 
minimalistischer Linux-Systeme, die recht flott von CF-Karten o.ä. 
booten.

von HalfBit (Gast)


Lesenswert?

OsirisBob schrieb:
> Die Kommunikation in der
>
> Maschine geht über einen CANBus.

Ich glaube das ist eher mit "Fernsteuerung" gemeint? Für Prototypen und 
Kleinstserien kann man auch ein XP-Pro (oder zur not 7 Pro) verwenden. 
Die eigentliche Arbeit ist eher die CAN-Schnittstelle zu kapseln und mit 
dem UI zu verbinden. Hier gibt es keine Unterschiede zwischen Windows 
embedded und Windows XP Pro. Der Resourcen-Bedarf von XP-Pro ist 
natürlich größer.

Der eigentliche Unterschied ist die Fähigkeit passgenaue OS-Images mit 
Windows embedded zu erstellen (Target Analyzer), Windows ist hier in 
"Feature Sets"/Komponenten zerlegt. Nur die Teile, die Deine Anwendung 
braucht werden eingebunden und das OS-Image wird dann auf alle Geräte 
einer Serie verteilt. Man kann dann auch aus dem internen Flash der PC 
104's booten.

Während der Entwicklung würde ich einfach eine HD ans Board hängen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

HalfBit schrieb:
> Der eigentliche Unterschied ...

Ja, das ist soweit richtig. Aber der andere, nicht zu unterschätzende 
Unterschied, ist der Aufwand, den man treiben muss, um überhaupt an ein 
Windows Embedded zu kommen. Wie schon geschrieben, im Laden wird das 
nicht verkauft, und das Vertragswerk, das man unterzeichnen muss, das 
räumt MS erstaunliche Rechte ein (so z.B. das Recht zum "Auditing", d.h. 
Besuch in den Geschäftsräumen mit Kontrolle der Lizenznutzung). Bei XPe 
war das ein fünfzehnseitiger englischsprachiger Vertragstext ("Microsoft 
OEM Customer License Agreement for Embedded Systems").

von OsirisBob (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Ja, das ist soweit richtig. Aber der andere, nicht zu unterschätzende
> Unterschied, ist der Aufwand, den man treiben muss, um überhaupt an ein
> Windows Embedded zu kommen. Wie schon geschrieben, im Laden wird das
> nicht verkauft, und das Vertragswerk, das man unterzeichnen muss, das
> räumt MS erstaunliche Rechte ein (so z.B. das Recht zum "Auditing", d.h.
> Besuch in den Geschäftsräumen mit Kontrolle der Lizenznutzung). Bei XPe
> war das ein fünfzehnseitiger englischsprachiger Vertragstext ("Microsoft
> OEM Customer License Agreement for Embedded Systems").

Sollen Sie doch kommen ;)! Nee im Ernst. Ich habe mit unserer 
IT-Abteilung gesprochen, die schauen was sich machen lässt.

Zur Entwicklung ist eine Festplatte garkeine schlechte Idee.

HalfBit schrieb:
> Der Resourcen-Bedarf von XP-Pro ist
> natürlich größer.

Ist nicht der von Win 7 grösser?

Rufus Τ. Firefly schrieb:
> Wenn die Fernbedienung eine Fernbedienung ist (also damit ein anderer PC
> fernbedient wird, auf dem die fernzubedienende Software läuft), dann
> würde eine Fernbedienungssoftware à la VNC, Remote Desktop o.ä. auf dem
> Rechner mit dem Touchscreen genügen. Und die gibt es auch in Form
> minimalistischer Linux-Systeme, die recht flott von CF-Karten o.ä.
> booten.

Die Fernbedienung bedient leider keinen anderen PC sondern eine mobile 
Maschine.

Ich werde mich wohl oder übel in die Thematik Win Embedded einarbeiten 
müssen.

von OsirisBob (Gast)


Lesenswert?

Ich habe jetzt neben WIndows Embedded auch von Windows CE gelesen. Was 
haltet ihr davon?

Also nochmal der Sachverhalt. Fernbedienung mit embedded PC (PC 104), 
Interface soll mit C# und WPF gemacht werden. Ich überlege auch ob nicht 
eine andere Hardware genutzt werden soll. Das wichtigste ist jedoch, 
dass die Fernbedienung schnell eingeschaltet werden kann, da man diese 
relativ oft an und ausschaltet.

Da wäre schon die nächste Frage. Das .NET Framework soll in Win Embedded 
abgespeckt sein. Infwiefern? Wisst ihr das?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Ich habe jetzt neben WIndows Embedded auch von Windows CE gelesen. Was
> haltet ihr davon?

Das ist noch schlimmer. Windows Embedded hat den Vorteil, daß Du 
Programme und Devicetreiber dafür auch auf einem ganz normalen Windows 
laufen lassen kannst (und umgekehrt), was die Entwicklung ganz enorm 
vereinfacht. Und Du kannst Dein Zielsystem zunächst mit einem normalen 
Windows und einer Festplatte betreiben, und irgendwann später, wenn die 
eigentliche Softwareentwicklung abgeschlossen oder sehr weit 
fortgeschritten ist, den Schwenk von normalem Windows zu Windows 
Embedded vornehmen.

CE ist ganz anders. Da musst Du alles passend dafür entwickeln und 
kannst nichts von einem herkömmlichen System übernehmen, keine 
Devicetreiber, keine Software, nichts. Ich würd' die Finger davon 
lassen.

Windows Embedded (und die zugehörigen Entwicklungswerkzeuge wie den 
"Platform Builder") gibt es als zeitlich limitierte Testversion bei MS 
zum Herunterladen, damit kannst Du schon etwas herumspielen, wenn Du 
Dich darauf vorbereiten willst.

Empfehlenswert sind hier auch ein paar Bücher:

Sean Liming
"Windows XP Embedded Advanced"
"Windows XP Embedded Supplemental Toolkit"

(wenn Du mit XPe arbeiten möchtest)

und "Professional's Guide To Windows® Embedded Standard 7"

von OsirisBob (Gast)


Lesenswert?

Ok Dir vielen Dank für die Antwort! Das hilft mir weiter!

von OsirisBob (Gast)


Lesenswert?

Hallo nochmal,

ich habe noch eine Frage: Der PC 104 bietet nur eine SATA SChnittstelle. 
Wenn ich jetzt aber ein CD Laufwerk zum installieren und eine Festplatte 
zum entwickeln anschliessen möchte hab ich schon ein Problem: Ein 
anderer Anschluss wie IDE ist leider nicht dran. Habt ihr ne Idee?

Vielen Dank für Eure Antworten!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Benenne das Ding doch mal, statt es nur "PC104" zu nennen. Das wäre so, 
als würde man "der ATX" schreiben.

Selbst wenn das Ding nur eine SATA-Schnittstelle hat, sollte es doch 
auch über eine USB-Schnittstelle verfügen. Und an der kannst Du ein 
CD-/DVD-Laufwerk anschließen.

von OsirisBob (Gast)


Lesenswert?

Advantech PCM-3362 ....

Ja das stimmt, es hat einen USB Eingang. Ok dann so, vielen Dank!

von Arc N. (arc)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Benenne das Ding doch mal, statt es nur "PC104" zu nennen. Das wäre so,
> als würde man "der ATX" schreiben.
>
> Selbst wenn das Ding nur eine SATA-Schnittstelle hat, sollte es doch
> auch über eine USB-Schnittstelle verfügen. Und an der kannst Du ein
> CD-/DVD-Laufwerk anschließen.

Mittlerweile booten die Windows-Installationen auch direkt von USB (wenn 
das BIOS mitmacht...). Bzw. kann man auch die älteren dazu bringen: 
USBoot, WinToFlash, nLite, vLite etc.

von OsirisBob (Gast)


Lesenswert?

Hallo zusammen,

ich habe da noch eine Frage zu Windows Embedded. Ich hoffe einer von 
Euch kann mir sagen was da schief läuft. Also ich habe Win XPe Tools 
installiert, d.h. Database Target- und Component-Designer bzw. alles was 
man zum erstellen eines Win Xpe Images braucht. Der Industrie-Pc 
(Advantech PCM-3362) läuft. Habe zum testen mal Win XP Pro installiert 
--> Geht!

Um jetzt das Image zu erstellen habe ich mit Tap.exe (Tools des XPe 
Entzicklungsstudios) die Hardware des Zielgerätes ermittelt und im 
Component Designer alles festgelegt und in die Datenbank importiert. Im 
Target-Analyser wird die neue Komponente auch gefunden. Wenn ich jetzt 
mein Image zusammenstelle und es auf eine externe Festplatte lade 
funktioniert es leider nicht. DIe Meldung "A disk read error occured" 
erscheint. Kann mir wer sagen was ich falsch mache? Ich habs auch schon 
auf CD gebrannt und so veruscht aber geht auch nicht.

Vielen Dank für Eure Antworten,


OsirisBob

von JojoS (Gast)


Lesenswert?

Nimm lieber WES2011, das neuere Win Embedded das auf Win7 basiert. Da 
gibt es vorgefertigte  Installationen und das lässt sich auch vom USB 
Stick installieren. Die Bedingungen für Toolkit und Lizenzen sind wie 
bei XP Embedded, aber es ist wesentlich einfacher. Man braucht zwar mehr 
RAM und HD Speicher, aber ein schlankes XP Image zu bauen kostet sehr 
viel Zeit. Und ist mit c# und WPF kaum möglich.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Wenn ich jetzt mein Image zusammenstelle und es auf eine externe
> Festplatte lade funktioniert es leider nicht.

Und wie "lädst" Du Dein Image auf die externe Festplatte?

Mit welchem Dateisystem ist die formatiert? Und welche 
Dateisystemunterstützung hast Du Deinem XPe-System mitgegeben?

von OsirisBob (Gast)


Lesenswert?

Vielen Dank für Eure Antworten!!

Rufus Τ. Firefly schrieb:
> OsirisBob schrieb:
>> Wenn ich jetzt mein Image zusammenstelle und es auf eine externe
>> Festplatte lade funktioniert es leider nicht.
>
> Und wie "lädst" Du Dein Image auf die externe Festplatte?
>
> Mit welchem Dateisystem ist die formatiert? Und welche
> Dateisystemunterstützung hast Du Deinem XPe-System mitgegeben?

Die Festplatte ist in NTFS formatiert und die Dateiunterstützung hab ich 
auch NTFS ... ich kopiere das Image vor Entwicklungsrechner auf die 
Platte.

JojoS schrieb:
> Nimm lieber WES2011, das neuere Win Embedded das auf Win7 basiert. Da
> gibt es vorgefertigte  Installationen und das lässt sich auch vom USB
> Stick installieren. Die Bedingungen für Toolkit und Lizenzen sind wie
> bei XP Embedded, aber es ist wesentlich einfacher. Man braucht zwar mehr
> RAM und HD Speicher, aber ein schlankes XP Image zu bauen kostet sehr
> viel Zeit. Und ist mit c# und WPF kaum möglich.

Ok Ich schaumal ob ich das besorgen kann...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Die Festplatte ist in NTFS formatiert und die Dateiunterstützung hab ich
> auch NTFS ... ich kopiere das Image vor Entwicklungsrechner auf die
> Platte.

Wenn Du das dateiweise machst, dann sollte das System davon booten 
können. Allerdings darfst Du das Kopieren nicht mit dem Explorer machen, 
der ist zu doof dazu, sondern in der Kommandozeile mit xcopy /kreisch, 
damit auch alle versteckten und Systemdateien kopiert werden.

So habe ich vor ein paar Jahren meine XPe-Systeme betrieben, alle 
Dateien des "Images" per xcopy auf eine NTFS-formatierte CF-Karte und 
die Kiste konnte davon starten.

von OsirisBob (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> OsirisBob schrieb:
>> Die Festplatte ist in NTFS formatiert und die Dateiunterstützung hab ich
>> auch NTFS ... ich kopiere das Image vor Entwicklungsrechner auf die
>> Platte.
>
> Wenn Du das dateiweise machst, dann sollte das System davon booten
> können. Allerdings darfst Du das Kopieren nicht mit dem Explorer machen,
> der ist zu doof dazu, sondern in der Kommandozeile mit xcopy /kreisch,
> damit auch alle versteckten und Systemdateien kopiert werden.
>
> So habe ich vor ein paar Jahren meine XPe-Systeme betrieben, alle
> Dateien des "Images" per xcopy auf eine NTFS-formatierte CF-Karte und
> die Kiste konnte davon starten.

Das war echt ein guter Tipp... bin ich nicht drauf gekommen aber geht 
leider noch nicht. Meine Prozedur ist aber theoretisch richtig so, oder? 
Wenn ja dann wird irgendne Komponente sein die fehlt. Habs auch schon 
auf cd gebrannt und versucht zu starten aber geht auch nicht...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Meine Prozedur ist aber theoretisch richtig so, oder?

Scheint schon so zu sein. Die Platte ist wie an das Zielsystem 
angeschlossen?

von OsirisBob (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Scheint schon so zu sein. Die Platte ist wie an das Zielsystem
> angeschlossen?

Sie ist per USB angeschlossen...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dann muss dem Zielsystem noch die Fähigkeit mitgegeben werden, von USB 
zu booten. Das würde ich, um die Anzahl der möglichen Fehlerquellen 
etwas zu reduzieren, fürs erste sein lassen, also die Platte direkt am 
Zielsystem anschließen.

von OsirisBob (Gast)


Lesenswert?

Wenn ich das Ganze auf CD brenne... gehts auch nicht... ka warum ... 
bald hau ich da mim Hammer drauf ;)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

OsirisBob schrieb:
> Wenn ich das Ganze auf CD brenne... gehts auch nicht... ka warum ...

Weil auch das was anderes ist als von einer direkt angeschlossenen 
Festplatte zu booten.

Eine CD verwendet beispielsweise kein NTFS, also musst Du auch noch 
Unterstützung für das dort verwendete Dateisystem beischnallen.

Versuche die Anzahl der Fehlerquellen gering zu halten, schließe die 
Platte direkt an. Wenn das geht, dann kannst Du anfangen, Schnörkel und 
Schleifchen dranzukleben.

von OsirisBob (Gast)


Lesenswert?

Es geht!!! Vielen Dank für deine Hilfe. Habs jetzt direkt mit SATA 
gemacht und es geht! Jetzt schaue ich mal welche Komponenten ich brauche 
und welche nicht...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Na also. Erster Schritt erfolgreich begangen.

Gratuliere!

von OsirisBob (Gast)


Lesenswert?

Dankeschön!

von OsirisBob (Gast)


Lesenswert?

Hallo zusammen,

wenn ich mit dem Advantech PCM-3362 von USB booten möchte.. kann ich das 
einfach im Bios umstellen oder muss ich das Bios flashen?

Vielen dank für Eure Antworten!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das wird nur jemand wissen, der diese oder eine sehr ähnliche Hardware 
einsetzt - es könnte natürlich auch im Handbuch stehen.

von OsirisBob (Gast)


Lesenswert?

Ok Dank für deine Antwort. Habe jetzt die Festplatte partitioniert und 
von einer Partition gebootet. Jetzt geht es!

von OsirisBob (Gast)


Lesenswert?

Hallo zusammen,

hat jemand von Euch Erfahrungen damit gemacht, wie schnell Windows 
Embedded Standard 7 starten kann?
Also wie schnell kann es im besten Fall hochfahren?
Gibt es Tipps und Tricks?
Da ich ein WPF-App laufen lassen möchte ist das schwer zu schätzen...

Vielen Dank für Eure Antworten!

Wünsche allen frohe Weihnachten!!

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.