So it sounds like you want to send back a sequence of two-byte binary
data samples.  Thus, you'll use the Type Cast function.

(When I talked about ASCII, I meant that encoded the value "142" as
three ASCII characters, '1', '4' and '2'.  It sounds like you are not
going to encode your data this way.)

Back to the continuous vs. query mode...  It's kind of weird to be
combining both of those.  Usually devices either constantly spew data,
or they are queryable.  Maybe they can do either, but they are
typically put into one mode or the other as part of their
configuration.

But let's run with this.  Here's what I'm envisioning, and you can
tell me if I'm right.

When no queries are going on, the satellite is constantly spewing
out...

!Temp1[data]End
!Temp2[data]End
!Temp3[data]End
 and starting over...
!Temp1[data]End
etc.

If the satellite receives a query, it reports the results back at the
next opportunity.  Something like this...

!Temp1[data]End
!Temp2[da
 Computer queries for ?Temp1 while receiving !Temp2
ta]End
!Temp1[data]End
!Temp3[data]End
etc.

If that's the case, then I think you'll want two parallel loops.  One
is responsible for waiting for a reason to query for a specific data
value.  It doesn't do anything until that data is needed.

The other loop is constantly reading, and has no idea whether data was
queried, or just received as part of the normal spewage.  It is
responsible for taking whatever is read, parsing it and updating some
data structure (e.g., a set of globals) that contain the latest data
values.

The rest of your program that needs to display or log or analyze the
data just looks at the globals.

Is any of this making sense?  Am I off track?

Brian

PS:  I think any posting that contains the noun "spewage" is worthy of
a 4-star rating, don't you? ;-)

Reply via email to