SerialPort.st
author Claus Gittinger <cg@exept.de>
Tue, 10 Feb 2015 21:47:36 +0100
changeset 3483 014fa9bca2da
parent 3220 6aed06c3fdf8
child 3621 e4099b3a18fd
permissions -rw-r--r--
class: SerialPort added: #initialize
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	      All Rights Reserved
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic2' }"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
3483
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
    14
"{ NameSpace: Smalltalk }"
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
    15
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
NonPositionableExternalStream subclass:#SerialPort
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
    17
	instanceVariableNames:'portName baudRate stopBitsType parityType dataBits inFlowCtrlType
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
    18
		outFlowCtrlType xOnChar xOffChar'
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	classVariableNames:'DefaultPortName'
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	poolDictionaries:''
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	category:'Streams-External'
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!SerialPort primitiveDefinitions!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
%{
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
#include "stxOSDefs.h"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
#ifdef WIN32
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
2818
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    31
/* this is to catch uses of those - there should be none */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
# undef __BEGIN_INTERRUPTABLE__
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
# undef __END_INTERRUPTABLE__
2818
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    34
# ifdef __TCC__
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    35
#  define __BEGIN_INTERRUPTABLE__ xxxx
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    36
#  define __END_INTERRUPTABLE__ yyyy
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    37
# else
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    38
#  define __BEGIN_INTERRUPTABLE__ ..
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    39
#  define __END_INTERRUPTABLE__ ..
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    40
# endif
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
# define WRAP_STDIO
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
# define PORT_FROM_FD(fd)     (_get_osfhandle(fd))
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
# define closePort(port)      closeHandle(port)
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
# define SERIALPORT           HANDLE
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
#else /* not WIN32 */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
# define PORT_FROM_FD(fd)     (fd)
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
# define closePort(port)      close(port)
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
# define SERIALPORT           int
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
#endif /* WIN32 */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
# define PORT_FROM_FILE(f)             (PORT_FROM_FD(fileno(f)))
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
# define PORT_FROM_FILE_OBJECT(f)      (PORT_FROM_FILE(__FILEVal(f)))
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
#include <stdio.h>
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
#include <errno.h>
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
/*
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
 * on some systems errno is a macro ... check for it here
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
 */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
#ifndef errno
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
 extern errno;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
#ifdef USE_H_ERRNO
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
# ifndef h_errno
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
 extern h_errno;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
# endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
#ifdef DEBUG
1839
c10cd58ec334 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1599
diff changeset
    76
# define DBGPRINTF(x)    { if (__debugging__) console_printf x; }
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
#else
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
# define DBGPRINTF(x)    /* as nothing */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
#ifndef TRUE
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
# define TRUE   1
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
#ifndef FALSE
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
# define FALSE  0
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
#ifndef WIN32
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
typedef int BOOL;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
%}
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
!SerialPort primitiveVariables!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
%{
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
static int __debugging__ = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
%}
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!SerialPort class methodsFor:'documentation'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
copyright
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
 COPYRIGHT (c) 2006 by eXept Software AG
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
	      All Rights Reserved
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
 This software is furnished under a license and may be used
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
 only in accordance with the terms of that license and with the
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
 inclusion of the above copyright notice.   This software may not
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
 be provided or otherwise made available to, or used by, any
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
 other person.  No title to or ownership of the software is
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
 hereby transferred.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
documentation
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
"
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   119
    This class provides access to serial ports.
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   120
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   121
    Arguments/Parameters/Instvars:
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   122
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   123
	portName                String                  device name
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   124
							    WIN32:  COM0, COM1, ...
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   125
							    Unix:   /dev/cua0, ...
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   126
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   127
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   128
	baudRate                Integer                 9600, 19200, ...
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   129
	stopBitsType            Symbol                  #stop1, #stop1_5 or #stop2
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   130
	parityType              Symbol                  #odd, #even or #none
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   131
	dataBits                Integer                 5, 6, 7, 8
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   132
	inFlowCtrlType          Symbol                  #xOnOff, #hardware or #none
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   133
	outFlowCtrlType         Symbol                  #xOnOff, #hardware or #none
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   134
	xOnChar                 Integer | Character
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   135
	xOffChar'               Integer | Character
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
examples
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    example (get help info from an nntp server):
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   142
									[exBegin]
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   143
    |serialPort|
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   144
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   145
    serialPort := SerialPort new setPortName:(SerialPort defaultPortName).
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   146
    serialPort open.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   147
    serialPort close.
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   148
									[exEnd]
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   149
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   150
									[exBegin]
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   151
    |serialPort|
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   152
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   153
    serialPort := SerialPort new setPortName:'COM5'.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   154
    serialPort open.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   155
    serialPort nextPutAll:'hello world'.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   156
    serialPort cr.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   157
    serialPort close.
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   158
									[exEnd]
1597
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   159
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   160
									[exBegin]
1597
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   161
    |serialPort|
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   162
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   163
    serialPort := SerialPort new setPortName:'COM5'.
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   164
    serialPort open.
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   165
    Transcript showCR:(serialPort nextAvailable:100).
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   166
    serialPort close.
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   167
									[exEnd]
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   171
!SerialPort class methodsFor:'instance creation'!
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
portName:portName
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
   baudRate:baudRateOrNil stopBitsType:stopBitsTypeOrNil
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
   parityType:parityTypeOrNil dataBits:dataBitsOrNil
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
   inFlowCtrlType:inFlowCtrlTypeOrNil outFlowCtrlType:outFlowCtrlTypeOrNil
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
   xOnChar:xOnCharOrNil xOffChar:xOffCharOrNil
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    "arguments are self describing; nil values mean: leave setting as is"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   181
    ^ self new
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
	setPortName:portName
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
	baudRate:baudRateOrNil stopBitsType:stopBitsTypeOrNil
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
	parityType:parityTypeOrNil dataBits:dataBitsOrNil
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
	inFlowCtrlType:inFlowCtrlTypeOrNil outFlowCtrlType:outFlowCtrlTypeOrNil
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   186
	xOnChar:xOnCharOrNil xOffChar:xOffCharOrNil
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
!SerialPort class methodsFor:'debugging'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
debug:aBoolean
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    "turn on/off internal debugprints.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
     This method is for ST/X debugging only and
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
     may  be removed in later versions"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
%{  /* NOCONTEXT */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    __debugging__ = (aBoolean == true);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
%}
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    "
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
     SerialPort debug:true
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
     SerialPort debug:false
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    "
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   206
!SerialPort class methodsFor:'defaults'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   207
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   208
defaultPortName
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   209
    DefaultPortName notNil ifTrue:[^ DefaultPortName ].
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   210
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   211
    OperatingSystem isMSDOSlike ifTrue:[
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   212
        ^ 'COM0'
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   213
    ].
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   214
    ^ '/dev/ttyS0'
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   215
! !
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   216
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
!SerialPort methodsFor:'accessing'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   219
pathName
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   220
    "answer the port name - compatibilty with FileStream"
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   221
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   222
    ^ portName
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   223
!
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   224
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   225
setBaudRate:baudRateOrNil
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   226
    baudRate := baudRateOrNil.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   227
!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   228
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   229
setDataBits:dataBitsOrNil
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   230
    dataBits := dataBitsOrNil.
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   231
!
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   232
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   233
setParityType:parityTypeOrNil
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   234
    parityType := parityTypeOrNil.
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   235
!
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   236
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   237
setPortName:portNameArg
2020
f47ac2710db3 Change port name COM* to \\.\COM* to support com ports > 9
ab
parents: 1903
diff changeset
   238
    (portNameArg startsWith:'C') ifTrue:[
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   239
	"/ add special port name to support COM ports > 9
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   240
	portName := '\\.\', portNameArg.
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   241
	^ self
2020
f47ac2710db3 Change port name COM* to \\.\COM* to support com ports > 9
ab
parents: 1903
diff changeset
   242
    ].
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   243
    portName := portNameArg.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   244
!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   245
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
setPortName:portNameArg
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   247
	baudRate:baudRateOrNil stopBitsType:stopBitsTypeOrNil
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   248
	parityType:parityTypeOrNil dataBits:dataBitsOrNil
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   249
	inFlowCtrlType:inFlowCtrlTypeOrNil outFlowCtrlType:outFlowCtrlTypeOrNil
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   250
	xOnChar:xOnCharOrNil xOffChar:xOffCharOrNil
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
2020
f47ac2710db3 Change port name COM* to \\.\COM* to support com ports > 9
ab
parents: 1903
diff changeset
   252
    self setPortName:portNameArg.
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
    baudRate := baudRateOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
    stopBitsType := stopBitsTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    parityType := parityTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    dataBits := dataBitsOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    inFlowCtrlType := inFlowCtrlTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
    outFlowCtrlType := outFlowCtrlTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    xOnChar := xOnCharOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    xOffChar := xOffCharOrNil.
1846
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   261
!
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   262
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   263
setStopBitsType:stopBitsTypeOrNil
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   264
    stopBitsType := stopBitsTypeOrNil.
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
3483
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   267
!SerialPort methodsFor:'initialization'!
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   268
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   269
initialize
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   270
    super initialize.
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   271
    "/ transparent
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   272
    eolMode := nil.
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   273
! !
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   274
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   275
!SerialPort methodsFor:'low level'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   276
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   277
baudRate:newRate
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   278
    handle isNil ifTrue:[
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   279
	"not open"
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   280
	baudRate := newRate.
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   281
	^ self
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   282
    ].
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   283
%{
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   284
    OBJ fp;
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   285
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   286
    fp = __INST(handle);
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   287
    if (__isSmallInteger(newRate)) {
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   288
	SERIALPORT port;
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   289
	int ret;
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   290
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   291
	port = PORT_FROM_FILE_OBJECT(fp);
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   292
#ifdef WIN32
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   293
	{
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   294
	    DCB dcb;
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   295
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   296
	    ZeroMemory(&dcb, sizeof(dcb));
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   297
	    dcb.DCBlength = sizeof(dcb);
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   298
	    GetCommState(port, &dcb);
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   299
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   300
	    dcb.BaudRate = __intVal(newRate);
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   301
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   302
	    if (! SetCommState(port, &dcb)) {
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   303
		RETURN(false);
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   304
	    }
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   305
	    __INST(baudRate) = newRate;
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   306
	    RETURN(true);
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   307
	}
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   308
# else /* ! WIN32 */
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   309
	/* add code for unix ioctl here ... */
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   310
# endif /* WIN32 */
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   311
    }
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   312
%}.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   313
    self primitiveFailed.
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   314
! !
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   315
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   316
!SerialPort protectedMethodsFor:'low level'!
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
closeFile
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    "low level close"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
%{
3219
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   322
    OBJ t = __INST(handle);
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    if (t != nil) {
3219
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   324
        FILE *fp = __FILEVal(t);
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
3219
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   326
        __INST(handle) = nil;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
3219
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   328
#if defined(WIN32) && defined(xxxDO_WRAP_CALLS)
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   329
        {
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   330
            int ret;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
3219
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   332
            do {
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   333
                __threadErrno = 0;
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   334
                ret = STX_C_CALL1("fclose", fclose, fp);
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   335
            } while ((ret < 0) && (__threadErrno == EINTR));
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   336
        }
2818
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
   337
#else
3219
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   338
        fclose(fp);
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   339
#endif
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
%}
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   342
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   343
    "Modified: / 05-08-2011 / 14:13:35 / cg"
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
!SerialPort methodsFor:'opening'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
open
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   349
    |errorSymbol errorNumber|
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   351
    handle notNil ifTrue:[
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   352
        ^ self errorAlreadyOpen
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
    ].
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
%{
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    FILE *fp;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
    SERIALPORT port;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
    char *__portName;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
    int __setBaudRate = 1,
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   359
        __setDataBits = 1,
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   360
        __setXOnChar = 1,
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   361
        __setXOffChar = 1,
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   362
        __setInFlowCtrl = 1,
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   363
        __setOutFlowCtrl = 1,
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   364
        __setStopBits = 1,
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   365
        __setParityType = 1;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
    int __baudRate, __dataBits;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    int __xOnChar, __xOffChar;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
    int __inFlowCtrl, __outFlowCtrl;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
    int __stopBits, __parityType;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
#ifdef WIN32
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
    COMMTIMEOUTS timeouts;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
    DCB dcb;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
#endif /* WIN32 */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
2820
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   375
#   define FLG_FLOW_XONOFF    1
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   376
#   define FLG_FLOW_HARDWARE  2
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   377
#   define FLG_FLOW_NONE      3
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   378
#   define FLG_STOP_1         1
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   379
#   define FLG_STOP_2         2
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   380
#   define FLG_STOP_1_5       3
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   381
#   define FLG_PARITY_ODD     1
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   382
#   define FLG_PARITY_EVEN    2
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   383
#   define FLG_PARITY_NONE    3
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
2751
d62cad0013dd changed: #open
Stefan Vogel <sv@exept.de>
parents: 2692
diff changeset
   385
    if (__isStringLike(__INST(portName))) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   386
        __portName = __stringVal(__INST(portName));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   388
        errorSymbol = @symbol(portName);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   389
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
    if (__isSmallInteger(__INST(baudRate))) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   393
        __baudRate = __intVal(__INST(baudRate));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    } else if (__INST(baudRate) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   395
        __setBaudRate = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   397
        errorSymbol = @symbol(baudRate);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   398
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
    if (__isSmallInteger(__INST(dataBits))) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   402
        __dataBits = __intVal(__INST(dataBits));
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   403
    } else if (__INST(dataBits) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   404
        __setDataBits = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   406
        errorSymbol = @symbol(dataBits);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   407
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
    if (__isSmallInteger(__INST(xOnChar))) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   411
        __xOnChar = __intVal(__INST(xOnChar));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
    } else if (__isCharacter(__INST(xOnChar))) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   413
        __xOnChar = __intVal(__characterVal(__INST(xOnChar)));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
    } else if (__INST(xOnChar) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   415
        __setXOnChar = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   417
        errorSymbol = @symbol(xOnChar);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   418
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
    if (__isSmallInteger(__INST(xOffChar))) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   422
        __xOffChar = __intVal(__INST(xOffChar));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
    } else if (__isCharacter(__INST(xOffChar))) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   424
        __xOffChar = __intVal(__characterVal(__INST(xOffChar)));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
    } else if (__INST(xOffChar) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   426
        __setXOffChar = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   428
        errorSymbol = @symbol(xOffChar);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   429
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
    if (__INST(inFlowCtrlType) == @symbol(xOnOff)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   433
        __inFlowCtrl = FLG_FLOW_XONOFF;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
    } else if (__INST(inFlowCtrlType) == @symbol(hardware)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   435
        __inFlowCtrl = FLG_FLOW_HARDWARE;
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   436
    } else if (__INST(inFlowCtrlType) == @symbol(none)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   437
        __inFlowCtrl = FLG_FLOW_NONE;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
    } else if (__INST(inFlowCtrlType) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   439
        __setInFlowCtrl = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   441
        errorSymbol = @symbol(inFlowCtrlType);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   442
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
    if (__INST(outFlowCtrlType) == @symbol(xOnOff)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   446
        __outFlowCtrl = FLG_FLOW_XONOFF;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
    } else if (__INST(outFlowCtrlType) == @symbol(hardware)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   448
        __outFlowCtrl = FLG_FLOW_HARDWARE;
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   449
    } else if (__INST(outFlowCtrlType) == @symbol(none)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   450
        __outFlowCtrl = FLG_FLOW_NONE;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
    } else if (__INST(outFlowCtrlType) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   452
        __setOutFlowCtrl = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   454
        errorSymbol = @symbol(outFlowCtrlType);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   455
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    if (__INST(stopBitsType) == @symbol(stop1)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   459
        __stopBits = FLG_STOP_1;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
    } else if (__INST(stopBitsType) == @symbol(stop2)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   461
        __stopBits = FLG_STOP_2;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
    } else if (__INST(stopBitsType) == @symbol(stop1_5)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   463
        __stopBits = FLG_STOP_1_5;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
    } else if (__INST(stopBitsType) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   465
        __setStopBits = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   467
        errorSymbol = @symbol(stopBitsType);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   468
        goto getOutOfhere;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   469
    }
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   470
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   471
    if (__INST(parityType) == @symbol(odd)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   472
        __parityType = FLG_PARITY_ODD;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   473
    } else if (__INST(parityType) == @symbol(even)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   474
        __parityType = FLG_PARITY_EVEN;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   475
    } else if (__INST(parityType) == @symbol(none)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   476
        __parityType = FLG_PARITY_NONE;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   477
    } else if (__INST(parityType) == nil) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   478
        __setParityType = 0;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   479
    } else {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   480
        errorSymbol = @symbol(parityType);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   481
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
#ifdef WIN32
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
    port = CreateFile(__portName,
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   486
              GENERIC_READ | GENERIC_WRITE,
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   487
              0,             /* comm devices must be opened with exclusive access */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   488
              NULL,          /* no security attrs */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   489
              OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   490
              0,             /* no overlapped I/O */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   491
              NULL           /* hTemplate must be NULL for comm devices */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   492
           );
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    if (port == INVALID_HANDLE_VALUE) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   495
        console_fprintf(stderr, "Win32OS [info]: serial port open failed\n");
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   496
        errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   497
        errorSymbol = @symbol(openFailed);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   498
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
    /* Flush the driver */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
    PurgeComm( port, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
    /* Set driver buffer sizes */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
    SetupComm( port, 4096 /*SERIAL_IN_QUEUE_SIZE*/, 4096 /*SERIAL_OUT_QUEUE_SIZE*/);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
    /* Reset timeout constants */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
    timeouts.ReadIntervalTimeout= 0xFFFFFFFF;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
    timeouts.ReadTotalTimeoutMultiplier = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
    timeouts.ReadTotalTimeoutConstant = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
    timeouts.WriteTotalTimeoutMultiplier = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
    timeouts.WriteTotalTimeoutConstant = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
    SetCommTimeouts( port, &timeouts );
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
    /* Set communication parameters */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
    ZeroMemory(&dcb, sizeof(dcb));
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
    dcb.DCBlength = sizeof(dcb);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
    GetCommState(port, &dcb);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
    if (__setBaudRate) dcb.BaudRate = __baudRate;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
    if (__setDataBits) dcb.ByteSize = __dataBits;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
    if (__setXOnChar)  dcb.XonChar = __xOnChar;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
    if (__setXOffChar) dcb.XoffChar = __xOffChar;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
    if (__setStopBits) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   526
        /* set stop bits */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   527
        switch(__stopBits) {
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   528
            case FLG_STOP_1_5: dcb.StopBits = 1; break; /* 1.5 stop bits */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   529
            case FLG_STOP_1: dcb.StopBits = 0; break; /* 1 stop bit */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   530
            case FLG_STOP_2: dcb.StopBits = 2; break; /* 2 stop bits */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   531
            default:
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   532
                errorSymbol = @symbol(stopBits);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   533
                goto errExit;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   534
        }
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
    if (__setParityType) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   538
        /* set parity */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   539
        switch(__parityType) {
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   540
            case FLG_PARITY_NONE: dcb.Parity = NOPARITY; break;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   541
            case FLG_PARITY_ODD: dcb.Parity = ODDPARITY; break;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   542
            case FLG_PARITY_EVEN: dcb.Parity = EVENPARITY; break;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   543
            default:
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   544
                errorSymbol = @symbol(parityType);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   545
                goto errExit;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   546
        }
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
    if (__setInFlowCtrl) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   550
        /* set control flow */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   551
        dcb.fInX = FALSE;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   552
        dcb.fDtrControl = FALSE;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   553
        if (__inFlowCtrl == FLG_FLOW_XONOFF) dcb.fInX = TRUE;  /* XOn/XOff handshaking */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   554
        if (__inFlowCtrl == FLG_FLOW_HARDWARE) dcb.fDtrControl = TRUE;  /* hardware handshaking */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   555
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   556
    if (__setOutFlowCtrl) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   557
        dcb.fOutX = FALSE;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   558
        dcb.fOutxCtsFlow = FALSE;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   560
        if (__outFlowCtrl == FLG_FLOW_XONOFF) dcb.fOutX = TRUE;  /* XOn/XOff handshaking */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   561
        if (__outFlowCtrl == FLG_FLOW_HARDWARE) dcb.fOutxCtsFlow = TRUE;  /* hardware handshaking */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   563
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
    if (! SetCommState(port, &dcb)) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   565
        console_fprintf(stderr, "Win32OS [info]: serial port comm-setup failed\n");
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   566
        errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   567
        goto errExit;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   569
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   570
    /*
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   571
     * make it a FILE *
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   572
     */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   573
    {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   574
        int _fd;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   575
        __stxWrapApiEnterCritical();
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   576
        _fd = _open_osfhandle((long)port, 0);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   577
        fp = fdopen(_fd, "r+");
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   578
        __stxWrapApiLeaveCritical();
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
    }
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   580
# else /* ! WIN32 */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   581
    fp = fopen(__portName, "r+");
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   582
    /* add code for unix ioctl here ... */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   583
# endif /* !WIN32 */
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   584
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
    if (! fp) {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   586
        console_fprintf(stderr, "SerialPort [info]: fdopen failed\n");
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   587
        errorNumber = __MKSMALLINT(errno);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   588
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   589
    errExit: ;
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   590
# ifdef WIN32
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   591
        CloseHandle(port);
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   592
# endif
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   593
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
    {
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   597
        OBJ t = __MKEXTERNALADDRESS(fp);
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   598
        __INST(handle) = t;
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   599
        __STORE(self, t);
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   600
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   602
getOutOfhere: ;
2820
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   603
#   undef FLG_FLOW_XONOFF
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   604
#   undef FLG_FLOW_HARDWARE
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   605
#   undef FLG_FLOW_NONE
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   606
#   undef FLG_STOP_1
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   607
#   undef FLG_STOP_2
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   608
#   undef FLG_STOP_1_5
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   609
#   undef FLG_PARITY_ODD
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   610
#   undef FLG_PARITY_EVEN
45ee5437c35b flag names changed; they conflict with a header file under some win32 compilers (lcc)
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
   611
#   undef FLG_PARITY_NONE
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
%}.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   614
    "all ok?"
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   615
    handle notNil ifTrue:[
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   616
        handleType := #filePointer.
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   617
        Lobby register:self.
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   618
    ] ifFalse:[
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   619
        self openError:(errorNumber ? 'invalid argument(s)').
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   620
    ].
1846
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   621
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   622
    "Modified: / 05-08-2011 / 14:14:08 / cg"
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   623
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   624
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   625
!SerialPort methodsFor:'printing & storing'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   626
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   627
printOn:aStream
1903
d62268dffe6b changed #printOn: print port name (COMx)
Stefan Vogel <sv@exept.de>
parents: 1846
diff changeset
   628
    aStream nextPutAll:'SerialPort('.
d62268dffe6b changed #printOn: print port name (COMx)
Stefan Vogel <sv@exept.de>
parents: 1846
diff changeset
   629
    portName printOn:aStream.
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   630
    baudRate notNil ifTrue:[
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   631
        aStream nextPut:$/.
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   632
        baudRate printOn:aStream.
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   633
    ].
1903
d62268dffe6b changed #printOn: print port name (COMx)
Stefan Vogel <sv@exept.de>
parents: 1846
diff changeset
   634
    aStream nextPut:$).
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   635
! !
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   636
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   637
!SerialPort methodsFor:'queries'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   638
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   639
getName
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   640
    "return the name; here, we return the devices name"
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   641
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   642
    ^ portName
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   643
! !
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   644
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   645
!SerialPort class methodsFor:'documentation'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   646
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   647
version
3483
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   648
    ^ '$Header: /cvs/stx/stx/libbasic2/SerialPort.st,v 1.26 2015-02-10 20:47:36 cg Exp $'
2419
8ea9b41e7b4b Use __MKEXTERNALADDRESS() instead of __MKOBJ()
Stefan Vogel <sv@exept.de>
parents: 2321
diff changeset
   649
!
8ea9b41e7b4b Use __MKEXTERNALADDRESS() instead of __MKOBJ()
Stefan Vogel <sv@exept.de>
parents: 2321
diff changeset
   650
8ea9b41e7b4b Use __MKEXTERNALADDRESS() instead of __MKOBJ()
Stefan Vogel <sv@exept.de>
parents: 2321
diff changeset
   651
version_CVS
3483
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   652
    ^ '$Header: /cvs/stx/stx/libbasic2/SerialPort.st,v 1.26 2015-02-10 20:47:36 cg Exp $'
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
! !
3153
eff2380e918e Initialize in instance initialize method insted in #new
Stefan Vogel <sv@exept.de>
parents: 2998
diff changeset
   654