CRBasic Example 2: Detecting the state of the input line
'CR1000 example program showing how to detect the state of the input line on an
'SDM-SIO1A using the SDMGeneric instruction
Public
sio1response As Long, Inputstate As Boolean
Const
addr = 0
'constant sdm address CHANGE with SDM-SIO1A address
Const
cmd = 1
'constant, command 1 returns the input state in bit 16
Const
bytes_out = 0
'constant number of bytes out - none sent
Const
bytes_val = 2
'two bytes returned
Const
big_endian = 1
'1=(big endian)
Const
delay_usec = -0
'delay between outgoing bytes (negative means delay also
'for incoming bytes)
Const Values_in = 1
'Main Program
BeginProg
Scan
(1,Sec,0,0)
'Or whatever scan rate is being used
'Use the SDMGeneric instruction to send command 0x01 which returns the input
'line state as bit 16
SDMGeneric
(sio1response,addr,cmd,bytes_out,
""
,Values_in,bytes_val, _
big_endian,delay_usec)
'bit 16 set for input line high or low so check the value and set a Boolean
'var TRUE or FALSE accordingly
Inputstate = sio1response
AND
&H8000
NextScan
EndProg
The input line can accept 0 and 5V logic inputs OR –12 and +12V RS-232 level inputs. The
following table shows a breakdown of the different input voltages allowed and the state of the
input line flag.
Voltage on the input line State of bit 16
+12V
1
–12V
0
5V
1
0V
0
A.2 The output pin (RTS/pin 8)
To set the output pin (RTS/pin 8) you must use the
SerialOutBlock()
instruction.
The spare I/O lines are RS-232 lines, NOT logic lines. This means that the output line voltage is
–12V and +12V (approximately), not 0 and 5V.
SDM-SIO1A and SDM-SIO4A Serial Input/Output Modules
33