1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Brauche Hilfe bei Treiber Programmierung (CP2101)

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Duck Dodgers, 09.01.10.

  1. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Hallo,

    ich habe (privat) ein kleines Programm geschrieben, dass meine Wetterstation ausließt. Aber nun habe ich da ein kleines Problem, und zwar funktioniert seit 10.6 der Treiber für das CP2101 USB Gerät nicht mehr! Mein Programm lief wunderbar unter Leopard und jetzt gehts erst mal nicht mehr. Ich habe schon mit dem Hersteller gesprochen, aber die sind nicht gerade sehr hilfreich und auch deren Mac Unterstützung ist eher dürftig. Der Datalogger ist eigentlich für Windows und dem Logger liegt auch eine Windows Software bei. Da ich aber mit Objective-c die Daten selber auslese, benötige ich das nicht. Eine Anfrage bei Silicon Labs (CP210x) ergab, dass weder nähere Informationen zum Protokoll noch Mac Sourcen herausgegeben werden. Auch sei der aktuelle CP210x Treiber offiziell nicht 10.6 kompatibel! Das einzige was ich nun habe sind die Linux Treiber (SiLabs hat linux sources auf deren webseite veröffentlicht http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx). Weiterhin sind im Internet Linux Kernel Patches als Source zu finden.

    Nun meine Frage ist: kann mir jemand bei der Übertragung der Linux sourcen in Objective-C helfen? Ich habe keine Ahnung von Treiber Programmierung unter Mac - noch Linux! Würde gerne die Unterstützung des CP2101 Chips direkt in mein App implementieren, aber ich weiß absolut nicht wie ich anfangen soll :( Ich hoffe und würde mich sehr freuen, wenn mir jemand helfen kann. Vielen Dank für jede Hilfe!

    Grüße
    Robert
     
  2. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Noch etwas: neben den Linux ,Sourcen habe ich auch ein paar Windows (MFC) CPP-Sourcen gefunden. Aber da ich von der Windows Programmierung schon Jahre weg bin, hilft mir das leider auch nicht so recht viel.
     
  3. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Hallo,

    leider hat sich bis jetzt keiner gemeldet :( Mal was anderes:
    Ich habe probiert mittels iokit auf das USB Gerät zuzugreifen. Habe deshalb bei Apple den "USB Device Interface Guide" durchgearbeitet. Ich habe verstanden, wie ich das usb gerät finde und einen callback für add/remove hinzufüge. Wenn ich nun aber das Interface öffnen will, meldet der immer
    Interface class 255, subclass 0
    Unable to open interface (e00002c5)
    Gibt es irgendwo im Netz nen einfaches Beispiel, um ein Kommando an mein USB gerät zu senden und etwas zu empfangen? Ich hatte bis jetzt die Kommunikation über das device und POSIX gemacht. Wie kann ich den einen Befehl über iokit senden? Vielleicht kann mir ja dabei jemand helfen?

    Grüße
    Robert
     
  4. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Also das mit FindIterfaces habe ich nun hinbekommen :) Aber zu meiner zweiten Frage bezüglich POSIX und Umsetzung auf IOKIT weiß ich leider noch keinen Rat. Hoffe mir kann jemand helfen?
     
  5. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Ein "einfaches Kommando" an Dein USB Gerät gibt es nicht. Es kommt ganz darauf an, welche Geräteklasse es ist.

    Einen Device Node bekommst Du nur dann, wenn Du einen Treiber HAST.

    Solche Treiber von Linux auf Mac umzusetzen mache ich beruflich. Ich hab sogar mal einen Treiber für ein CP2101 basiertes Gerät geschrieben, aber an die Details kann ich mich heute Abend nicht erinnern.

    Der CP2101 ist aber recht populär, es würde mich wundern, wenn da nicht bald mal ein Update für den Treiber käme.

    Alex
     
  6. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Hi Alex,

    mhh dann kann ich wahrscheinlich warten bis ich schwarz werde. Beide Hersteller sind nicht besonders "kooperativ" und an eine wirklichen Hilfe nicht interessiert :( Anscheinend bin ich auch nicht der einzige, mit diesem Problem.

    Wetterstationshersteller Davis hat gerade erst einen neues Treiber veröffentlicht! Dieser hilft mir leider gar nicht. Ich habe ihn installiert. Wenn ich nun das USB Gerät anstecke, dann wird die kext Datei geladen, aber es gibt kein device in /dev. So komme ich irgendwie nicht weiter :(

    Wahrscheinlich brauche ich noch neben dem Protokoll zu Wetterstation auch noch das Protokoll zum CP2102 Chip? Und dazu kann ich ja leider nur die linux sourcen finden. :mad:

    Grüße
    Rob

    P.S. Habe mich vertan, es ist ein CP2102 Gerät, aber das sollte nicht ein so großer Unterschied sein.
     
  7. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    In diesem Fall brauchst Du ja gar keinen speziellen Treiber, sondern nur einen, der Dir ein Serial Device baut. Du kannst also jeden Treiber für den CP2102 nehmen.

    Hast Du den schon mal probiert? http://www.pololu.com/docs/0J7/all#3

    Alex
     
  8. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    Das liegt wohl an der Verbreitung.

    Wenn Du keinen Treiber für den CP210x findest: Ja.
    Hast Du schon mal einen alternativen Treiber ausprobiert? http://www.pololu.com/docs/0J7/all#3 (Ohne Gewähr)

    EDIT: Alex war schneller.
     
    #8 Pii, 12.01.10
    Zuletzt bearbeitet: 12.01.10
  9. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    Ich wäre nicht besonders zuversichtlich, da die letzte Version des Mac OS X Treibers schon anderthalb Jahre alt ist. Das hat bei SiliconLabs wohl keine besonders hohe Priorität. :(

    Das wird viele Leute mit einem ATmega-Board nicht besonders glücklich machen.
     
  10. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Ja den habe ich auch probiert :( Musste die PID in der Info.plist ändern, aber bei diesem Treiber wird erst gar nicht die kext geladen!

    Das Gefühl habe ich auch. Da wäre es natürlich super, wenn ich meine eigene Implementierung hätte, was ich aber leider nicht so gut kann.

    Nur wegen so einem blödem Treiber vergeht einem richtig die Lust an der Wetterstation :-c
    Rob
     
  11. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    Ich muss meine Einschätzung revidieren. SiliconLabs ist an einem aktualisierten Treiber für Mac OS X interessiert; und an diesem wird auch schon einige Zeit gearbeitet. Allerdings gibt es noch Probleme mit dem 64-Bit Modus.

    PS: Allerdings ist SiliconLabs bei Auskünften hierfür ein eher ungeigneter Ansprechpartner, da der Treiber extern entwickelt wird.
     
  12. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Brauchen die noch Hilfe ;) ?

    Alex
     
  13. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    Möglicherweise. :-D
    Ich könnte Dir die Mailadresse von dem Entwickler geben.
     
  14. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Immer her damit!

    Alex
     
  15. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    Ich schicke sie Dir nachher besser klassisch via Email.

    EDIT: "Sie haben Post." (Zitat AOL) :)
     
    #15 Pii, 14.01.10
    Zuletzt bearbeitet: 14.01.10
  16. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    @below
    Hehe super wenn das mal einer in die Hand nimmt! Gib bescheid, wenn du fertig bist ;)
     
  17. Frankplanlos

    Frankplanlos Stechapfel

    Dabei seit:
    21.04.07
    Beiträge:
    157
    Moin,
    ich spiele hier gerade mit dem myAVRUSB MKII Board rum, dort ist auf dem Programmer auch der CP2102-Chip drauf.
    Die Software von myAVR funktioniert nicht auf dem Mac, deswegen programmiere ich ihn über Xcode unter SL 10.6.2 .
    Ich weiß jetzt nicht ob es dich weiterbringt aber ich benutze für die serielle Kommunikation AMSerialPort
    http://www.harmless.de/cocoa-code.php
    Den Treiber für den Chip habe ich mir beim Hersteller runtergeladen. Und wie schon geschrieben.... es funzt für meine Zwecke.
    Gruß
    Frank

    Nachtrag: sehe gerade du meinst den 2101 Chip.... da habe ich wohl zu schnell gelesen.... sorry
     
    Pii gefällt das.
  18. Pii

    Pii Rheinischer Krummstiel

    Dabei seit:
    25.06.07
    Beiträge:
    383
    Macht nichts. Trotzdem interessant, und es hat mich auf eine Idee gebracht.
     
  19. Duck Dodgers

    Duck Dodgers Reinette de Champagne

    Dabei seit:
    06.12.09
    Beiträge:
    419
    Hi Frank,

    AMSerialPort kenne ich und ist auch sehr interessant. Problem ist halt genau, dass dies kein "Treiber" ist sondern auf das Virtual COM port zugreift! Also hier liegt bzw. lag genau mein Problem! Der Treiber hat eben kein Virtual COM port zur Verfügung gestellt.

    Ne, ne ich habe mich auch vertan ;) Meine schon den CP2102. Siehe Post #6.

    Aber mittlerweile habe ich eine Lösung gefunden. Habe vom Hersteller eine Hilfe erhalten. Und zwar hat der Hersteller zwei mal den gleichen Daten logger, aber mit unterschiedlichen PIDs: Eine für Windows und eine für Mac! Habe die PID geändert und nun läuft das Device auch mit dem SiLabs Treiber unter Mac :) Vorher wurde es als USB Gerät erkannt und nun durch die PID Änderung zeigt es sich als COM Device.

    Naja es hätte mich ja doch sehr gereizt das ganze selber zu programmieren, aber da das CP210x Protokoll unbekannt ist, wird das dann doch etwas zu schwierig. Auf jeden Fall vielen Dank für Eure Hilfe!

    Schöne Grüße
     

Diese Seite empfehlen