--- a/SerialPort.st Thu Feb 02 18:20:17 2006 +0100
+++ b/SerialPort.st Thu Feb 02 18:29:11 2006 +0100
@@ -111,22 +111,38 @@
documentation
"
- This class provides access to serial ports
+ This class provides access to serial ports.
+
+ Arguments/Parameters/Instvars:
+
+ portName String device name
+ WIN32: COM0, COM1, ...
+ Unix: /dev/cua0, ...
+
+
+ baudRate Integer 9600, 19200, ...
+ stopBitsType Symbol #stop1, #stop1_5 or #stop2
+ parityType Symbol #odd, #even or #none
+ dataBits Integer 5, 6, 7, 8
+ inFlowCtrlType Symbol #xOnOff or #hardware
+ outFlowCtrlType Symbol #xOnOff or #hardware
+ xOnChar Integer | Character
+ xOffChar' Integer | Character
"
!
examples
"
example (get help info from an nntp server):
- [exBegin]
+ [exBegin]
|serialPort|
serialPort := SerialPort new setPortName:(SerialPort defaultPortName).
serialPort open.
serialPort close.
- [exEnd]
+ [exEnd]
- [exBegin]
+ [exBegin]
|serialPort|
serialPort := SerialPort new setPortName:'COM5'.
@@ -134,16 +150,16 @@
serialPort nextPutAll:'hello world'.
serialPort cr.
serialPort close.
- [exEnd]
+ [exEnd]
- [exBegin]
+ [exBegin]
|serialPort|
serialPort := SerialPort new setPortName:'COM5'.
serialPort open.
Transcript showCR:(serialPort nextAvailable:100).
serialPort close.
- [exEnd]
+ [exEnd]
"
! !
@@ -205,10 +221,22 @@
baudRate := baudRateOrNil.
!
+setDataBits:dataBitsOrNil
+ dataBits := dataBitsOrNil.
+!
+
+setParityType:parityTypeOrNil
+ parityType := parityTypeOrNil.
+!
+
setPortName:portNameArg
portName := portNameArg.
!
+setStopBitsType:stopBitsTypeOrNil
+ stopBitsType := stopBitsTypeOrNil.
+!
+
setPortName:portNameArg
baudRate:baudRateOrNil stopBitsType:stopBitsTypeOrNil
parityType:parityTypeOrNil dataBits:dataBitsOrNil
@@ -229,11 +257,16 @@
!SerialPort methodsFor:'low level'!
baudRate:newRate
+ filePointer isNil ifTrue:[
+ "not open"
+ baudRate := newRate.
+ ^ self
+ ].
%{
OBJ fp;
fp = __INST(filePointer);
- if ((fp != nil) && __isSmallInteger(newRate)) {
+ if (__isSmallInteger(newRate)) {
SERIALPORT port;
int ret;
@@ -251,6 +284,7 @@
if (! SetCommState(port, &dcb)) {
RETURN(false);
}
+ __INST(baudRate) = newRate;
RETURN(true);
}
# else /* ! WIN32 */
@@ -595,5 +629,5 @@
!SerialPort class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic2/SerialPort.st,v 1.4 2006-02-02 17:20:17 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic2/SerialPort.st,v 1.5 2006-02-02 17:29:11 cg Exp $'
! !