Serial port write freezes the VM

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Serial port write freezes the VM

mactro
Hi,

I'm developing a mod for Scratch that will allow controlling an educational robot via Bluetooth. I'm using SerialPort2 class that is included in Scratch plugin and allows opening ports by name. Everything works fine BUT, when I send commands in a loop, and the connection is lost (i.e. the robot was powered off), the VM freezes. I tried forking the port nextPutAll like that:

timer := Delay forMilliseconds: 1000.
port := SerialPort2  new.
port openPortNamed:'COM14' baud:57600.
process := [port nextPutAll:'test'. Transcript show:'port'.] forkAt: 1.
[timer wait. Transcript show:'delay'. process terminate.] forkAt: 7.

but with no result. Is there any way to write to a serial port with timeout?

mactro
Reply | Threaded
Open this post in threaded view
|

Re: Serial port write freezes the VM

Levente Uzonyi-2
On Mon, 9 Sep 2013, mactro wrote:

> Hi,
>
> I'm developing a mod for Scratch that will allow controlling an educational
> robot via Bluetooth. I'm using SerialPort2 class that is included in Scratch
> plugin and allows opening ports by name. Everything works fine BUT, when I
> send commands in a loop, and the connection is lost (i.e. the robot was
> powered off), the VM freezes. I tried forking the port nextPutAll like that:
>
> timer := Delay forMilliseconds: 1000.
> port := SerialPort2  new.
> port openPortNamed:'COM14' baud:57600.
> process := [port nextPutAll:'test'. Transcript show:'port'.] forkAt: 1.
> [timer wait. Transcript show:'delay'. process terminate.] forkAt: 7.
>
> but with no result. Is there any way to write to a serial port with timeout?

I can't help you with the SerialPort issue, but the process priorities 1
and 7 are definitely bad. Since the idle process uses priority 10, your
processes will never run. Try using something between 11 and 39, or use
the named priorities:
Processor userBackgroundPriority
Processor systemBackgroundPriority


Levente

>
> mactro
>
>
>
> --
> View this message in context: http://forum.world.st/Serial-port-write-freezes-the-VM-tp4707333.html
> Sent from the Squeak - Beginners mailing list archive at Nabble.com.
> _______________________________________________
> Beginners mailing list
> [hidden email]
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners
Reply | Threaded
Open this post in threaded view
|

Re: Serial port write freezes the VM

mactro
Well, at first I tried using larger numbers, but it seems, that my VM
has maximum priority equal to 8. Processor userBackgroundPriority
prints 3 and Processor userInterruptPriority prints 5.


pozdrawiam
Maciej TroszyƄski


2013/9/10 Levente Uzonyi <[hidden email]>:

> On Mon, 9 Sep 2013, mactro wrote:
>
>> Hi,
>>
>> I'm developing a mod for Scratch that will allow controlling an
>> educational
>> robot via Bluetooth. I'm using SerialPort2 class that is included in
>> Scratch
>> plugin and allows opening ports by name. Everything works fine BUT, when I
>> send commands in a loop, and the connection is lost (i.e. the robot was
>> powered off), the VM freezes. I tried forking the port nextPutAll like
>> that:
>>
>> timer := Delay forMilliseconds: 1000.
>> port := SerialPort2  new.
>> port openPortNamed:'COM14' baud:57600.
>> process := [port nextPutAll:'test'. Transcript show:'port'.] forkAt: 1.
>> [timer wait. Transcript show:'delay'. process terminate.] forkAt: 7.
>>
>> but with no result. Is there any way to write to a serial port with
>> timeout?
>
>
> I can't help you with the SerialPort issue, but the process priorities 1 and
> 7 are definitely bad. Since the idle process uses priority 10, your
> processes will never run. Try using something between 11 and 39, or use the
> named priorities:
> Processor userBackgroundPriority
> Processor systemBackgroundPriority
>
>
> Levente
>
>
>>
>> mactro
>>
>>
>>
>> --
>> View this message in context:
>> http://forum.world.st/Serial-port-write-freezes-the-VM-tp4707333.html
>> Sent from the Squeak - Beginners mailing list archive at Nabble.com.
>> _______________________________________________
>> Beginners mailing list
>> [hidden email]
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
> _______________________________________________
> Beginners mailing list
> [hidden email]
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners