Hallo alle Interessierten!
habe das Wochenende genutzt und die beiden Varianten, die RS232 interruptmäßig abzufragen, getestet.
Variante 1:
config serialin=buffered, size=nn
mach Bascom den Input mit Interrupt, mit der Frage
if ischarwaiting() = 1 then
databyte = inkey()
end if
Geht ganz gut, aber man muss ja dauernd die if...then Schleife durchlaufen um zu erfahren, ob was angekommen ist.
Daher bevorzuge ich:
Dim Gerät as Byte
Enable Interrupts
Enable Int0 (Pin0, Port D für RS232)
On Int0 Subroutine
End
Sub Subroutine()
gerät = inkey()
if gerät=A then
for i=1 to AnzahlBytes
Nachricht=inkey()
wort=wort & Nachricht
next
else
schicke weiter zum Gerät B
end if
Return
end
Damit kann der Controller in jedem beliebigen Unterprogramm sein. Wenn was ankommt wird sofort unterbrochen und die neue Anweisung ausgeführt.
Klappt bei mir prima.
Viele Grüße,![]()
Lesezeichen