Das Programm müste funktionieren, aber die 2 sec warten würde ich rauschmeißen und statdessen den Port buffern.
Mfg MeroCode:Config Serialin = Buffered , Size = 100 'Empfangsbuffer für Funkmodul anlegen
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?
Die üblichen Anweisungen habe ich nicht zitiert...Code: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
bis dann,
Nico
Das Programm müste funktionieren, aber die 2 sec warten würde ich rauschmeißen und statdessen den Port buffern.
Mfg MeroCode:Config Serialin = Buffered , Size = 100 'Empfangsbuffer für Funkmodul anlegen
Ich werde heute die 128funk aus dem Büro abholen und dann mal testen...
leider funktioniert es nicht...
so sieht mein Programm aus:
hat jemand einen Vorschlag?Code:' ---------------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
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
Code: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
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.
Hmmm wenn du nur 2 Rechner Kommunizieren lassen willst kauf dir doch ein USB Modul 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.
Mfg MeroCode: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
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.
Lesezeichen