Sponsored By

jjos

Qbasic Rs232 Code Explanation

Recommended Posts

Hi, I need to find out what these lines of code are doing? The purpose of the code is to get information from a machine via RS232. The string of information this prog is getting, is being manipulated but I can't figure out what hell its doing to the string? I'm not a QBasic programmer so Any help explaining these 6/7 lines would be appreciated. Thanks in advance.

'Read from inst

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

OPEN "COM1:9600,S,7,1,CD0,CS0,DS0,OP0,RS" FOR RANDOM AS #1

c1! = 0

c1$ = ""

s1$ = ""

a$ = CHR$(27) + "P": PRINT #1, a$

s1$ = "": c1$ = ""

a$ = INPUT$(15, #1)

CLOSE

s1$ = LEFT$(a$, 1)

c1$ = MID$(a$, 3, 8 )

c1! = VAL(c1$) 'inst value

IF in = 2 THEN c1! = c1! * 10

IF s1$ = "-" THEN c1! = -c1! 'Convert to -ve val if -sign

RETURN

Share this post


Link to post
Share on other sites

Line one of the "Function" is opening the rs232 FIFO and assigning its buffer the name #1 reading in random mode and not sequencal

next they are creating an integer and two strings.

next comes the work

a$ = CHR$(27) + "P": PRINT #1, a$

this is really two lines in one see the :

so we assign ascii char 27 (see http://game-editor.com/tutorials/images/ascii.jpg) followed by the P

so we have a$ = "^[P"

and the second half puts that string to the serial port (in basic you print to a port like you do the screen, and read from it like a keyboard)

s1$ = "": c1$ = ""

this is also two lines that assign blank strings to s1$ and c1$

it looks like (with out the rest of the code this is just a guess)

a$ = INPUT$(15, #1)

is assigning the first 15 chars from the serial port to a$

or INPUT$ is an Array and we are looking up a value that is at position 15 x the value on the serial port

then close does what it says , it closes the serial port

the rest is simple

s1$ = LEFT$(a$, 1)

assign the value of the array LEFT$ at position of value of a$ x 1

c1$ = MID$(a$, 3, 8 )

again assign c1$ the value from an array based on the value of a$

c1! = VAL(c1$) 'inst value

change string c1$ to an integer

IF in = 2 THEN c1! = c1! * 10

I assume this is correct for qbasic but in other languages its IF in == 2 Then, so we evaluate the value of 'in' and if it equals 2 then we multiply 10 to c1! and assign that value back to its self

IF s1$ = "-" THEN c1! = -c1! 'Convert to -ve val if -sign

check if s1$ = - and if so make c1! a negative number

hope that helps..

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now