Hi,
frohes Neues Euch Allen.
-
BONZE
ich weiss jetzt nicht, ob Dein Problem noch aktuell ist.
Der einfachste Weg, Steuerzeichen zu unterdrücken, ist doch ein nachgestelltes Semikolon, z. Bsp.
Print "Text";
Strings >1 habe ich noch nicht direkt über die RS232 verarbeitet, deswegen habe ich mal kurz den Walter befragt (so schön, diese Bücher).
Herausgekommen ist das folgende, einfache
Beispiel- Programm ohne weitere "Tricks" mit Verarbeitung und Ausgabe. Ich verwende übrigens AVR- Term.
Die LCD- Ausgabe dazu habe ich jetzt nicht getestet, sollte aber gehen.
command (1- n) ist die Anforderung vom PC (Terminal oder PC- Programm)
zeit der angeforderte Wert
Vielleicht hilft es auch anderen Neueinsteigern:
CodeBox bascom
'____________________________________________________________________
'
'Name : PC - Mega8.bas
'Autor : ACVision (c) 2006 - 2011, M.Gewohn
'Funktion : Kommunikationstest: PC/ Atmega8
'µC : Atmega8 - 16, 14.7456MHz
'____________________________________________________________________
'
$regfile = "m8def.dat"
$crystal = 14745600 ' Problemfreie Baudraten bis zu max. 115K2 der Hardware
$baud = 9600 ' COM 1
$hwstack = 40
$swstack = 12
$framesize = 32
'____________________________________________________________________
'_____ Compiler- Direktiven/ LIB's einbinden ________________________________
'
'____________________________________________________________________
'_____ Ports definieren _________________________________________________
'
DDRB = &B0000_0000 ' PortB - Eingang
portb = &B1111_1111 ' Pullups aktiviert
'
DDRC = &B0000_0000 ' PortC - Eingang
portc = &B1111_1111 ' Pullups aktiviert
'
DDRD = &B0000_0010 ' PortD = Eingang
portd = &B1111_1101 ' Pullups aktiviert
'____________________________________________________________________
'_____ Variablen - Subroutinen - Label ____________________________________
'
Dim command as string * 10
dim IsData(11) as byte at command overlay
dim zeit as single
dim n as byte
zeit = 12.34 : command = "" : n = 0
'____________________________________________________________________
'_____ Register _______________________________________________________
'
ADCSRA.7 = 0 : ACSR.7 = 1 'ADC und Komparator abgeschaltet
on URXC GetCommand ' Empfangs- Interrrupt- Routine
enable URXC
sreg.7 = 1 ' Interrupts an
'____________________________________________________________________
'_____ Pins zuweisen __________________________________________________
'
'____________________________________________________________________
'_____ Hauptprogramm ________________________________________________
'
'config waitsuart = 1
waitms 500
'
Print "Mega8 ok!"; ' AVR online?
do
If n = 10 then ' Alle Zeichen entsprechend der DIM da?
select case command ' Zuordnung des richtigen Kommando- Strings
case "SectorTime"
Print command ; ": " ; fusing(zeit , "##.##") ; " ";
LCD command
n = 0
case else
Print "Command Failed!"; ' Ausgabe, wenn falsch
n = 0
end select
endif
loop
End
'____________________________________________________________________'
'_____ Unterprogramme ________________________________________________
'
GetCommand:
incr n ' Nächstes Zeichen einlesen
IsData(n) = udr ' und Eins nach dem Anderen einfügen
return
'____________________________________________________________________'
'
Grüsse,
Michael