Archiv verlassen und diese Seite im Standarddesign anzeigen : Senden und empfangen über mega128funk
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, 21: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
Ich werde heute die 128funk aus dem Büro abholen und dann mal testen...
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, 14: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
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, 22: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.
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, 19: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
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.