Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 22.07.2010, 21:38 Titel: Interrupts für Datenaufnahme von COM Port via Bluetooth |
|
|
Guten Abend allerseits,
ich bin nun auch mal wieder hier im Forum unterwegs, da meine C - Kenntnisse für das Programm welches ich vorhabe zu schreiben noch nicht ausreichen.
Nun bin ich an einem Punkt angekommen an dem ich Eure Hilfe benötige. Die Lage ist folgende:
Ich sende per Bluetooth Daten, welche dann von einem Stick aufgenommen werden, der als COM - Port erkannt wird. Diesen rufe ich in FB ab. (Testweise erst einmal COM 1)
Da die Daten allerdings nicht ewig an dem Port anliegen muss ich bei einem Datenverkehr die ganze Prozedur anhalten und die Daten in Variablen einlesen.
Bisher sieht der Teil zum einlesen der Daten folgendermasen aus:
Code: | OPEN COM "COM1:9600,N,8,1" AS #1 ' Zugriff auf COM1 mit 9600 Baud, ohne Paritäts-Bit, acht Datenbits, ein Stoppbit
do
wert(1) = inp (1) 'Wert von COM 1 aufnehmen
if wert(1) < 0 then wert(1) = 0 'noch ändern auf error für verbindungsverlust
zaehler += 1
speichern
oberflaeche
anzeigen
counter = 1
do
wert(counter+1) = wert(counter)
counter += 1
loop while counter < 500
if inkey = chr(27) then end
loop |
Am besten wäre dies ja wohl über einen Interrupt zu lösen. Oder liege ich da falsch? Und wenn ja, gibt es in FB überhaupt interrupts? ich meine welche gesehen zu haben kann mich aber nivht mehr daran erinnern wo das war. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 22.07.2010, 21:48 Titel: |
|
|
Hallo,
wenn das Programm unter Windows oder Linux (nicht DOS!) laufen soll, kannst du die Datenerfassung von der Schnittstelle in einen Thread auslagern und so unabhängig von der Anzeige/Oberfläche gestalten.
Der Thread würde die ankommenden Daten ständig in eine SHARED-deklarierte FIFO-Speicherstruktur eintragen und ein anderer Thread bzw. das Hauptprogramm könnte sie daraus abholen und verarbeiten.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 22.07.2010, 22:01 Titel: |
|
|
wow das is ja genial
das heiß ich speichere die Dateien in Textdateien und rufe sie mit einem anderen programm daraus wieder auf. und um sicherzustellen, dass beide programm laufen erstelle ich noch eine starter datei oder starte am anfang des Hauptprogramms das Nebenprogramm
korrekt?
MfG Sippo |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 22.07.2010, 22:05 Titel: |
|
|
Sippo hat Folgendes geschrieben: | das heiß ich speichere die Dateien in Textdateien und rufe sie mit einem anderen programm daraus wieder auf. und um sicherzustellen, dass beide programm laufen erstelle ich noch eine starter datei oder starte am anfang des Hauptprogramms das Nebenprogramm |
Ne, mit FreeBASIC geht's noch viel leichter! Du kannst innerhalb eines Programms mehrere "nebenläufige" Threads ablaufen lassen. Man kann auf diese Weise sozusagen mehrere Subs parallel laufen lassen.
Unter folgendem Link gibt es dazu ausführliche Erklärungen und auch einen Beispielcode: FreeBASIC-Befehlsreferenz: ThreadCreate (Multithreading in FreeBASIC)
Übrigens: Die E-Mail-Adresse, die du im Forum angegeben hast, scheint nicht mehr zu existieren. Die Benachrichtigungsmail des Forums an dich (wg. der neuen Antwort) kam eben als unzustellbar ans Adminpostfach zurück.  _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 22.07.2010, 22:13 Titel: |
|
|
Vielen Dank für die Antwort werde mich morgen mal durcharbeiten.
Und danke für die Info wegen der Mail nun sollte es wieder gehn^^ |
|
Nach oben |
|
 |
micha
Anmeldungsdatum: 09.12.2005 Beiträge: 72
|
|
Nach oben |
|
 |
|