|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Reini
Anmeldungsdatum: 23.10.2022 Beiträge: 3
|
Verfasst am: 23.10.2022, 00:56 Titel: PCF8591 per I2C über COM1 ansteuern |
|
|
Hallo, ich bin neu hier und habe nach Jahren meine alte "DOS-Quickbasic- und Hardware-Hobbykiste" ausgepackt.
Nun versuche ich verzweifelt, ein QUICKBASIC-Programm zu finden, mit dem ich mit einem Laptop über die RS232-Schnittstelle mittels I2C auf das IC 8591T zugreifen kann, um mit diesem digitale und analoge Signale einzulesen und auszugeben. Ich habe bisher nichts funktionierendes gefunden. Kann mir jemand sagen, ob (und wo) ein solcher Basic-Code erhältlich ist. Ich hoffe, dass ich mein Anliegen einigermaßen verständlich beschrieben habe und würde mich sehr über (hoffentlich positive) Antwort freuen. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1255 Wohnort: Ruhrpott
|
Verfasst am: 23.10.2022, 18:48 Titel: |
|
|
Hallo Reini und willkommen im Forum.
Ich fürchte, ganz so einfach wird das nicht werden, da RS232 und I2C zwei völlig unterschiedliche Konzepte (und auch unterschiedliche Spannungspegel) haben. Einfacher wäre eine Umsetzung über den Parallelport, aber leider hat heutzutage kaum noch ein Computer diese Schnittstelle, und wenn doch, versucht Windows seit XP, einen direkten Zugriff darauf zu verhindern.
Trotzdem ist es nicht unmöglich, erfordert aber einigen Aufwand. Zunächst einmal brauchst du einen Hardware-Adapter, wie er hier sehr anschaulich beschrieben wird.
Was das Programm betrifft, wirst du wohl nicht umhinkommen, selber etwas zu schreiben. Das ist gar nicht so schwierig, denn die Leitungen der RS232-Schnittstelle lassen sich mithilfe von FreeBASIC über die WinAPI einzeln ansteuern und abfragen: Code: | #Include Once "windows.bi"
Dim hCom As handle
Dim PortNr As String = "COM1"
Dim modemStat As Dword
'Serielle Schnittstelle öffnen:
hCom = CreateFile(PortNr, GENERIC_READ Or GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL)
Print "Handle = "; hCom
'Fehlerbehandlung, falls Öffnen fehlschlägt:
If hCom = INVALID_HANDLE_VALUE Then
Print "Fehler beim Oeffnen von "; PortNr
Sleep
End
Else
Print PortNr; " geoeffnet"
Endif
'Alle Ausgangsleitungen auf positive Spannung setzen:
EscapeCommFunction(hCom, SETRTS) 'RTS +12V
EscapeCommFunction(hCom, SETDTR) 'DTR +12V
EscapeCommFunction(hCom, SETBREAK) 'TxD +12V (Break)
Print
Print
Print "Ende mit [Esc]"
'Eingangsleitungen per Polling abfragen:
Do
GetCommModemStatus(hCom, @modemStat)
Locate 8,1
If modemStat And MS_CTS_ON Then Print "CTS = 1" Else Print "CTS = 0"
If modemStat And MS_DSR_ON Then Print "DSR = 1" Else Print "DSR = 0"
If modemStat And MS_RING_ON Then Print "RING = 1" Else Print "RING = 0"
If modemStat And MS_RLSD_ON Then Print "RLSD = 1" Else Print "RLSD = 0"
Loop Until Inkey = Chr(27)
'Alle Ausgangsleitungen auf negative Spannung zurücksetzen:
EscapeCommFunction(hCom, CLRRTS) 'RTS -12V
EscapeCommFunction(hCom, CLRDTR) 'DTR -12V
EscapeCommFunction(hCom, CLRBREAK) 'TxD -12V
'Serielle Schnittstelle schließen:
CloseHandle(hCom)
|
Das ist dann schon die halbe Miete. Der Rest ist auch kein Hexenwerk, wenn ich mal davon ausgehe, daß du mit dem I2C-Protokoll vertraut bist. Bei weiteren Fragen und Problemen bin ich gerne behilflich.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Reini
Anmeldungsdatum: 23.10.2022 Beiträge: 3
|
Verfasst am: 26.10.2022, 21:38 Titel: |
|
|
Hallo Grintstone,
vielen Dank für die prompte Antwort.
Wahrscheinlich habe ich mich nicht deutlich genug ausgedrückt, denn Deine Antwort hilft mir leider nicht wirklich weiter.
Ich habe mittlerweile einen RS232-zu I2C-Adapter hergestellt, mit dem ich Signale auf TTL-Pegel senden und empfangen kann. Ich möchte mit Quickbasic auf DOS-Ebene das IC ansteuern. Hierzu suche ich verzweifelt den kompletten Quickbasic-Code, denn meine Programmierversuche sind alle bisher gescheitert. Es wäre sehr schön, wenn Du mir dabei weiter behilflich sein könntest.
Viele Grüße Reini |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1255 Wohnort: Ruhrpott
|
Verfasst am: 27.10.2022, 08:34 Titel: |
|
|
Meinst du mit "Quickbasic" den OBasic-Interpreter, der serienmäßig mit DOS mitgeliefert wurde? Und soll dein Programm auf einem DOS-Rechner (also ohne Windows) laufen?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Reini
Anmeldungsdatum: 23.10.2022 Beiträge: 3
|
Verfasst am: 06.11.2022, 23:27 Titel: |
|
|
Hallo, ich nutze QB 4.5 und mein Rechner hat das Betriebssystem MSDOS 6.22.
Viele Grüße
Reini |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1255 Wohnort: Ruhrpott
|
Verfasst am: 07.11.2022, 16:35 Titel: |
|
|
Mann, und ich dachte, mein Rechner wäre veraltet...
Aber reines DOS hat auch seine Vorzüge. Na gut, ich werde mal sehen, was ich da machen kann. Ich müsste nur noch wissen, welche der RS232 - Leitungen bei dir welche Funktion hat (SDA senden / SDA empfangen / SCK senden / SCK empfangen).
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|