-
Hallo Papsi!
Du musst mit ISCHARWAITING prüfen, ob ein neues Zeichen anliegt. Wenn nicht, dann darfst du nicht mit INPUTBIN danach fragen. Denn INPUTBIN wartet bis ein Zeichen kommt. Das ganze Programm bleibt also an dieser Stelle stehen. Somit dürfte auch klar sein, weshalb DEBOUNCE nicht funktioniert.
Code:
dim is_waiting as byte
...
is_waiting = ischarwaiting(#1)
if is_waiting = 1 then
Inputbin #1 , A
If A = 10 Then Goto XYZ
If Relaisx1hoch = 0 And Relaisx2hoch = 0 And Relaisx3hoch = 0 And Relaisx4hoch = 0 Then
Alleshoch = 0
X13hoch = 0
X23hoch = 0
X33hoch = 0
X43hoch = 0
End If
If Relaisx1runter = 0 And Relaisx2runter = 0 And Relaisx3runter = 0 And Relaisx4runter = 0 Then
Allesrunter = 0
X13runter = 0
X23runter = 0
X33runter = 0
X43runter = 0
End If
end if
Debounce Tasterx1hoch , 0 , X1hoch , Sub 'Tasterabfrage
Debounce Tasterx1runter , 0 , X1runter , Sub
...
Außerdem fehlt mir in diesem Programm irgendwie die OPEN-Anweisung.
Wenn du langen Code zeigen möchtest, dann kannst du diesen in einen Paste-Service wie z.B. LodgeIt! http://paste.pocoo.org/ eingeben und uns dann den Link zu diesem Code posten.
mfg
Gerold
:-)
-
Die Open Anweisung habe ich aus versehen mit gelöscht.
Sieht so aus:
Code:
Open "COMB.1:2400,8,N,1,inverted" For Output As #1 ' PB.1 ist Sender
Open "COMB.0:2400,8,N,1,inverted" For Input As #2 ' PB.0 ist Empfänger
Die Sache mit ISCHARWAITING ist ja gerade mein Problem, das bekomme ich nicht hin!
Das Inputbin läuft ja schon, nur bleibt er wie gesagt stehen...
-
Wenn ich deinen Programmcode so einfüge meckert Basco rum:
Code:
Error : 328 Line : 206 Not valid for SW UART, in File ...
-
Hallo Papsi!
Wenn ISCHARWAITING nicht funktioniert, dann könnte dir vielleicht INKEY weiterhelfen. Das liefert 0 zurück wenn nichts anliegt. Das hindert dich aber auch daran, ein 0 zu empfangen. Denn das könntest du nicht unterscheiden.
mfg
Gerold
:-)
Code:
...
A = Inkey(#1)
if A > 0 then
If A = 10 Then Goto XYZ
If Relaisx1hoch = 0 And Relaisx2hoch = 0 And Relaisx3hoch = 0 And Relaisx4hoch = 0 Then
Alleshoch = 0
X13hoch = 0
X23hoch = 0
X33hoch = 0
X43hoch = 0
End If
If Relaisx1runter = 0 And Relaisx2runter = 0 And Relaisx3runter = 0 And Relaisx4runter = 0 Then
Allesrunter = 0
X13runter = 0
X23runter = 0
X33runter = 0
X43runter = 0
End If
end if
Debounce Tasterx1hoch , 0 , X1hoch , Sub 'Tasterabfrage
Debounce Tasterx1runter , 0 , X1runter , Sub
...
-
L Ä U F T . . .
(mußte nur Inkey von #1 auf #2 ändern, da #2 der "Empfangsport" ist)
Das ist die Lösung:
Code:
...
A = Inkey(#2)
if A > 0 then
If A = 10 Then Goto XYZ
End If
!!! Super Danke !!!
-
Falls du später nicht nur ein Zeichen empfangen musst, könntest du vielleicht so vorgehen (ungetestet):
Code:
dim buffer as string * 10
dim buffer_byte(10) as byte at buffer overlay
dim counter as byte
...
buffer = string(0, 10)
counter = 0
do
A = Inkey(#1)
if A > 0 then
incr counter
if counter > 10 then
' Fehler
'...
end if
buffer_byte(counter) = A
end if
loop until A = 0
if counter > 0 then
'tu etwas mit dem buffer
...
end if
...
mfg
Gerold
:-)
-
Ne - das reicht mir so...
Damit kann ich dann die Sendersache weitermachen.
PS
Habe da dann noch was: O:)
https://www.roboternetz.de/phpBB2/viewtopic.php?t=37588