SerialPort.st
changeset 1598 96e2b32185a9
parent 1597 82fcfa2fc223
child 1599 7c2c8f7233bd
--- 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 $'
 ! !