AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

USB Programmieren

Ein Thema von Baum21 · begonnen am 4. Dez 2013 · letzter Beitrag vom 6. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
hathor
(Gast)

n/a Beiträge
 
#1

AW: USB Programmieren

  Alt 4. Dez 2013, 21:03
Der USB-Stick sieht aus wie eine Art Serial-USB-Konverter und auf dem anderen Board ist wohl ein kleiner Mikrocontroller?
http://www.pearl.de/a-PK4679-3521.sh...FYlV3godT2IApg
Das geht auch billiger - weniger als 38 Euro.
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: USB Programmieren

  Alt 4. Dez 2013, 21:35
Zwischen serieller Schnittstelle und USB gibt es aus Programmierersicht einen gewaltigen Unterschied: Bei Seriell "spricht" man mit der Schnittstelle - man muß Signale setzen und Überwachen, Bytes in die richtigen Ports schieben usw... Bei USB spricht man direkt mit dem Gerät, der USB-Treiber dazwischen ist völlig transparent.

Wenn es mit nem FTDI 232R (oder 245) läuft, wird da ein serieller Port emuliert. Da ist nix mit USB.

Geändert von OlafSt ( 4. Dez 2013 um 21:38 Uhr)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#3

AW: USB Programmieren

  Alt 4. Dez 2013, 21:36
Wenn der USB-Stick intern einen FT232 hat, kannst du ihn in Delphi mit jeder Seriell-Komponente ansprechen (oder sogar, wenn du es auf die "harte Tour" willst, eine eigene RS232-Komponente mit Windows- / Delphi-Boardmitteln schreiben ).

Von FTDI gibt es für den FT232 einen generischen COM-Treiber, nach der Installation hast du einen neuen seriellen Port in deinem System, den du z.B. über Async Pro o.Ä. in Delphi ansprechen kannst.

Der Treiber von FTDI ist im übrigen, wie auch der Chip selbst, ziemlich gut.
Die FT232-basierten Adapter haben im Treiber viel mehr Einstellmöglichkeiten als die meisten billig-USB-zu-RS232-Adapter und der Chip hält sich an die USB- und RS232-Spezifikationen, was viele Adapter nicht tun.

Der bei dir verbaute FT232R hat übrigens noch zwei nette Features, die die anderen FT232-varianten nicht haben:
- Du kannst den Takt des internen Oszillators nach außen führen und damit externe Peripherie wie z.B. eine MCU takten, ohne dass sie selbst einen eigenen Quartzoszi braucht.
- Der Chip hat intern eine festgebrannte, nicht veränderbare ID / Seriennummer, die man auslesen kann, so dass du mit deiner Software einen Chip identifizieren und ihn z.B. als Hardware-Dongle nutzen kannst. Damit ist wohl auch das "USB-Dongle" Experiment aus dem Kasten realisiert. Allerdings geschieht das Auslesen der Chip-ID nicht über einen Befehl an die serielle Schnittstelle (wäre auch irgendwie sinnlos, da man es leicht emulieren könnte), sondern über eine eigene FTDI-DLL, deren Export Functions Header aber auch auf der FTDI-Seite als Delphi-Code vorliegt.

Mit USB-Programmierung an sich hat das Alles allerdings gar nichts zu tun, da man im Endeffekt mit der Software nur einen seriellen COM-Port mit RS232 oder RS485 ansteuert, sich um das komplizierte USB-Protokoll jedoch überhaupt nicht kümmert. (und folgedessen auch nichts über USB lernt)

So einen FT232-basierten Adapter kann man sich im übrigen auch ziemlich leicht selbst zusammenlöten, den Chip bekommst du bei jedem größeren Elektronik-Bauteilladen und als externe Peripherie brauchst du nur die beiden Buchsen, ein paar Widerstände und Kondensatoren.
Man muss nur aufpassen, dass man sich nicht die BGA-Variante kauft, denn die kann man dann doch schlecht daheim löten, ausser man hat ne alte Friteuse

P.S.
Zitat:
Als ich damals 11 oder 12 war, hatte ich von meinem Vater den Kosmos 3000 bekommen
Haaa, den hatte ich damals auch. Allerdings sah der Kosmos-Baukasten von mir irgendwie doch etwas anders aus damals, etwas größer, orange und mit einem transparenten Deckel wie manche Plattenspieler. Weisst du zufällig, was das für ein Modell war?
Das Teil fand ich damals faszinierend und ich hatte höllischen Respekt vor den großen Transistoren.
(von denen ich nun ja weiss, dass es Pfennigartikel sind, die im Kosmos nur auf riesige Leiterplatten gelötet wurden, damit man sie besser stecken kann )
Der Phototransistor war auch ned schlecht...

Geändert von blackfin ( 5. Dez 2013 um 01:09 Uhr)
  Mit Zitat antworten Zitat
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#4

AW: USB Programmieren

  Alt 5. Dez 2013, 16:40
Wenn ich einen Transistor schalten wollen würde, wie mus ich den dann mit der Zusatzplatine verbinden und wie bekomme ich es hin das der Transistor nacher Strom bekommt? hab keinen Plan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.386 Beiträge
 
Delphi 12 Athens
 
#5

AW: USB Programmieren

  Alt 5. Dez 2013, 17:11
Du steuerst die Basis des Transistor einfach so an, wie die LED, in dem beiliegenden Beispiel ... nur den Vorwiederstand solltest du anpassen, nicht daß er noch abraucht.


Vermutlich: An einem IO-Port des µC, dessen Programm auf einen Befehl via COM-Port wartet und entsprechend den Ausgang und darüber den Transistor ansteuert.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Dez 2013 um 17:13 Uhr)
  Mit Zitat antworten Zitat
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#6

AW: USB Programmieren

  Alt 5. Dez 2013, 19:28
Ich versuchs mal.
Wenn ich irgendwas rumprobier, kann es passieren das ich den USB oder den Computer dabei schrotte? Also muss ich aufpassen oder kann ich rumexperimentieren?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.386 Beiträge
 
Delphi 12 Athens
 
#7

AW: USB Programmieren

  Alt 5. Dez 2013, 20:36
Wenn du irgendwie eine Überspannung da reinbringst oder gar Netzspannung, dann kann der Computer kaputgehn.

Wenn du den IO-Pin des Microcompters überlasstest, dann kann nur dessen Port durchbrennen.



Aber wenn du nicht was wirklich Schlimmes mit dem Ausgang anstellst, dann ist der Computer eigentlich sicher.
Immerhin liegen zwischen dem Anschluß und dem Compuer mehrere Microchips, die zuerst kaputtgehen müssen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#8

AW: USB Programmieren

  Alt 5. Dez 2013, 20:41
Und welcher ist der IO-Pinn? :/
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#9

AW: USB Programmieren

  Alt 5. Dez 2013, 22:46
Ich versuchs mal.
Wenn ich irgendwas rumprobier, kann es passieren das ich den USB oder den Computer dabei schrotte? Also muss ich aufpassen oder kann ich rumexperimentieren?
Lies das Handbuch - ist auf der CD.

Ab Seite 50 sind Experimente beschrieben.
Beispiel LED ein/aus
Angehängte Grafiken
Dateityp: jpg USB-LEDeinaus.jpg (38,2 KB, 55x aufgerufen)

Geändert von hathor ( 5. Dez 2013 um 22:50 Uhr)
  Mit Zitat antworten Zitat
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#10

AW: USB Programmieren

  Alt 6. Dez 2013, 12:50
Also, ich hab jetzt mal die Platine so wie beschrieben besteckt und wenn ich den USB jetzt in den PC steck blinkt si ein paar mal so wie es auch normale USB-Sticks machen.
Aber wie mach ich das ganze in delphi?
Der code in VB sieht so aus:
Delphi-Quellcode:
Private Sub Option1_Click(Index As Integer) 'bei LED AN
LED_Click (False) ,ruft Funktion LED_Click mit False auf
End Sub
Private Sub Option2_Click(Index As Integer)
'bei LED AUS
LED_Click (True) 'ruft Funktion LED_Click mit True auf
End Sub
Der eigentliche Programmablauf erfolgt in dieser Funktion:
Delphi-Quellcode:
Private Function LED_Click(AnAus As Boolean)
On Error GoTo LED_Click_fehler
LoggerList.Clear
If FT_GetNumDevices(lngNumDevices,vbNullString,FT_LIST_BY_NUMBER_ONLY)<>FT_OK Then
LoggerList.AddItem ("Fehler bei Aufruf: FT_GetNumDevices funktionierte nicht")
Exit Function
Else
LoggerList.AddItem ("Anzahl vorhandener USB-Geräte: " & lngNumDevices)
End If
das ganze geht ja mit D2XX, aber ich seh nirgends etwas das die Klasse importiert oder so?
Und wie importier ich eine Unit in delphi? (Hab noch nie mit mehreren Units gearbeitet ) Einfach in die Uses geht irgendwie nicht, da meckert er rum das er die Unit nicht finden kann.
Außerdem unterstreicht er ein paar Wörter in D2XX z.B. Dialogs, wenn ich ein neues Programm schreiben will nennt er das FMX.Dialogs?
Hat sich was geändert? hab schon ewig nicht mehr rumprogrammiert.
soll ich Dialogs in FMX.Dialogs umbenennen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz