[REBOL] Re: wait, events and ports - how they work together ?
From: gabriele::colellachiara::com at: 25-Jul-2006 10:07
On Monday, July 24, 2006, 10:10:16 PM, you wrote:
sal> I have serial port functions that finaly works well in non gui way.
sal> When I add layouts then the "wait serial-port" stops and waits on an
sal> event of view/layout.
A little background on how WAIT works:
1) you can think of WAIT as doing something like:
wait: func [ports [block!]] [
internal-wait join system/ports/wait-list ports
(just showing the block of ports case for simplicity). So this
means that to wait on a port, either you pass it to WAIT or you
put it in the wait list. A port that is in the wait list is
always waited for every time you use WAIT.
2) when there is an event on a port that is being waited for:
2.1) if the port has no AWAKE function, then WAIT returns the
2.2) if the port has an AWAKE function, this function is called;
if it returns true, WAIT returns the port; if it returns
false, WAIT continues waiting.
Note that in the current implementation only the value FALSE makes
WAIT continue waiting, any other value will make it return (i.e.
it doesn't consider NONE to be equivalent to FALSE, you have to
explicitly return FALSE).
In your case I'd just suggest to add your sms-port to the wait
list and set an awake function for it. Awake functions take one
argument, the port that got the event (so you can use the same
function on many ports; in your case you don't care about this).
Gabriele Santilli <gabriele-rebol.com> --- http://www.rebol.com/
Colella Chiara software division --- http://www.colellachiara.com/