' CoreBASIC script by Iain Derrington
'
' Demo program to read commands sent over a
' Bluetooth serial link.
'
' http://soldercore.com
'
INSTALL "UART" AS UART
'
UART.SPEED = 9600
UART.DATA = 8 ' 8 data bits
UART.PARITY = 0 ' no parity
UART.STOP = 1 ' 1 stop bit
'
PIN 2 AS DIGITAL OUTPUT
'
DIM MYBUF(10)
HEAD = 0
'
CLS
'
'Uncomment line below to configure the BT device
'CALL CHECK_BT_MODULE
'
PRINT "Waiting for Cmd"
'
'Read data out of the UART buffer.
'Waiting for a linefeed to delimit a cmd
WHILE 1
WAIT UART.READY > 0
'
MYBUF(HEAD) = UART.READ(1)
'
IF ASC(MYBUF(HEAD)) = %LF THEN
CALL CMD_CNTRL(MYBUF(0 TO HEAD - 1))
HEAD = 0
ELSE
HEAD = HEAD + 1
ENDIF
'
IF HEAD > 9 THEN HEAD = 0
WEND
'
END
'
'***********************************************************
'
DEFPROC CMD_CNTRL(CMD)
CMD = MERGE(CMD)
'
CASE CMD
WHEN "Hello"
CALL HELLO
WHEN "LED ON"
CALL LED(1)
WHEN "LED OFF"
CALL LED(0)
WHEN "ETC ETC"
'You get the idea
OTHERWISE
PRINT "Don't recognise the command", CMD
UART.TX = "Don't think so"
ENDCASE
ENDPROC
'
'**************************************************************
'
DEFPROC HELLO
PRINT "Hello From Android"
UART.TX = "Hello from SolderCore"
ENDPROC
'
DEFPROC LED(STATE)
IF(STATE) THEN
PRINT "LED "; $GREEN; "on!"
PRINT $WHITE;
'
ELSE
PRINT "LED "; $RED; "off!"
PRINT $WHITE;
ENDIF
PIN 2 = STATE
ENDPROC
'
'************************************************************
'
DEFPROC CHECK_BT_MODULE()
'
UART.PRINT = "AT"
WAIT UART.LEFT = 0
TIMER = 0
REPEAT
UNTIL(TIMER > 4000) OR (UART.READY >= 2)
'
IF TIMER > 4000 THEN
PRINT "No BT module found!"
ELSE
PRINT "BT module found!"
S = UART.RX(2)
UART.PRINT = "AT+NAMESOLDERCORE"
WAIT UART.LEFT = 0
'
TIMER = 0
REPEAT
UNTIL(TIMER > 4000) OR (UART.READY >= 9)
'
IF TIMER > 4000 THEN
PRINT "No Response...Weird"
ELSE
WHILE UART.READY > 0
PRINT CHR(UART.READ);
WEND
ENDIF
ENDIF
ENDPROC