Some consideration:

        in any case the SerialPort after the first open    don't close right  
the connection.

        ( and raise the problem as in my last email. )

        From other program i can't  manage the RS232 device   until i close the 
Pharo image,

        even if all SerialPort instances are close.

        Thanks,
                
                Dario

> Ciao,
> 
>> Try adding (Smalltalk garbageCollect) after the #close.
> 
> I add it, but  after the        SerialPort allInstances  return an array with 
>  aSerialPort.
> 
> Strange it's close.
> 
> 
> I found  what "generate" the problem it's in the       openPort:       method.
> 
> ----------------------------------------------------------------  
> openPort: portId 
>       "Open the given serial port, using the settings specified by my
>       instance variables."
> 
>               | result |      
> 
>       self close.
>       
>       "8-10 - wks - this has to tell us if it fails: step 1, save the 
> primitive result"
>       result := portId isString
>               ifTrue: [self
>                               primOpenPortByName: portId
>                               baudRate: baudRate
>                               stopBitsType: stopBitsType
>                               parityType: parityType
>                               dataBits: dataBits
>                               inFlowControlType: inputFlowControlType
>                               outFlowControlType: outputFlowControlType
>                               xOnByte: xOnByte
>                               xOffByte: xOffByte]
>               ifFalse: [self
>                               primOpenPort: portId
>                               baudRate: baudRate
>                               stopBitsType: stopBitsType
>                               parityType: parityType
>                               dataBits: dataBits
>                               inFlowControlType: inputFlowControlType
>                               outFlowControlType: outputFlowControlType
>                               xOnByte: xOnByte
>                               xOffByte: xOffByte].
> 
>       "wks - raise an error if there was a failure."
>       result isNil ifTrue:[ self error:'Cannot open ', portId printString. ].
> 
>       port := portId
> 
> _------------------------------------------------
> 
> The           result          isNotNil     the thirst   time i call the    
> openPort:          it's  set at            aSerialPort
> 
>                                               isNil           the last time i 
> call the        openPort                        
> 
> But   if i remove the test :          result isNil ifTrue:[ self 
> error:'Cannot open ', portId printString. ].
> 
>       all works fine the first and the following  call.
> 
> There is something wrong in the primitive call answer.
> 
> Anyone is expert in this ?
> 
> 
> Thanks,
> 
>               Dario
> 
>> 
>> Now a question of my own for the list.  Why does it seem common to do three 
>> #garbageCollects in a row.
>> 
>> cheers -ben
>> 
>> 
>> Sven Van Caekenberghe wrote:
>>> 
>>> Dario,
>>> 
>>> On 17 Feb 2014, at 12:55, Dario Trussardi <dario.trussa...@tiscali.it> 
>>> wrote:
>>> 
>>>   
>>>> Thanks Sven,
>>>> 
>>>>     
>>>>> You should #close the port when you are done, else it remains in use, I 
>>>>> would guess.
>>>>>       
>>>> Of course,  i used :
>>>> 
>>>> 
>>>>    | srl | 
>>>>    srl := SerialPort new.
>>>>    srl openPort: 'COM1'.
>>>> 
>>>>    srl nextPutAll: #[ 27 66 2 2 ] .
>>>>                    
>>>>    srl close.
>>>> 
>>>> But after the first time, when submit the same code the system answer:
>>>> 
>>>>            Error: Cannot open 'COM1'
>>>> 
>>>> I don't unterstand because.
>>>>     
>>> 
>>> Me neither. I have no experience working with serial ports (but I know some 
>>> people on the list do), let alone on Windows, but from looking at the code 
>>> #close should be enough.
>>> 
>>>   
>>>> I note what the sometimes  SerialPort allInstances           answer 
>>>> instance  after   the  close method.
>>>> 
>>>> Perhaps remain occupied some resources?
>>>>     
>>> 
>>> They are still there because they are not yet garbage collected. If they 
>>> are properly closed (check the printString in the inspector), the external 
>>> resource should have been released.
>>> 
>>> Sorry, but I can't help you any further.
>>> 
>>> Sven
>>> 
>>>   
>>>> Ciao,
>>>> 
>>>>    Dario
>>>> 
>>>>     
>>>>> Also, why do you #close before you start, seems strange to me ?
>>>>> 
>>>>> On 17 Feb 2014, at 12:05, Dario Trussardi <dario.trussa...@tiscali.it> 
>>>>> wrote:
>>>>> 
>>>>>       
>>>>>> Ciao,
>>>>>> 
>>>>>> 
>>>>>>         
>>>>>>> Hi,
>>>>>>> 
>>>>>>> I'm also interested by an answer to that question. So far, what I have 
>>>>>>> as status is: you need a plugin to handle communications with the 
>>>>>>> serial port (either for direct RS232 or USB-to-Serial) and compiling 
>>>>>>> the serial port plugin with the Pharo VM makes it unstable.
>>>>>>>           
>>>>>> I dont know " compiling " plugin  area.   ( i work with Windows 7 )
>>>>>> 
>>>>>>         
>>>>>>> The solution we used was: to compile the serial plugin for the squeak 
>>>>>>> VM and work in Squeak (4.3) instead of Pharo.
>>>>>>>           
>>>>>>  Can you explain more detail about it?
>>>>>> 
>>>>>> 
>>>>>>  My test is :
>>>>>> 
>>>>>> 
>>>>>>  I download the   Pharo 2.0 #20628               and i    use the 
>>>>>> SerialPort      class.
>>>>>> 
>>>>>>  The first time i   do the code:
>>>>>> 
>>>>>>                  | srl |
>>>>>>  
>>>>>>                  srl := SerialPort new.
>>>>>>                  srl close.
>>>>>> 
>>>>>>                  srl openPort: 'COM1'.
>>>>>> 
>>>>>>                  srl nextPutAll: #[ 27 66 2 2 ] .
>>>>>> 
>>>>>>  The RS232 device work fine.
>>>>>> 
>>>>>>  After the first time, when submit the same code the system answer:
>>>>>> 
>>>>>>          Error: Cannot open 'COM1'
>>>>>> 
>>>>>>  A this time i need to restart the Pharo environment.
>>>>>> 
>>>>>> 
>>>>>>  Any considerations,  suggestions ?
>>>>>> 
>>>>>> 
>>>>>>  Thanks,
>>>>>> 
>>>>>>          Dario
>>>>>>  
>>>>>> 
>>>>>>         
>>>>>>> Thierry
>>>>>>> 
>>>>>>> Le 16/02/2014 16:28, Dario Trussardi a écrit :
>>>>>>>           
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> 
>>>>>>>>        i work with:            Pharo1.Latest update: #14445            
>>>>>>>> ( or   with:    Pharo2.0 Latest update: #20628 ).
>>>>>>>> 
>>>>>>>> 
>>>>>>>>        I'm interested to manage communications with  USB        or     
>>>>>>>> RS232    device.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>        I can find package  which support this protocol?
>>>>>>>> 
>>>>>>>>        Thank for any considerations ?
>>>>>>>> 
>>>>>>>>                Dario
>>>>>>>> 
>>>>>>>> 
>>>>>>>>        
>>>>>>>> 
>>>>>>>> 
>>>>>>>>             
>>>>>>> -- 
>>>>>>> Thierry Goubier
>>>>>>> CEA list
>>>>>>> Laboratoire des Fondations des Systèmes Temps Réel Embarqués
>>>>>>> 91191 Gif sur Yvette Cedex
>>>>>>> France
>>>>>>> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
>>>>>>> 
>>>>>>>           
>>>>>>         
>>>>>       
>>>>     
>>> 
>>> 
>>> 
>>>   
>> 
> 

Reply via email to