www.mikrocontroller.net

Forum: PC-Programmierung USB programmieren How to?


Autor: Asterix-007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leutz,

auch auf die Gefahr hin müde belächelt zu werden möchte ich die große
Gemeinde an meinem Problem teilhaben lassen und hoffe auf ein recht
großes Echo.

Also mein Problem:  Ich habe ein Demo-Board mit einem PIC-µC drauf,
welcher über USB mit dem PC verbunden werden kann (von Velleman). Es
ist auch Demo-Software mit Quelltext mit dazu, aber in Delphi, VB oder
C++ für Borland (C++-Builder).
Ich beschäftiger mich aber zur Zeit mit C# und möchte das ganze auf C#
portieren. Soweit ich das gesehen habe darf ich die ganze Sache von
Grund auf neu machen, was mir aber gar nicht so unrecht ist (der Weg
ist das Ziel!!).
Ich habe hier im Forum und bei Google gestöbert aber bin nicht so
richtig fündig geworden. Auch in der MSDN gab es nicht das was ich
brauche.

Was brauche ich?
Ich suche eine Anleitung (ganz universell) zum aktivieren und
ansprechen der USB-Schnittstelle.
Also ganz einfach Step bei Step (z.B. Erkennen des USB-Devices, ID
ermitteln, Daten senden, Verbindung beenden)
Ich suche KEINE Code-Schnipsel oder fertigen Code!!!!!!
Recht wäre mir aber ein Hinweis auf verschiedene Funktionen in der
API.
Soweit wie ich gesehen habe treten die Probleme doch öfter hier im
Forum auf. Ich könnte mir auch vorstellen ein Tutorial zu erstellen und
das hier im Forum mit anzubieten (da kann dann der obligatorische
Verweis drauf gelegt werden ;-)) ). Dazu sollte das aber erst einmal
funktionieren!!!

Denkt bitte daran, auch wenn es banal erscheint:

Der Weg ist das Ziel!

Danke!

Asterix

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
www.usb.org für die USB-Spezifikation

http://libusb-win32.sourceforge.net/

für eine Library, um aus Usermode-Programmen mit USB-Devices
kommunizieren zu können.

Bietet C# irgendeinen Vorteil?

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Recht wäre mir aber ein Hinweis auf verschiedene Funktionen in der
> API.

Das sind zwar die selben Funktionen, die auch in den anderen Sprachen
verwendet werden, aber das kannst Du haben. :-)

Zur Kommunikation mit dem Treiber gibt es die Funktionen CreateFile,
CloseHandle, ReadFile, WriteFile und DeviceIoControl.

Zum Erkennen der Devices gibt es das Setup-API. Die wichtigsten
Funktionen für Dich heißen SetupDiGetClassDevs,
SetupDiEnumDeviceInterfaces, SetupDiGetDeviceInterfaceDetail und
SetupDiDestroyDeviceInfoList.

Willst Du über Änderungen an der Konfiguration informiert werden, mußt
Du Dir zusätzlich RegisterDeviceNotification ansehen.

Ich frage mich aber, ob das Problem nicht etwas tiefer sitzt. Weißt Du
im Groben, wie der USB funktioniert? Weißt Du, wie Dein Demo-Board mit
dem PC kommuniziert? Fällt das Gerät unter eine Standard-Geräteklasse?
Wenn ja, dann könnte es zur Kommunikation noch weitere spezielle
Funktionen im API geben. Wenn nein, hast Du Dich dann mit der
Dokumentation des zugehörigen Treibers beschäftigt? Bist Du Dir im
klaren darüber, welche IOCTLs er verarbeitet?

> Ich könnte mir auch vorstellen ein Tutorial zu erstellen und
> das hier im Forum mit anzubieten

Das ist leider nicht so einfach, andere füllen damit soagr ganze
Bücher. Für den Start kann ich Dir nur Jan Axelsons Werk empfehlen, das
gibt es auch in deutsch. Darin gibt es auch jede Menge Beispiele, an
denen man jede Menge lernen kann. Allerdings gibt es keinen Code für
den PIC und auch nichts in C#.

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich suche eine Anleitung (ganz universell) zum aktivieren und
>ansprechen der USB-Schnittstelle.

Sowas gibt's standardmäßig bei Windows nicht (im Gegensatz zu
RS232-Schnittstellen), d.h. es gibt keinen "allgemeinen" Treiber für
alle USB-Geräte. Als Open-Source-Projekt gibt's allerdings diese
Software (wurde bereits von Rufus genannt):

http://libusb-win32.sourceforge.net/


Bei Windows ist eine API für HID-Geräte (Mäuse, Keyboards, etc.)
vorhanden.

Da Du sagst, daß bei Deinem Board bereits Software zur Ansteuerung
dabei ist, muss dann entweder auch ein Treiber dabei sein (hoffentlich
mit Anleitung), oder der PIC implementiert ein HID-Gerät.

Infos zu HID-Geräte-Ansteuerung unter Windows gibt's hier:
http://www.lvr.com/hidpage.htm

Autor: Asterix-007 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke erst einmal für die schnellen Antworten!

Ich hab mal ein Beispielprojekt von Velleman mit den Dokumentationen
angehängt. Weiteres bei www.velleman.be . Der Kit hat die Bezeichnung
K8055.

So zu mir: Ich kann ganz gut mit µC umgehen und kann in C auch recht
gut programmieren. Und über DOS etwas anzusprechen ist auch kein
Problem.
Ich will (und muß) aber jetzt einen Schritt weiter gehen und mich mit
Windows auseinander setzen, z.B. Daten über USB an den PC schicken und
auswerten.

@Rene und Jochen :

Mit den Kits und Demos ist das so eine Sache. Das funktioniert schon,
aber wehe du willst etwas abwandeln und eigene Wege gehen!!! Und die
Doku bezieht sich nur auf's Löten und Installieren (toll!)
Die dll ist schon dokumentiert, schein aber in einem Projekt nicht zu
laufen (ich habe das BCB-Projekt versucht auf VS.NET zu portieren).
Mir scheint, genaueres weiß ich nicht, der PIC implementiert ein
HID-Gerät. Ich kann nur eine Adresse einstellen, es ist aber nicht
dokumentiert was für eine. Woran erkenne ich ob der PIC ein HID-Gerät
installiert?

Mein Buch über USB 2.0 liegt "natürlich" zu Hause und ich bin erst am
Freitag wieder dort, dann werde ich es mir zu Gemüte führen. Das ist
aber nur die halbe Warheit.

Ich suche schon seit Tagen in der MSDN oder im Netz nach Info's. Aber
etweder ich bin zu blind (:-)) oder mir fehlt einfach ein treffender
Begriff um zum richtigen Ergebnis zu kommen.

Desweiteren habe ich in meiner beruflichen Praxis (Weiterbildung von
Arbeitslosen) festgestellt, daß viele Dinge, welche für uns banal sind
(z.B. rechte Maustaste => Kontextmenü) für Neulinge schier
unüberwindbare Hindernisse darstellen.
So muß ich den Leuten auch erst mal zeigen, wie man eine SPS
einschaltet, urlöscht oder die Daten einspielt.

Es wäre schön wenn ein paar von euch in dieser Richtung denken würden
und mir mit ein paar Sätzen das Grundprinzip der Initialisierung und
das Ansprechen der USB-Schnittstelle erklärt. Vielleicht läßt sich ja
noch der Bogen zur Seriellen mit schließen und dann wäre ich
glücklich!

@ Rene: Die Funktionen habe ich mir schon einmal angeschaut, das wäre
ein erster Schritt. Hier gilt das oben Gesagte zu den Suchbegriffen.
Einen Code für den PIC direkt brauche ich nicht, das biege ich mir dann
schon hin und auch den C++-Code kann ich bestimmt in C# portieren, WENN
ich das Prinzip des Schnittstellenzugriffs kapiert habe. Darum geht es
mir eigentlich!

@Rufus:  C# ist der Nachfolger von C++. C++ soll mittlerweile so
überladen (doppeldeutiger Code) sein, das die Programmierer selber
Probleme haben sollen ihn wieder aufzudröseln. So steht es im Statement
zu C#. Aber hier mit Bedacht in der Wenn-Form geswchrieben, da ich
leider kein Informatiker bin und keine weiteren Erfahrungen damit
habe.

Ihr wißt ja sicher aus eigener Erfahrung:  Programmiert ist schnell,
aber den Code nach 14 Tage immer noch zu verstehen ist etwas anderes.

So, ich geh jetzt erstmal in den Biergarten freu und dann bewältige
ich den neuen Input!

Habt erstmal vielen Dank dafür!!

Asterix

Autor: Asterix-007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin, moin,

nach intensiver Suche und Recherche (Dank eurer Tipps) bin ich erst mal
einen Schritt weiter. => Ich weiß zumindest erst einmal, was ich alles
nicht weiß und noch lernen muß.... :-((

Naja, es wird schon werden.

@Jochen: Der PIC wird als HID-Gerät erkannt, mit der exakten
Bausatz-Kennung (K8055).

Ein paar Bücher (Axelson u.a.) hab ich mir bei Amazon bestellt. Ich
werde darüber berichten, ob das was taugt!

Die Funktionen vom Jochen (die Tipps) werd ich in den nächsten Tagen
mal in Code setzen und probieren.

Noch eine Frage: Ich habe zu Hause (mir war so) die
Win2000-API-Referenz liegen. Kann ich die im Groben auf XP übertragen
oder gibt es da gravierende Differenzen?? Oder ist es nur noch ein
Staubfänger? ;-)

Danke an alle und schönes WE!!!

Asterix

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Betr. API-Referenz:

Der Unterschied zwischen Windows XP und Windows 2000 ist ziemlich
gering.
Beide sind Versionen von Windows-NT (2000 ist 5.0, XP ist 5.1); aus was
für Gründen auch immer hat MS aber aufgehört, Windows NT so zu nennen.
(Der 2003 Server hat die interne Versionsnummer 5.2)

Mit XP sind einige neue Dinge hinzugefügt worden, die 2000 noch nicht
kannte, aber das betrifft weniger die Programmierung als die Benutzung
(Remote Desktop, schnelle Benutzerumschaltung, buntes geblubber).

Anders sieht es mit Windows 95 und seinen Aufgüssen aus (98 und Me),
die unterscheiden sich teilweise ziemlich deutlich von Windows NT.

Viel Erfolg!

BTW: Die Behauptung, C# wäre der Nachfolger von C++, halte ich für
ziemlich gewagt. So etwas kann nur einer Marketingabteilung einfallen,
es stimmt schlichtweg nicht.

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'NT' steht für New Techology und das ist nach 10 Jahren doch etwas
abgegriffen... Eine wesentliche Neuerung gegenüber NT sind die
nachladbaren Treiber wie sie ja auch für USB nötig sind. Vorgabe für NT
war eigentlich ein Microkernel der das schon können sollte, aber
irgendwie haben die Jungs und Mädels von MS das dann doch nicht
hingekriegt.
Die Funktionen sind im DDK dokumentiert. In meiner VisualStudio 2003
Hilfe sehe ich die auch, kann aber auch sein das ich mal das DDK
installiert habe. Die wichtigsten wurden hier von René König genannt,
wenn z.B. nach SetupDiEnumDeviceInterfaces googelst findest du sofort
was auf www.codeguru.com. Insgesammt ist das aber harter Stoff, eher
was für lange winterabende...
Als Beispiel kann man auch die Delphi-Treiber für den IOWarrior nehmen.
Da hat man gleich eine Hardware zum ausprobieren (zumindest PC seitig).
Ist zwar Delphi, aber sehr sauber programmiert und nutzt die ganzen DDK
Befehle um das USB Device zu erkennen und zu nutzen. Ich wollte das auch
mal nach C# umsetzen, aber der Anfall ging vorbei :-) Mit der
DirectInput unterstützung (ab DirectX 9) geht das für HID Devices auch
einfacher.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.
  "'NT' steht für New Techology und das ist nach 10 Jahren
  doch etwas abgegriffen..."

D'accord. 10? Jetzt sind's knapp 12*, als W2K 'rauskam, waren's 8.

  "Eine wesentliche Neuerung gegenüber NT sind ..."

Bitte in solchen Sätzen "NT" durch "NT 4.0 (und älter)" ersetzen.
W2K und XP sind eben auch NT.
Grund für die Haarspalterei ist die Vermeidung von Verwechslungen; es
gibt immer noch Leute, die glauben, Windows XP wäre der Nachfolger von
Windows Me.

Allerdings sehe ich keinen Grund, einen Namen nur deshalb durch einen
(auch noch irreführenden) anderen zu ersetzen, nur weil er alt ist; das
scheint mir ein Hirngeschwulst aus der Marketingabteilung zu sein. Naja,
deren "Gedanken"gänge waren mir noch nie nachvollziehbar.

Wie auch immer, die Treiberprogrammierung für egal welche
Windows-Version ist ... reichlich eklig.
Wobei wohl in absehbarer Zeit Abhilfe zu erhoffen ist; MS scheint eine
neue Treiberarchitektur namens WDF (Windows Driver Foundation) bzw.
KMDF (Kernel Mode Driver Framework) in der Mache zu haben.

Unter http://www.osronline.com/article.cfm?article=390 gibt es einen
Artikel darüber, allerdings muss man sich vorher bei OSR registrieren,
um an diesen Artikel 'ranzukommen.


*) habe im Herbst '93 mit einer Beta von NT 3.1 gearbeitet

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die offiziele Handelsbezeichnung ist aber nunmal Windows XP, 2000 oder
NT ver x.y. Auch der 'ver' Befehl in der Kommandozeile meldet ein
Windows XP oder 2000 (nur der 2003er Server ist lediglich 'Microsoft
Windows'). Beim Booten meldet Windows 2000 auch noch 'built on NT'.
Wer also Treiber programmieren will und XP für einen Dos Aufsatz hält
der hat noch viel mehr zu lernen...
Und die Treiberprogrammierung würde ich nicht eklig sondern komplex
nennen. Da muss man sich eben mit Kernel/Usermode beschäftigen. Die
nützlichen Features wie Hot Plug&Play, Suspend, Hibernate usw. muss der
Treiberprogrammierer heute alle im Hinterkopf haben wenn es ein
ordentlicher Treiber werden soll.

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soweit ich weiß ist C# von Microsoft. Der Name wurde nur so gewählt,
damit sich das Produkt besser verkauft. C# ist absolut kein Nachfolger
von C++, obwohl das viele glauben.
Ich würde die Finger von C# lassen, da man sich immer weiter in die
Fänge von Microsoft begiebt. Das mag sich zwar jetzt etwas übertriegen
anhören, aber ich möchte nur auf eines hinweisen: Sicheres
Betriebssystem - TCPA.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Herbert: Das klingt zwar etwas paranoid, Dir ist aber trotzdem
zuzustimmen.
Worin der Vorzug einer Programmierumgebung besteht, die eine 20 MByte
große Laufzeitumgebung benötigt, das hat sich mir noch nicht so recht
erschließen können. Das bezieht sich auf das ganze dot-net-Geraffel,
nicht nur auf C#.
Auch finde ich es äußerst ungeschickt, aus Angst vor Pointern und
"buffer overflows" eine andere Programmiersprache zu verwenden, die
die zugrundeliegende Maschine (noch) weiter abstrahiert - wenn ein so
"erfahrener" Programmierer mal mit "echtem" C oder C++ arbeiten
muss, fällt er ähnlich unsanft auf die Schnauze, wie ein
Pascal/Delphi-Programmierer beim Erstkontakt mit Pointern.

Andererseits: Sollen die Lemminge, äh, anderen ... doch alle sich auf
C# stürzen, so kann man mit fundiertem C- und C++-Wissen ziemlich viele
verwaisten Nischen besetzen. Und Programme mit vorhersagbarem
Laufzeitverhalten, größerer Hardwarenähe und geringerem Codeumfang
schreiben. Auf jeder Hardware, auch auf kleinen 8-Bit-RISC-Prozessoren,
und nicht nur auf fetten 32-Bit-Maschinen mit fetten
32-Bit-Betriebssystemen, die das dot-net- oder auch mono-Geraffel
unterstützen.

Geht Ihr nur, Ihr Lemminge!

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C# wird ja bald in Longhorn nativ unterstütz, dann ist zumindest die
20MB-Download Hürde schonmal weg. Auch sollen einige der neuen
Funktionen nur mit C# so richtig funktionieren... leider...

Meiner Meinung nach muss man ja irgendwie neue, schnellere und teurere
Prozessoren fördern und wie ginge das besser als mit immer langsameren
Virtualisierungen der Hardware.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobi: Da hast Du sicherlich recht. Ich muss mir dringend ein vierfach
Doppelkern-Opteron-System mit mindestens 16 GByte RAM anschaffen, sonst
kann ich mit den neuesten MS-Produkten nicht mehr mithalten. Und 'ne
Graphikkarte mit 150 Watt Leistungsaufnahme und 512 MByte RAM, die
dürfte für einfache Konsolanwendungen knapp reichen.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich bin da, im Gegensatz zu einigen anderen hier, recht emotionslos.
Jede Sprache sollte dort eingesetzt werden wo es sinnvoll ist.

Niemals würde ich auf die Idee kommen mit C# oder Java einen 8 Bitter
programmieren zu wollen oder irgendwelche Algorithmen zu implementieren
bei denen es auf jede µs ankommt. Genausowenig würde ich auch nur einen
Gedanken daran verschwenden mit C eine GUI-Anwendung zu schreiben.
schauder

Das Argument der 20MB Laufzeitumgebung hat IMHO auch keinerlei
Gültigkeit. Die nächste Version von Windows bringt das eh schon mit und
wenn man das eben jetzt schon verwenden will muß man einmal die 20MB
runterladen. Na und? Das dürfte einen Windowsnutzer kaum stören wo
doch für ein jungfräuliches XP knapp 300MB Download nötig sind um es
auf einen halbwegs sicheren Stand zu bringen.

Das .net Framework beseitigt zusätzlich einige Probleme die sich in
Windows angesammelt haben. Ich sag nur "DLL-Hell". C# bringt nebenbei
einige nette Sprachkonzepte (Propertys, Attribute, Delegates) mit die
die von Java und C++ übertreffen und kaum eine Eigenschaft von C++
vermissen lassen (ich vermisse außer Templates eigentlich nichts).

Longhorn wird, wenn sie es wirklich so umsetzen wie angekündigt,
vermutlich den Prozessor zumindest von der Grafikarbeit etwas entlasten
da der Grafikkarte mehr Arbeit überlassen wird.

Matthias

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich benutze in der Firma vorwiegend C# oder VB.Net. Damit lassen sich
im vergleich zu C++ in minimaler Zeit sehr gute Anwendungen
Programmieren, und das ist es was Zählt, wie schnell ein Produkt
verkauft werden kann.
Wer in C# mit Pointern arbeiten will, kann das weiterhin tun. Man kann
eine Methode Problemlos als unsaved Code markieren. Somit sind wieder
alle sauereien die in C/C++ zugelassen sind erlaubt.
Der vorteil von Managed Code ist das er Sehr Stabil ist, da man
gezwungen ist sich an eine Strikte Objektorientierung zu halten.

Das Argument C#/Java/Phyton... seien langsam ist totaler unsinn.
Untersuchungen haben gezeigt das bei strikter Objektorientierter
Programmierung C++ total unterlegen ist. Delphi kommt da noch
einigermaßen mit. Aber NIE war C++ schneller. In der C´t war vor ca 1
Jahr über mehrere ausgaben hinweg ein Vergleich der vor und Nachteile
von Java, .Net, C++.
Und kein mittleres bis größeres SW Projekt wird heute noch ohne
konsequente objektorientierung Programmiert. Es gibt Sicher auch
Ausnahmen wo C++ seine Berechtigung hat, wie Schnelle Algorithmen,...
oder im Embedded bereich wo ich NICHT mit C# oder Java Programmieren
möchte. Da gehört C oder ++ hin.

Ob man nun .Net oder Mono Py oder Java nimmt muss jeder mit seinem
eigenen Gewissen vereinbaren. Es gibt ja genug alternativen. Aber im
moment ist C# das bessere Java, da Microsoft aus den fehlern von Sun
und C++ lernen konnte und keine altlasten mitschleppen muss.

Sebastian

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sebastian

Du redest Unsinn:

"Das Argument C#/Java/Phyton... seien langsam ist totaler unsinn.
Untersuchungen haben gezeigt das bei strikter Objektorientierter
Programmierung C++ total unterlegen ist. Delphi kommt da noch
einigermaßen mit. Aber NIE war C++ schneller. In der C´t war vor ca 1
Jahr über mehrere ausgaben hinweg ein Vergleich der vor und Nachteile
von Java, .Net, C++."

Bei strikter objektorientierter Programmierung total unterlegen, ROFL

C#/Java/Python sind nie schneller als C++, wenn der C++ Programmierer
Ahnung von seiner Programmiersprache hat. Der Vergleich in der c't
treibt jeden halbwegs erfahrenen C++ Programmierer die Tränen in die
Augen.

Das einzige wo du recht hast ist, daß man mit C# schneller Projekte
umsetzen kann, weil der garbage collector einfach die Programmierung
enorm erleichtert. Die Klassenbibliothek bei C# ist auch ganz gut. Auch
die Sache mit den Events gefällt mir bei C# sehr gut.

Ich hab nur bedenken, daß man mit C# irgendwann bei richtig großen
Projekten, an denen man Jahre entwickelt, in einer Sackgasse endet. Ich
hatte z.B. so ein Problem beim Lesen einer riesigen XML-Datei. In C++
mit dem Apache XML Parser war die Datei in weniger als 0.5s eingelesen
und ausgewertet. Mit C# hat das über 30s gedauert! Deshalb gilt für
mich: für kleine Projekte ok, für große Projekte muss C# erstmal seine
Tauglichkeit beweisen.

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sebastian

Zu deiner Aussage:

"Wer in C# mit Pointern arbeiten will, kann das weiterhin tun. Man
kann
eine Methode Problemlos als unsaved Code markieren. Somit sind
wieder
alle sauereien die in C/C++ zugelassen sind erlaubt."

hätte ich noch ne kleine Frage. Schonmal die STL verwendet?

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn C# so super und schnell ist, warum ist dann Windows immer so
langsam? Womit wird Windows programmiert?
Oder haben die da nur hunderte von Warteschleifen eingebaut?
Warum benötigt eine neuere Version immer um hunderte MB mehr Speicher?

Den Vorteil, den ich bei C und C++ sehe ist, dass er verschiedenste
Firmen gibt, die einen Compiler erzeugen.
Bei C# ist es nur eine und diese kann nach belieben die Syntax ändern
wie ihr beliebt.
Und wer garantiert einem, dass das entwickelte Progamm nach einer
Entwicklungszeit von 2 Jahren sich auf dem neueste C#-Compiler
überhaupt noch ohne Probleme kompilieren lässt?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab in C# mal ein Miniprogramm geschrieben. War nur ein Dialogfenster
mit einem Button. Beim Blick in Taskmanager-Prozesse ist mir fast übel
geworden, als ich gesehen habe, wieviel Megabyte dieses pissiges
Programm allokierte.

@mario
>Wenn C# so super und schnell ist, warum ist dann Windows immer
>so langsam? Womit wird Windows programmiert?

Wie meinst du das, inwiefern ist Windows langsam?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Womit wird Windows programmiert?
mit JavaScript.LOL
Natürlich mit C.Windows ist gar nicht so langsam wie manche denken.

Ich hoffe nur das der C#.NET-Krempel für MS-Sklaven sich nicht unter
Linux (wegen dem mono) ausbreitet.
Egal ob dieses .NET-Zeug stabil und sicher ist, es ist böse und:
>man begiebt sich immer weiter in die Fänge von Microsoft.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde es immer sehr schade, dass ein neues Betriebssystem immer so
viel mehr Resourcen benötigt.
Wenn man sich z.B. ein Win95 anschaut läuft es viel schneller als ein
WinXP.
Ich habe immer das Gefühl, es wird mit aller Gewalt versucht den
Rechner um jeden Preis zu bremsen. Ein schnellerer Rechner mit einem
neuen Betriebssystem läuft genauso schnell wie ein älterer Rechner mit
einem älteren Betriebssystem.
Ich bin mir außerdem sicher, dass man nicht ständig ein neues
Betriebssystem nötig wäre. Ich glaube, wenn das Betriebssystem einem
durchdachten Grundkonzept unterliegt, und nicht ständig irgendwelche
Schranken ignoriert werden (z.B. Die Festplattengrenzen mussten in der
Vergangenheit immer wieder neu definiert werden.) würden, müsste man
eigentlich mit Updates auskommen.
Z.B. das Amigabtriebssystem V1.3 aus dem Jahr 1987 kann bereits eine
2GB Festplatte ansprechen. Wenn ich an die Amigahardware denke kommen
mir sowieso die Tränen. Hier war z.B. auch das ganze
Diskettenmanagement viel besser. Wenn man dort eine Diskette einlegte,
ist nicht plötzlich das ganze System zum Stillstand gekommen. Was ist
denn heute, man kann den schnellsten PC-Rechner haben, wenn man eine
Diskette einlegt und das Directory abfragt, dann sollte man keine
Zeitkritischen Anwendungen laufen haben, denn das System ist für einige
Sekunden nicht mehr ansprechbar.
Jetzt könnte man damit argumentieren, ja Disketten benutzt man doch
heute nicht mehr. Das ist natürlich richtig, aber dassselbe Problem
besteht bei den CDROM-Laufwerken. Ein Einlegen der CD führt hier
kurzzeitig zu einem enormen Abfall der Rechenleistung. Für mich ist das
schlichtweg Pfusch und nichts anderes.

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mario

Das mit der Resourcenverschwendung ist wirklich krass bei Windows XP.
Ich hab vor einem Monat bei einem Freund ein Apple Notebook mit 400 MHz
und 256MB RAM gesehen, auf dem Mac OS 10.irgendwas lief. Echt
erstaunlich, wie schnell sich das System anfühlt. Mein Dell Inspiron
8200 mit 1.4 GHz und 256MB ist unter Windows XP praktisch nicht
verwendbar und mit 512MB immer noch arschlangsam.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird hier zwar zunehmender OT, aber trotzdem:

@Mario: Das liegt nicht an XP. Das kann mit der von Dir geschilderten
Ausstattung durchaus akzeptabel laufen. Vermutlich hast Du irgendwelche
Zusatzsoftware installiert, die das ganze zäh wie Melasse macht.
Ich tippe auf Virenscanner oder Superpakete wie "Norton Internet
Security". Die zwingen auch ganz andere Systeme in den Stillstand.

Ein sauber installiertes XP-System ist auch auf einem 500 MHz pIII
nutzbar, sofern der nur genügend Arbeitsspeicher hat (also mehr als 128
MByte).

Ich habe vier Jahre lang mit einem Inspiron 8000 mit 600/500 MHz pIII
gearbeitet.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.
Vom Virenscanner oder Zusatzsoftware rede ich erst gar nicht.
Wenn man den Norton Virenscanner installiert, kann man die
Rechnerleistung danach mindestens durch 2 teilen.
Hab mal spaßhalber den Support angerufen und gefragt, warum das
System so langsam wird, wenn man ihr Produkt, den Norton Virenscanner
installiert. Die haben geantwortet, dass ihnen das bis jetzt noch nicht
aufgefallen ist. Bin neugierig wie schnell das System mit dem
Virenscanner dann läuft, wenn es ihnen mal auffällt.

@Ein sauber installiertes XP-System ist auch auf einem 500 MHz pIII
nutzbar, sofern der nur genügend Arbeitsspeicher hat (also mehr als
128
MByte).
Das kann schon sein. Aber ich bezeichne ein sauberes System, als ein
System, wo nur Windows XP drauf ist und sonst nichts.

Wenn ich mein System sauber aufsetzte und immer mehr Programme
draufspiele wird es immer langsamer. Auch wenn kein Virenscanner oder
irgendwelche andere Software wie Zone-Alarm oder so installiert wird.
Ich kann mir nicht vorstellen, dass dies bei all den anderen
Computerbenutzern anders ist.

Zudem verschwendet WindowsXP hunderte MB an Festplattenspeicherplatz,
indem es das Servverhalten aufzeichnet und die Homepages auf die Platte
transferiert. Zusätzlich werden irgendwelche Indexdateien angelegt (auch
im Bereich 100MB), damit angeblich die Festplatte schneller durchsucht
werden kann.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Zudem verschwendet WindowsXP hunderte MB an Festplattenspeicherplatz,
indem es das Servverhalten aufzeichnet und die Homepages auf die
Platte
transferiert."

Das macht nicht XP, sondern Dein Webbrowser.
Selbst beim IE kann man das abschalten.

Auch die Index-Erzeugung kann man abschalten.

Zugegeben, man muss bei XP ziemlich viel abschalten, bevor es sich
anständig verhält, aber immerhin: Es geht.

Da es noch ein Weilchen dauern wird, bis Mac OS/x86 verfügbar ist,
müssen wir uns eben noch gedulden.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

@Mario
Zumindest der Windows Kern ist reines C. 95% der Applikationen sind
heute wohl noch in C++ geschrieben.

>Den Vorteil, den ich bei C und C++ sehe ist, dass er verschiedenste
>Firmen gibt, die einen Compiler erzeugen.

nuhr
Es gibt den C#-Compiler von Microsoft und es gibt den C#-Compiler aus
dem mono-Projekt. Das sind dann schonmal zwei.

>Bei C# ist es nur eine und diese kann nach belieben die Syntax ändern
>wie ihr beliebt.

nuhr
C++ ist standardisiert durch die ISO. C# ist standardisiert durch die
ISO.

>Und wer garantiert einem, dass das entwickelte Progamm nach einer
>Entwicklungszeit von 2 Jahren sich auf dem neueste C#-Compiler
>überhaupt noch ohne Probleme kompilieren lässt?

Wenn man ein Projekt beginnt nimmt man üblicherweise einen Compiler her
und ändert die Version eben diesen nicht mehr. Selbiges gilt für die
Runtime. Da das ganze aber standardisiert ist sehe ich da keine
Gefahr.

Der Speicherverbrauch von .net-Programmen hat einen Sockel der durch
die zusätzliche Runtime die mitgeladen werden muß verursacht wird.
Danach wächst der Speicherverbrauch auch nicht viel schneller als bei
einer in Maschinencode übersetzten Sprache. Für den Programmcode wächst
der Speicherverbrauch sogar langsamer bei komplexeren Programmen da die
IL-ASM Befehle mächtiger sind als ein ASM-Befehl für die Maschine.

BTW:
Mein XP hat mitlerweile 4 Jahre und zwei Mainboard- und
Prozessorwechsel hinter sich. Booten dauert etwas aber das System ist
nicht wirklich schneller als das parallel installierte immer nur ein
paar Wochen alte Versuchs-XP.

Ich bin weiß Gott kein M$ Fanboy aber das ein oder andere hat diese
Firma auch ganz gut hinbekommen. WindowsXP ist ordentlich stabil
solange nicht irgendwelche fremden Hardwaretreiber daher kommen und die
Stabilität versauen. Treiber laufen unter XP eben mit Systemrechten und
wenn ein Treiber mal Mist macht dann leidet gleich das ganze System
darunter. VisualStudio und dessen Debugger ist wohl das Beste was man
zur Anwendungsentwicklung bekommen kann. Word ist dagegen eher mieß im
Vergleich zu OOo.

Matthias

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias:
Zumindest Deinem letzten Absatz stimme ich ganzheitlich zu.

Dein vorletzter Absatz entält vermutlich einen Fehler (das alte XP ist
nicht wirklich schneller (?) als das Versuchs-XP).

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

schneller^Wlangsamer

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-------------
VisualStudio und dessen Debugger ist wohl das Beste was man
zur Anwendungsentwicklung bekommen kann.
-----------

aber nur das studio6 ;) beim .net bekomm ich die kriese allein schon
wegen den geänderten shortcuts...und ich "darf" auf beiden
programmieren !!

73

Autor: René König (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> beim .net bekomm ich die kriese allein schon wegen den geänderten
> shortcuts...

Extras -> Optionen -> Umgebung -> Tastatur, dann in der ComboBox
"Tastaturzuordnungschema" die Option "Visual C++ 6" wählen.

Ich verwende den ollen 6er jedenfalls nur noch, wenn man mich zwingt.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wenn man ein Projekt beginnt nimmt man üblicherweise einen Compiler
her
und ändert die Version eben diesen nicht mehr. Selbiges gilt für die
Runtime. Da das ganze aber standardisiert ist sehe ich da keine
Gefahr.

Ich sehe hier sehr wohl Gefahren. Und wenn man auf ein neues
Betriebssystem umsteigt, wer garantiert mir, dass der alte Compiler
dort noch läuft?

Nun könnte man natürlich argumentieren, das Betriebssystem nicht zu
wechseln. Nur ist man durch z.B. neue Hardware oder neue Programme, die
nur auf dem neuen System laufen dazu gezwungen.

Und wenn ich zwischendurch ein anderes Projekt beginne und den neuen
Compiler verwenden will, wer garantiert mir, dass ich den alten nicht
vorher deinstallieren muss? Wer garantiert mir, dass sich der alte und
der neue Compiler auf einer Festplatte vertragen? Dann muss ich extra
einen Rechner kaufen auf dem der alte Compiler draufkommt, da ich sonst
beim alten Projekt nichts mehr verändern kann. Sehr intelligent.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"WindowsXP ist ordentlich stabil solange nicht irgendwelche fremden
Hardwaretreiber daher kommen und die Stabilität versauen. Treiber
laufen unter XP eben mit Systemrechten und wenn ein Treiber mal Mist
macht dann leidet gleich das ganze System darunter."

Naja, seit Microsoft die Graphikkartentreiber mit NT4.0 aus der
Anwenderschicht in den Ring0 transferiert hat, weil sie es anders mit
der Performance nicht gebacken bekommen haben, ist es mit der
Stabilität so eine Sache... Ein schlechter Graphiktreiber darf nicht
ein (Server-)Betriebssystem lahmlegen, unter Windows ist das leider
Realität.


"VisualStudio und dessen Debugger ist wohl das Beste was man
zur Anwendungsentwicklung bekommen kann."

Gilt aber auch erst, seitdem IBM sein Visual Age mit der exzellenten
Klassenbibliothek eingestellt hat. Das Studio samt MFC ist Lichtjahre
entfernt von einem Studio6...

Autor: Florian Leitner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

um noch mal auf die eigentliche Frage einzugehen:

Hier 
http://www.florian-leitner.de/index.php/2007/08/03... 
gibt es eine Library geschrieben in C# die du entweder in direkt dein 
Projekt integrieren kannst (da Open Source) oder als DLL einbinden.

Grüße

Florian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.