|
From: kevinl <liu...@gm...> - 2009-04-20 15:51:58
|
Hi Skuld,
Thanks very much.^_^
I get it. So the thread will keep calling the read() until yield() or
sleep().
Yours sincerely,
kevin.
Skuld wrote:
>
> ^^
>
> Sure I can.
> As I told you in my first reply, you have to call the Read method to fill
> up your structure's fields,
> from a communication pipe with Player.
>
> That is the code of the JavaClient (2.0.1 version, but all versions should
> work the same.)
>
> public void runThreaded (long millis, int nanos) {
> if (isThreaded) {
> System.err.println ("[PlayerClient]: A second call for
> runThreaded, ignoring!");
> return;
> }
> this.millis = millis;
> this.nanos = nanos;
> isThreaded = true;
> this.start ();
> }
>
> As you can see, when you call RunThreaded, you just set some special
> fields before
> launching the start method. I guess you know how works Threads in java, so
> I'll just show you
> the run method (which is called by the start method):
>
> public void run () {
> try {
> while (isThreaded) {
> if (this.datamode == PLAYER_DATAMODE_PULL) {
> this.requestData ();
> while (read () != PLAYER_MSGTYPE_SYNCH && isThreaded);
> } else
> // while (is.available () != 0)
> // while (read () != PLAYER_MSGTYPE_SYNCH && isThreaded);
> read ();
>
> if (millis < 0)
> Thread.yield ();
> else
> if (nanos <= 0)
> Thread.sleep (millis);
> else
> Thread.sleep (millis, nanos);
> }
> } catch (InterruptedException e) { throw new PlayerException (e);
> }
> // } catch (IOException e) { throw new PlayerException (e); }
> }
>
> Do you understand? This function have a while's loop. This loop first wait
> for data from Player,
> and dispatch it in the structures's fields with a read() 's loop. There is
> the call of the Read function.
> (an equivalent to be meticulous, because Read function is available in C
> library, but in Java,
> read is a private function. You just can call it by readAll(), which does
> the same things that the C one does,
> and the simple read does too -but with verifications.)
>
> So, in fact when you call RunThreaded, one Thread is specially created to
> catch information from
> Player and dispatch it into structures, for the other Thread (because
> threads share memory.), so for your code,
> so you doesn't have to call Read() anymore. And you still have
> informations from Player.
>
> Here it is !
> I hope I was clear enough ^^ If I wasn't, tell me so.
> Have a nice day!
> Skuld
>
>
> kevinl wrote:
>>
>> Hi Skuld,
>> Thank you for your advice, I call runThreaded(-1,-1) before my code and I
>> can get the data now. And I'm sorry to reply your message so late. And I
>> am confused why the fuction of runThreaded(-1,-1) will call an equivalent
>> of Read. Could you tell me why?
>>
>> Thanks a lot,
>> kevin
>>
>>
>
>
--
View this message in context: http://www.nabble.com/Problems-with-laserinterface-tp22986701p23139377.html
Sent from the java-player-users mailing list archive at Nabble.com.
|