PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Senden und empfangen über mega128funk



Nico99
15.05.2007, 18:55
Hallo!
Ich möchte ein kleines Programm schreiben, wo der 128funk Daten über Funk sendet und empfängt.
Zum Beispiel habe ich 2 PC's, die über RS232 mit 128funk verbunden sind, und damit soll eine Kommunikation über Funk aufgebaut werden. Was der eine eingibt, soll der andere am PC zu sehen bekommen u.s.w.

Da ich z.Zeit keine 128funk dabei habe, kann ich nicht testen. Ausserdem habe ich recht wenig Kenntnisse in Bascom-Programmierung.

Würde es mit folgenden Code klappen?


Dim Receive As Word ' Empfangen Daten
Dim Send As Word ' Daten zum Senden

Rdy_hostempfangsbereit = 0

Do

Input "Eingabe:" , Send 'zu sendenden Text Eingeben
Print Send 'und senden

Wait 2

Receive = Inkey() 'empfangenen Text zuweisen
If Receive <> 0 Then Print #2 "Empfangen:" ; Receive 'und ans RS232 ausgeben
Loop


End

Die üblichen Anweisungen habe ich nicht zitiert...

bis dann,
Nico

Merodwin
15.05.2007, 20:25
Das Programm müste funktionieren, aber die 2 sec warten würde ich rauschmeißen und statdessen den Port buffern.


Config Serialin = Buffered , Size = 100 'Empfangsbuffer für Funkmodul anlegen

Mfg Mero

Nico99
16.05.2007, 05:16
Ich werde heute die 128funk aus dem Büro abholen und dann mal testen...

Nico99
17.05.2007, 11:54
leider funktioniert es nicht...

so sieht mein Programm aus:

' ---------------RN-Mega128Funk übliche ----ANFANG--------------

$regfile = "m128def.dat" ' Bei Mega 128 "
$framesize = 40
$swstack = 40
$hwstack = 40

$crystal = 16000000 'Quarzfrequenz
$baud = 19200 'Baudrate für Funkmodul
$baud1 = 9600 'Baudrate für MAX

Config Ping.0 = Output 'Spannung an LCD aktivieren
Lcdpower Alias Portg.0

Config Pine.2 = Output
Rdy_hostempfangsbereit Alias Porte.2 'Auf Low setzen wenn Empfangsbereit für Daten vom Funkmodul

Config Pine.5 = Input
Bsy_funkmodulsendebereit Alias Porte.5 'Ist Low wenn Funkmodul frei zum senden


Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX)

Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 250 'BEEP bei RN-Mega128Funk
Sound Portg.2 , 400 , 450 'BEEP bei RN-Mega128Funk

Config Serialin = Buffered , Size = 100 'Empfangsbuffer für Funkmodul anlegen
Config Serialout1 = Buffered , Size = 100 'Ausgabebuffer für normalse RS232
Enable Interrupts
' ---------------RN-Mega128Funk übliche ----ENDE--------------


Dim Receive As Word ' Empfangen Daten
Dim Send As Word ' Daten zum Senden

Rdy_hostempfangsbereit = 0

Do

Input "Eingabe:" , Send 'zu sendenden Text Eingeben
Print Send 'und senden
Print #2 "Bestätigt:" , Send

Wait 2

Receive = Inkey() 'empfangenen Text zuweisen
If Receive <> 0 Then Print #2 "Empfangen:" , Receive 'und ans RS232 ausgeben
Loop



End

hat jemand einen Vorschlag?

Merodwin
24.05.2007, 13:10
Hmm wenn ich dein Programm jetzt richtig deute empfängst du immer nur ein Zeichen. die metode Inkey() holt immer nur ein Zeichen aus dem Rs232 Buffer. Du musst eine Schleife zum Auslesen generieren.
Der code müsste deinen Funkpuffer Komplett auslesen und in den String Dat Schmeißen.
Hoffe das hilft dir weiter.
Mfg Mero



Do
Z = Inkey()
If Z <> 0 Then Dat = Dat + Chr(z)
Loop Until Z = 0

Nico99
25.05.2007, 08:31
irgendwas stimmt da noch nicht. Ich kriege am PC nicht mal Anzeige für den Input...
Und jetzt, wo ich es schreibe, überlege ich mir folgendes: von welcher Schnittstelle erwartet es Input? Wahrscheinlich über Funk.
Müsste ich den Input #2 schreiben?

bis dann

Merodwin
31.05.2007, 21:57
Hmm ups das hab ich dann wol übersehen.
Ja sonst will er ja den input vom Com1 und da hängt das Funkmodul dran.
Ansonsten müsste es klappen. Ansonsten muss der Fehler in der verbindung vom Board zum Rechner liegen.

Nico99
28.06.2007, 17:57
Nach einiger Zeit Pause bin ich wieder dran. Es klappt immer noch nicht. Normale Testprogramme laufen einwandfrei, also funktioniert sowohl die Funk-Seite als auch die RS232-Seite.

Merodwin
04.07.2007, 18:21
Hmmm wenn du nur 2 Rechner Kommunizieren lassen willst kauf dir doch ein USB Modul (http://www.roboter-teile.de/Shop/themes/kategorie/detail.php?artikelid=46&source=2) das verwende ich um meinen Rechner mit dem Controler zu verbinden. Ansonsten kann ich dir auch noch mal beim Code Helfen. Hier nochmal en Beispiel was alles mit den Channels erklären sollte. Ansonsten hilft die Hilfe von Bascom auch weiter.


Do
Dat = inkey(#2) 'Byte vom Rechner auslesen
print Dat ' Byte am Funkmodul Ausgenben
Dat inkey() 'Byte vom Funkmodule auslesen
print Dat ' Byte an Rechner ausgeben
loop


Mfg Mero

Nico99
04.07.2007, 19:11
Eigentlich wolte ich nur etwas machen, was das ganze für mich verständlich macht, bzw. die Funktinen erklärt. Aber ich bin scheinbar übers Ziel hinaus geschossen.
Nehmen wir mal ein neues Beispiel an:
Port A und Port B werden eigelesen, über Funk übertragen und am 2. Board am Port A und B ausgegeben. Das gleiche passiert mit Port C un D andersum. Also so eine Art Funk-IO-Interface, wo die Eingänge eines Boards auf die Ausgänge des 2. Boards übertragen werden und andersum.