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 |
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. The solution we used was: to compile the serial plugin for the squeak VM and work in Squeak (4.3) instead of Pharo. 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 |
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 > |
You should #close the port when you are done, else it remains in use, I would guess.
Also, why do you #close before you start, seems strange to me ? On 17 Feb 2014, at 12:05, Dario Trussardi <[hidden email]> 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 >> > > |
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. I note what the sometimes SerialPort allInstances answer instance after the close method. Perhaps remain occupied some resources? Ciao, Dario > Also, why do you #close before you start, seems strange to me ? > > On 17 Feb 2014, at 12:05, Dario Trussardi <[hidden email]> 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 >>> >> >> > > |
Dario,
On 17 Feb 2014, at 12:55, Dario Trussardi <[hidden email]> 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 <[hidden email]> 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 >>>> >>> >>> >> >> > > |
Try adding (Smalltalk garbageCollect) after the #close.
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 [hidden email] 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. SvenCiao, DarioAlso, why do you #close before you start, seems strange to me ? On 17 Feb 2014, at 12:05, Dario Trussardi [hidden email] 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, DarioThierry 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 |
Ciao,
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
|
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
|
Free forum by Nabble | Edit this page |