Autor |
Beitrag |
Onkel_Willi
Hält's aus hier
Beiträge: 6
Win 7 / Win 10
Delphi 10.1 Berlin Starter
|
Verfasst: Do 09.08.18 15:22
Hallo liebe Delphi-Gemeinde,
ich habe bei Conrad eine 4fach Relaiskarte 393905 (CP2104) gekauft und möchte sie im Modellbahnbereich einsetzen. Da ist eine umfangreiches Softwarpaket dabei, u.a. ein "Relay_Card_Demo_SRC" in VB 2010, ein C++ Projekt und Entwicklerhinweise von Conrad als PDF(Anhang). Leider kein Delphiprojekt.
Ich scheitere bei der Übersetzung der Beispiele in Delphi. Habe leider nur Grundkenntnise in Delphi, bisher waren die aber für Steuerungsaufgaben ausreichend.
Relevant ist für mich eigentlich nur die Write Funktion.
Kann mir jemand helfen?
Mein bisheriger QuellCode:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| unit USB_4_Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, CPort, CPortCtl;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; Button3: TButton;
procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private public end;
var Form1: TForm1; USBDevice: THandle; Byt: Byte; Count: DWORD; Str: String;
implementation
{$R *.dfm}
function CP210xRT_WriteLatch(Handle: Integer; Mask: Byte; Latch: Byte): Integer; stdcall ; external 'CP210xRuntime.dll';
procedure TForm1.Button1Click(Sender: TObject); begin USBDevice := CreateFile('\.\COM6',GENERIC_READ or GENERIC_WRITE,0,NIL, OPEN_EXISTING,FILE_Attribute_Normal or FILE_FLAG_Overlapped,0); Byt := 85; WriteFile(Handle,Byt,1,Count,NIL); CloseHandle(USBDevice); Label2.Caption := InttoStr(USBDevice); end; procedure TForm1.Button2Click(Sender: TObject); begin end; procedure TForm1.Button3Click(Sender: TObject); begin USBDevice := CreateFile('\.\COM6',GENERIC_READ or GENERIC_WRITE,0,NIL, OPEN_EXISTING,FILE_Attribute_Normal or FILE_FLAG_Overlapped,0); CP210xRT_WriteLatch(USBDevice,1,1); CloseHandle(USBDevice); end; end. |
Das Programm läuft durch, kein Form1, keine Fehlermeldung. Wenn ich CP210xRT_WriteLatch... als Kommentar kennzeichne, öffnet sich zumindest das Formular.
Wo habe ich was falsch gemacht?
Gibt es eine Möglichkeit, die CP210x.dll mit der ComPort Libray anzusprechen? Wie?
Danke für die Hilfe
Gert
Einloggen, um Attachments anzusehen!
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 09.08.18 16:55
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Onkel_Willi
Hält's aus hier
Beiträge: 6
Win 7 / Win 10
Delphi 10.1 Berlin Starter
|
Verfasst: Do 09.08.18 19:30
Hallo Frühlingsolle,
danke für die schnelle AW:
ich habe es mal überprüft:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(InttoStr(INVALID_HANDLE_VALUE)); USBDevice := CreateFile('\\\.\\COM6',GENERIC_READ or GENERIC_WRITE,0,NIL, OPEN_EXISTING,FILE_Attribute_Normal or FILE_FLAG_Overlapped,0); Byt := 85; WriteFile(Handle,Byt,1,Count,NIL); if USBDevice <> INVALID_HANDLE_VALUE then begin ShowMessage('Händel gültig'); ShowMessage(InttoStr(USBDevice)); end; ... |
Du hast recht, das Händel ist ungültig.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 09.08.18 19:52
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Onkel_Willi
Hält's aus hier
Beiträge: 6
Win 7 / Win 10
Delphi 10.1 Berlin Starter
|
Verfasst: Fr 10.08.18 15:10
Hallo,
das Programm läuft mit Deinen Änderungen wie gehabt durch, kein Formular, keine Fehlermeldung.
Wenn ich
Delphi-Quelltext
als Kommentar markiere, öffnet sich zumindest das Formular.
Sil Labs hat für die dll mehrere Dokumentaionen veröffentlicht. Conrad liefert auch die AN223 (Anhang) und die AN197 mit.
Vielleicht hilft die AN223 weiter.
Gert
Einloggen, um Attachments anzusehen!
|
|
Onkel_Willi
Hält's aus hier
Beiträge: 6
Win 7 / Win 10
Delphi 10.1 Berlin Starter
|
Verfasst: Fr 10.08.18 15:15
Ich noch mal.
Die AN978 beschreibt eine andere DLL: CP210xManufacturing.DLL
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 10.08.18 17:35
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Onkel_Willi
Hält's aus hier
Beiträge: 6
Win 7 / Win 10
Delphi 10.1 Berlin Starter
|
Verfasst: So 12.08.18 17:29
Hallo,
danke für den Tipp mit der DLL. Mit der neuen DLL lief das Programm sofort.Ich habe schon an mir gezweifelt, und sicher nicht nur ich.
Mein Testprogramm funktioniert, ich kann alle Relais schalten. Allerdings kann ich die Logik der Latch-Werte nicht nachvollziehen.
Folgende Werte habe ich eingegeben:
Delphi-Quelltext 1: 2: 3: 4: 5:
| const CP210x_GPIO_0 = 1; CP210x_GPIO_1 = 2; CP210x_GPIO_2 = 4; CP210x_GPIO_3 = 8; |
In die Funktion CP210xRT_WriteLatch(Mask, Latch)
GPIO_0
ON 1, 0
OFF 1, 1
GPIO_1
ON 2, 0
OFF 2, 10
GPIO_2
ON 4, 0
OFF 4, 12
GPIO_3
ON 8, 0
OFF 8, 11
Das Zustandekommen Latch-Werte ist mir völlig unklar. Ich habe sie durch probieren gefunden.
Kannst Du mir das nochmal erklären?
Danke
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 12.08.18 22:22
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Narses
Beiträge: 10182
Erhaltene Danke: 1255
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: So 12.08.18 22:46
Moin!
Onkel_Willi hat folgendes geschrieben : | Das Zustandekommen Latch-Werte ist mir völlig unklar. Ich habe sie durch probieren gefunden. |
Sieht nach inverser Logik auf einem GeneralPurposeInputOutput-Register aus (wieviel Bit insgesamt?). Das ist nicht so ganz unüblich, da man dann mit PullUp-Widerständen arbeiten kann, was die inverse Logik erzwingt.
Funktioniert folgendes? (sollte es eigentlich, da deine Off-Werte das jeweilige Bit auch enthalten haben)
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| **GPIO_0 ON 1, 0 OFF 1, 1
**GPIO_1 ON 2, 0 OFF 2, 2
**GPIO_2 ON 4, 0 OFF 4, 4
**GPIO_3 ON 8, 0 OFF 8, 8 |
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Onkel_Willi
Hält's aus hier
Beiträge: 6
Win 7 / Win 10
Delphi 10.1 Berlin Starter
|
Verfasst: Mo 13.08.18 07:55
Danke Narses,danke Frühlingsrolle
es funktioniert mit den Werten.
Hätte ich ohne Eure Hilfe nicht geschafft.
|
|
|