du gibst uns jetzt erstmal deinen programmcode, und warum nen string, wenn man auch die zahl direkt senden kann?
Martin
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 mega 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
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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 ^^
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
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.
Vor den Erfolg haben die Götter den Schweiß gesetzt
Lesezeichen