Archiv verlassen und diese Seite im Standarddesign anzeigen : rs232 Datenübertragung
Hallo Leute, ich bin am verzweifeln. Ich versuche per Rs232 (mal direkt an AVR mit RX/TX gekreuzt, mal üer MAX-Chip) ein paar Daten zu übertragen. Und zwar 6 Word-Zahlen so, daß der Empfänger genau sagen kann, daß es sich um Zahl 1, oder 3...5 etc handelt.
Aber irgendwie geht es nicht, nichtmal mit der Verbindung der beiden AVR (beides mega8) direkt.
ich wollte aus Ressourcen-Gründen nicht "print" benutzen, sondern mit Urxc etc arbeiten.
ich dachte daran, die 6 zahlen (max 4stellig) in einen String zu stecken und den zu senden und beim Empfänger wieder zu zerlegen und zu konvertieren. oder hat da jemand eine bessere Idee?
Vielen Dank
du gibst uns jetzt erstmal deinen programmcode, und warum nen string, wenn man auch die zahl direkt senden kann?
Martin
ja, aber wie kann ich denn die zahl dem empfänger kenntlich machen? also das der Empfänger weiß, welche Zahl (Nr 2oder 4 etc) angekommen ist?
sender:
$Regfile = "mega8.dat"
$Crystal = 4000000
$Baud = 9600
Dim a As word
Dim b as word
Dim c as word
Dim d as word
Do
If USR.RXC = 1 Then pint a
End If
Loop
End
empfänger:
$Regfile = "mega8.dat"
$Crystal = 4000000
$Baud = 9600
Dim a As word
Dim b as word
Dim c as word
Dim d as word
Do
If USR.RXC = 1 Then usr=a
End If
Loop
End
naja und damit geht das nicht so gut...
vielen Dank für euer bemühen
also: signalisieren, welches byte, mit nem vorbyte, was ne nummer enthält, und ausserdem mach das bitte erstmal mit dem print und ischarwaiting oder inkey o.ä. und dann such die passenden register und befehle raus
ja, wenn ich wüßte wie, dann würde ich es auch machen, aber mir fehlt dafür einfach der Einblick.
Was meinst du mit vorbyte?
der name war nicht wirklich perfekt gewählt ^^
also nen byte, wo die nummer des bytes was folgt drinsteht
und guck dich doch mal in der bascom-help durch, bei inkey, ischarwaiting und waitkey
If USR.RXC = 1 Then pint a ------------ print a oder?
zum empfangen:
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 19200
Dim I As Byte
Do
If Usr.rxc = 1 Then
I = Udr
Select Case I
Case "H"
Print "Hallo AVR"
Case "h"
Print "hallo avr"
Case Else
Print "Unbekannter Befehl"
End Select
End If
Loop
End
mfg psf
danke gast für den rowalt-quelltext. aber der bringt mich, dank eigener erfahrung, absolut nicht weiter.
ischarwaiting wird in der hilfe zwar beschrieben, aber taucht im beispiel nicht auf, somit kann ich damit nichs anfangen
ja brauchst doch kein beispiel, der begriff erklärt sich doch selbst, ausserdem war der gast eh nur pebisoft, musste nicht drauf achten ^^
also ich hab das so gelöst:
ich hab n startbyte definiert, beispiel &H55,
damit der empfänger weiß, hier gehts los, das ist das erste zu übertragende Byte.
Dann nicht 4 einzelne Variablen, sondern eine Matritze mit 4 mal der gleichen
Variable, die ich dann aber hochzählen kann.
Mit dem Startbyte also den Matrixzähler auf 1,
dann warten bis zeichen im Buffer (ischarwaiting=1)
Zeichen übernehmen (inkey a(x))
wenn Variablenwert >0 dann haste das zu empfangende Byte,
Zähler um 1 erhöhen ( incr(x) )
und das ganze wieder ab dem Punkt: Warten auf Zeichen, bis x>3
(somit =4) und alle benötigten Daten drinne sind.
Wobei man die ischarwaiting nicht unbedingt braucht, kannst auch einfach
den inkey mamchen, wenn Zeichenbuffer leer ist gibts 0 zurück.
das nennt man auch array, ne matrix ist mindestens zweidimensional.
sag mal bescheid, wenn du mit den befehlen absolut nicht klarkommst, dann schreib ich mal nen kleines proggi
uiiii das wär genau das was ich brauche ... bei mir is das startbyte 200 (das gerät was ich ansteuern will benutzt das eslip protokoll)
befehle schicken kann ich, dann schalte ich meinen 485 auf empfang, dann müsste ich das startbyte abwarten und dann die restlichen bytes speichern bis zum endbyte (201)
aber wie meint ihr das, wann setz ich den matrixzähler auf 1, wie komm ich da dran buhuu
kannste vielleicht nochmal dein problem etwas detailreicher beschreiben, und bitte mit dem protokoll des senders, bzw. der identifikation des chips
Dank,
Martin
ja ich hab einen extra thread aufgemacht, der is hier:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=17670&sid=4b7b0fa4a72108e6ed2d8efbe80ebf71
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.