-
Notifications
You must be signed in to change notification settings - Fork 8
serprint
Anobium edited this page Oct 18, 2020
·
1 revision
Syntax:
SerPrint channel, value
Command Availability:
Available on all microcontrollers.
Explanation:
SerPrint
is used to send a value over the serial connection. value
can be a string, integer, long, word or byte.
channel
is the serial connection to send data through (1 | 2 |3 ).
SerPrint
will not send any new line characters. If the chip is sending
to a terminal, these commands should follow SerPrint
.
SerSend channel, 13
SerSend channel, 10
Example:
'This program will display any values received over the serial
'connection. If "pot" is received, the value of the analog sensor
'will be sent.
'Chip settings
#chip 18F2525, 8
'LCD settings
#define LCD_IO 4
#define LCD_RS PORTC.7
#define LCD_RW PORTC.6
#define LCD_Enable PORTC.5
#define LCD_DB4 PORTC.4
#define LCD_DB5 PORTC.3
#define LCD_DB6 PORTC.2
#define LCD_DB7 PORTC.1
'Serial settings
#define RS232Out PORTB.0
#define RS232In PORTB.1
'Set pin direction
Dir RS232Out Out
Dir RS232In In
'Config Software-UART
#define SendAHigh Set RS232Out ON
#define SendALow Set RS232Out OFF
#define RecAHigh Set RS232In ON
#define RecALow Set RS232In OFF
set RS232Out On
Do
'Potentiometer
#define POT_PORT PORTA.0
#define POT_AN AN0
'Set pin direction
Dir POT_PORT In
'Create buffer variables to store received messages
Dim Buffer As String
Dim OldBuffer As String
BufferSize = 0
'Set up serial connection
InitSer 1, r9600, 1 + WaitForStart, 8, 1, none, invert
'Show test messages
Print "Serial Tester"
Wait 1 s
SerPrint 1, "Great Cow BASIC RS232 Test"
SerSend 1, 13
SerSend 1, 10
Wait 1 s
'Main loop
'Get a byte from the terminal
SerReceive 1, Temp
'If Enter key was pressed, deal with buffer contents
If Temp = 13 Then
Buffer(0) = BufferSize
'Try to execute commands in buffer
If Not ExecCommand (Buffer) Then
'Show message on bottom line, last message on top.
CLS
Print OldBuffer
Locate 1, 0
Print Buffer
'Store the message for next time
OldBuffer = Buffer
End If
BufferSize = 0
End If
'Backspace code, delete last character in buffer
If Temp = 8 Then
If BufferSize > 0 Then BufferSize -= 1
End If
'Received ASCII code between 32 and 127, add to buffer
If Temp >= 32 And Temp <= 127 Then
BufferSize += 1
Buffer(BufferSize) = Temp
End If
Loop
'Takes a sensor reading and sends it to terminal
Sub SendSensorReading
SerPrint 1, "Sensor Reading: "
SerPrint 1, ReadAD10(POT_AN)
SerSend 1, 13
SerSend 1, 10
End Sub
'Will check the buffer for a command
'If command found, run it and return true
'If not, return false
Function ExecCommand (CmdIn As String)
ExecCommand = False
'If received command is "pot", show potentiometer value
If CmdIn = "pot" Then
SendSensorReading
ExecCommand = True
End If
End Function
For more help, see RS232 Software Overview