Hi Jungs, ihr seit meine letzte Hoffnung! Ich hänge jetzt seit Tagen an der Inbetriebnahme einer RS232-Verbindung zwischen einem ATM128 und einem ELM323 und komme nicht mehr weiter: >$baud1 = 9600 >Open "COM2:" For Binary As #1 >Waitms 50 >Print #1 , "ATI" Die Verbindung steht bereits in die eine Richtung; der ATM128 kann den ELM ansprechen (z.B. über "Print #1 , "irgendwas") der ELM reagiert darauf und sendet eine ASCII-Folge (bekannt) zurück. Konkret frage ich hier seinen Namen mit "ATI" ab, zurück sollte der ASCII-String "ELM323 Version 2.0" kommen. Leider bekomme ich diesen String weder mit "INKEY", "WAITKEY", "GET" oder sonst irgendwas eingelesen. ISCHARWAITING sagt mir zwar, es wäre wohl ein Zeichen im Buffer, aber wie komme ich an diese Zeichen heran damit ich nachher einen kompletten String habe? Darüber hinaus sollen im nächsten Step dann auch Hex-Werte empfangen werden. Kann mir irgendjemand ne kleine Hilfestellung geben? :-) Danke!
Hi, wie frägst du denn ab? Wenn du dir eine Schnittstelle zuweist auch z.B wie du "#1" dann musst die auch mit inkey(#1) oder waitkey(#1) abrufen. Dann sollte der Empfang klappen, wenn ischarwaiting schon 1 zurückgibt, liegts ja blos noch am auslesen. :-) greetz Addy
YIP! Frage ab mit z.B. inkey (#1), da kommt dann aber nix! :-/ Gibt's denn nicht irgendwo ein Codefragment, in dem man die genauen Definitionen und die Vorgehensweise sehen kann? Und bevor jemand schreit .... wills ja nicht kopieren, sondern verstehen ,-)
Ich arbeite da gerne mit dem Urxc - Interrupt Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Open "com1:" For Binary As #1 Enable Interrupts Enable Urxc On Urxc Daten_empfang Dim Abfrage_zeichen as Byte Dim Daten as Bit '-------------------------------------- Do If Daten = 1 Then 'Tue hier was Reset Daten End If Loop End '-------------------------------------- Daten_Empfang: Abfrage_zeichen = Inkey(#1) Set Daten Return Das ist jetzt mal so ein Pseydocode ohne Empfangspuffer. Wenn du Empfangspuffer benötigst, solltest du das hier verwenden. Config Serialin = Buffered , Size = 20 Dim Na As String * 10 Enable Interrupts Print "Start" Do If Ischarwaiting() = 1 Then Print Na End If Wait 1 Loop Da bleibt dann auch Luft um was zu bearbeiten. greetz Addy
Hallo, ich habe das mal wie folgt gelöst (aus meinem Archiv ohne Funktionsgarantie, da ich es jetzt gerade nicht getestet habe): Wolfgang Do X = Ischarwaiting() If X = 1 Then Gosub Datenempfang Zeile = Str(rxin) Call LCD_Print(Zeile, x1, y1, Font1, XSize, YSize, Red, White) End If Loop Datenempfang: Inputbin Rxin Return
Du kannst Byte für Byte auch so lesen: If UCSRA.RXC=1 Then meinByte = UDR (mußt mal prüfen ob der Registername stimmt, beim MEga8 geht es so)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.