Congratulations on sorting it Dick.
I'm having problems with my code which seems so simple but it won't work with serin/out2 qualifiers.
I have commented out the Serin2 ACK in the control code as it doesn't get one due to the field code not working. This way, at least the code works the relay ok if I remove the Serin2 qualifier and just send "BOB".
This points to the qualifiers as the culprit as without them the code works OK.
I've tried every combination and it doesn't respond. All I want in the Field unit is to receive a qualifier to branch to the desired gosub.
Please bear in mind code below is probably incorrect as it's what's left of trying.
Control code
Code:
Include "modedefs.bas"
DEFINE OSC 10
TRISA=%00000000
TRISB=%11110000
CMCON=7 ; comparators off
redled VAR PortB.4
greenled VAR PortB.5
yellowled VAR PortB.6
switch VAR PortB.7
redstop VAR BYTE
greengo VAR BYTE
flip VAR BYTE
;relay var PortA.1
flip = 0 ; counter flipflop for single command send
redstop = 1
greengo = 2
test: ; test led outputs
high redled
pause 500
low redled
high greenled
pause 500
low greenled
high yellowled
pause 500
low yellowled
pause 2000
main:
IF SWITCH = 1 and flip = 0 THEN GOSUB red
pause 500
IF switch = 0 and flip = 1 then gosub green
goto main
red:
pause 1
SEROUT2 PortA.3,T9600,["BOB",redstop] ; send command to field unit
;SERIN2 PortA.2,84,[WAIT("ACK")] ; wait for acknowledge signal
low greenled
high redled
flip = 1 ; flip flop counter to ensure send only once
gosub flash ; flash test led
return
green:
pause 1
SEROUT2 PortA.3,T9600,["BOB",greengo]
;SERIN2 PortA.2,84,[WAIT("ACK")]
low redled
high greenled
flip = 0
gosub flash
return
flash:
high yellowled
pause 50
low yellowled
PAUSE 50
high yellowled
pause 50
low yellowled
PAUSE 50
high yellowled
pause 50
low yellowled
return
END
Field code
Code:
Include "modedefs.bas"
DEFINE OSC 10
TRISA=%00000100
CMCON=7
relay VAR PortA.1
signal var BYTE
low relay
' Program
MAIN:
SERin2 PortA.2,84,[wait("BOB"),dec SIGNAL]
if signal = 1 then
gosub redstop
endif
if signal = 2 then
GOsub greengo
endif
goto main
redstop:
high relay
pause 25
SEROUT2 PortA.3,T9600,["ACK"]
return
greengo:
low relay
pause 25
SEROUT2 PortA.3,T9600,["ACK"]
return
END
As an oddball I also discovered that FOR NEXT just doesn't seem to work in any of my codes?
Rob
Bookmarks