Re: [OT?] Reading hardware from thread
If you use this approach (which seems rational), then inside the loop, you
probably should adjust the waiting time dynamically, based on the actual
interval since the last loop. In other words, since even the waitable timer
is not 100% accurate, it might be wrong to always wait for a fixed value of
35 msecs. Instead, read the current system time, and then wait for a
dynamically-adjusted period of time that so that on average, there is a call
to ReadIo every 35 mesecs, even though each individual call is not exactly
35 mesecs from the last one. This way, over long periods of time, you at
least maintain a 35 msecs interval, on average, without ever losing data for
failure to read it in time.
I thought this was called "isochronous", but that terminology might be
wrong.
Mike
"Yi Ren" <yren@lasercraftinc.com> wrote in message
news:uOwYqbegHHA.392@TK2MSFTNGP06.phx.gbl...
My suggestion is to use a seperate thread to perform the I/O reading.
Inside
the thread:
hTimer = CreateWaitableTimer(..);
SetWaitableTimer(hTimer, ...);
do
{
ReadIo(...);
Do something with the reading result (for example, send a usre defined
message to your maim thread for the reading) ....
SetWaitableTimer(hTimer, ...);
WaitForSingleObject(hTimer, ...);
} while (exit_condition);
This way, your main app. can go on to do its own thing utill it receives
the
result from the I/O reading; or if it has nothing to do, just wait on the
I/O reading thread using WaitForSingleObject.
Eric
"Anders Eriksson" <andis59@gmail.com> wrote in message
news:y5ot62o2p1f5.dlg@ostling.com...
Hello,
This might be a slightly Off Topic question but I don't know where else
to
put it.
I have a digital I/O PCI Card that I have to read at least once every 35
ms
(We are using the I/O card for communicating with an PLC that has about
35
ms cycle time.
I have tried using OnTimer() but it will not work with these small
times.
So I was thinking that I maybe could start a thread that reads the I/O
card
continuously in a loop and creates Events Messages when something
changes.
Since I haven't done anything like this before I just want to check with
you guys and girls if it's a stupid idea or not!?
Any suggestion on how to solve the problem would be appreciated!
// Anders
--
English is not my first, or second, language
so anything strange, or insulting, is due to
the translation.
Please correct me so I may improve my English!