Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

PCF8591 per I2C über COM1 ansteuern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Reini



Anmeldungsdatum: 23.10.2022
Beiträge: 3

BeitragVerfasst am: 23.10.2022, 00:56    Titel: PCF8591 per I2C über COM1 ansteuern Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 23.10.2022, 18:48    Titel: Antworten mit Zitat

Hallo Reini und willkommen im Forum. lächeln

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. lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Reini



Anmeldungsdatum: 23.10.2022
Beiträge: 3

BeitragVerfasst am: 26.10.2022, 21:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 27.10.2022, 08:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Reini



Anmeldungsdatum: 23.10.2022
Beiträge: 3

BeitragVerfasst am: 06.11.2022, 23:27    Titel: Antworten mit Zitat

Hallo, ich nutze QB 4.5 und mein Rechner hat das Betriebssystem MSDOS 6.22.
Viele Grüße
Reini
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 07.11.2022, 16:35    Titel: Antworten mit Zitat

Mann, und ich dachte, mein Rechner wäre veraltet... grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz