val - Anobium/Great-Cow-BASIC-Help GitHub Wiki
Syntax:
var = Val(string) 'Supports decimal byte and word strings only.
'use the following for strings that represent Long numbers
var = Val32(string) 'Supports decimal long number strings only.
Command Availability:
Available on all microcontrollers
Explanation:
The Val
function will extract a number from a string variable, and
store it in a word variable. One potential use is reading numbers that
are sent in ASCII format over a serial connection.
The Val32
function will extract a long number from a string variable,
and store it in a long variable.
The Val
function will not extract a value from a hexadecimal string.
Example1:
'Program for an RS232 controlled dimmer
'Set chip model
#chip 16F1936
'Set up hardware serial connection
#define USART_BAUD_RATE 9600
#define USART_TX_BLOCKING
'Set pin directions for USART and PWM
'Variable for output level
Dim OutputLevel As Word
'Variables for received bytes
Dim DataIn As String
DataInCount = 0
'Main Loop
Do
'Get serial byte
Wait Until USARTHasData
HSerReceive InByte
'Process latest byte
'Enter key?
If InByte = 13 Then
'Convert output level to numeric variable
OutputLevel = Val(DataIn)
'Output
HPWM 1, 32, OutputLevel
'Clear output buffer for next command
DataIn = ""
DataInCount = 0
End If
'Number?
If InByte >= 48 and InByte <= 57 Then
'Add to end of DataIn string
DataInCount += 1
DataIn(DataInCount) = InByte
DataIn(0) = DataInCount
End If
Loop
Example2:
' ----- Configuration
'Chip Settings.
#chip 16f18855,32
#Config MCLRE_ON
; ----- Define Hardware settings
'' -------------------LATA-----------------
'' Bit#: -7---6---5---4---3---2---1---0---
'' LED: ---------------|D5 |D4 |D3 |D2 |-
''-----------------------------------------
''
'Set the PPS of the RS232 ports.
UNLOCKPPS
RC0PPS = 0x0010 'RC0->EUSART:TX;
RXPPS = 0x0011 'RC1->EUSART:RX;
LOCKPPS
; ----- Constants
#define USART_BAUD_RATE 19200
#define USART_TX_BLOCKING
#define LEDD2 PORTA.0
#define LEDD3 PORTA.1
#define LEDD4 PORTA.2
#define LEDD5 PORTA.3
Dir LEDD2 OUT
Dir LEDD3 OUT
Dir LEDD4 OUT
Dir LEDD5 OUT
#define Potentiometer PORTA.4
DIR Potentiometer In
#define SWITCH_DOWN 0
#define SWITCH_UP 1
#define SWITCH PORTA.5
Dir SWITCH In
; ----- Variables
dim bytevar as Byte
dim wordvar as Word
dim longvar as long
bytevar = 0
wordvar = 0
longvar = 0
; ----- Main body of program commences here.
#option Explicit
do
wait 100 ms
bytevar = Val( "255" )
HSerPrint bytevar
HSerPrintCRLF
wordvar = Val( "65535" )
HSerPrint wordvar
HSerPrintCRLF
longvar = Val32( "65536" )
HSerPrint longvar
HSerPrintCRLF 2
wait 1 s
loop
end
; ----- Support methods. Subroutines and Functions