beautypg.com

2 example using rs-485 mode, Example using rs-485 mode – Campbell Scientific SDM-SIO1 Serial Input/Output Module User Manual

Page 27

background image

SDM-SIO1 Serial Input/Output Module

4.3.2 Example Using RS-485 Mode

'-----------------------------------------------------------------------

' Example use of the SDM-SIO1.

' This example shows how to open the a RS-485 serial port using an SDM-SIO1.

' Data is sent from the logger to the sensor.

' The program then sits in a loop until the SDM-SIO1 reports it had data

' available

' The logger then retrieves the data and places it into a string

' The returned string is then converted to a float and an offset is applied

'-----------------------------------------------------------------------

Public ChkValReturned

'value returned by the SerialInChk function

Public AvailableData

'amount of data in the SDM-SIO1s buffer at present

Public ReturnedData as string * 100

'string where the data from the logger is stored

Public ConvertedValue as float

'floating point value returned by sensor

Sequentialmode

BeginProg

Const SensorPort = 32

'Declare the serial port the sensor is set to

'The sensors address switch should be set to position 0

SDMSpeed

(30)

'Optionally set the SDMSpeed not normally needed

Scan(1000,mSec,0,0)

'Open serial port to RS-485 mode, 115200bps, 8-bit data, 1 stop bit and no parity

'note that the 'SerialOpenFormat' parameter is 19 for RS-485 mode

SerialOpen

(SensorPort,115200,19,100,10000)

'open the serial port to the sensor

'Request data' will need to be replaced with the correct command for your sensor

SerialOut

(SensorPort,"Request data","",0,10)

'Send data to the sensor

'wait for the sensor to respond using a loop this time – this may be useful if there

'is not a predictable response from the sensor.

Do

ChkValReturned

=

SerialInChk (SensorPort) 'Get available data

AvailableData

=

ChkValReturned

AND

4095

'mask off the input pin flag (bit 16)

Loop until AvailableData <> 0

'wait until data is available

SerialIn

(ReturnedData,SensorPort,100,0,100) 'Get data from the sensor

'Convert string to float

ConvertedValue

=

ReturnedData

'add an offset to the returned floating point value

ConvertedValue = ConvertedValue + 100

SerialClose

(SensorPort)

'Close the serial port to the sensor

'(this places the SDM-SIO1 into its lowest power mode)

'Now there would be code to read the data out of the ReturnedData string and either store

'it as strings or convert the string into number(s).

Next

Scan


EndProg

21