This Forum is Dedicated For all The Object Oriented PIC Lovers .......... The concept behind OOPic is straight forward. Use preprogrammed multitasking Objects from a library of highly optimized Objects to do all the work of interacting with the hardware. Then write small scripts in Basic, C, or Java syntax styles to control the Objects. During operation, the Objects run continuously and simultaneously in the background while the scripts run in the foreground telling the objects what to do.

Thursday, August 2, 2007

Re: [oopic] Converting a string value to a numeric value?

At 10:00 PM 8/1/2007, thetruth_as_i_seeit wrote:
>I'm trying to receive data to my OOPic R through a serial port
>connected to a laptop. I want to use this data to control objects
>from the OOPic but, in order to do that, I need to convert the string
>data that is coming from the serial port to numeric data.

It would help if you indicated exactly what "strings" you plan on
sending. I don't imagine you'll be sending single character commands forever.


>In C, there is a specific function for this called atoi, but I can't
>find anything like it in the OOPic manual.

There isn't anything like it. You'll have to roll your own.


>Just in case anybody wants to see it, here is my code ...
>
>Dim A As New oDIO1
>Dim B as New oSerial
>
>Sub Main()
> A.IOLine = 8
> A.Direction = cvOutput
> B.Baud = cv9600
> B.Operate = cvTrue
> A = 0
> Do
> If B.Received = cvTrue then
> B.Value = B.value

I take it you're echoing the characters back to the PC here?


> End If
> A = B

That will (sometimes) grab the NEXT character from the serial port
and put it in A.


> Loop
>End Sub
>
>Obviously, this doesn't work because B is not a zero or one in a
>numerical sense, and what I am picking up is ASCI code ... in other
>words a whole bunch of zeros and ones.

You need to convert from ASCII characters to numeric values. You
need an atoi...


>Any thoughts?

Sure. It looks like you want to send '0' or '1' to turn the DIO1 off or on.

a = 0
do
if b.received then
c = b // copy rcvd character to c (declare c as a byte variable)
b = c // echo character back to PC

// set a to zero or one

a = c - 48 // '0' = ASCII code #48, '1' = ASCII code #49
end if
loop


You'll have to clean that up for whatever OOPic "language" you're
using (BASIC?)

I imagine you'd like to do more than just toggle a single DIO1 - so
what's next?


...Andy



Yahoo! Groups Links

<*> To visit your group on the web, go to:

http://groups.yahoo.com/group/oopic/

<*> Your email settings:
Individual Email | Traditional

<*> To change settings online go to:

http://groups.yahoo.com/group/oopic/join

(Yahoo! ID required)

<*> To change settings via email:
mailto:oopic-digest@yahoogroups.com
mailto:oopic-fullfeatured@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
oopic-unsubscribe@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:

http://docs.yahoo.com/info/terms/

No comments: