SerialPort.st
author Claus Gittinger <cg@exept.de>
Sat, 02 May 2020 21:40:13 +0200
changeset 5476 7355a4b11cb6
parent 5446 f802bbaa5b0a
permissions -rw-r--r--
#FEATURE by cg class: Socket class added: #newTCPclientToHost:port:domain:domainOrder:withTimeout: changed: #newTCPclientToHost:port:domain:withTimeout:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5446
f802bbaa5b0a #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4058
diff changeset
     1
"{ Encoding: utf8 }"
f802bbaa5b0a #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4058
diff changeset
     2
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2006 by eXept Software AG
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	      All Rights Reserved
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 hereby transferred.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic2' }"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
3483
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
    16
"{ NameSpace: Smalltalk }"
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
    17
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
NonPositionableExternalStream subclass:#SerialPort
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
    19
	instanceVariableNames:'portName baudRate stopBitsType parityType dataBits inFlowCtrlType
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
    20
		outFlowCtrlType xOnChar xOffChar'
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	classVariableNames:'DefaultPortName'
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	poolDictionaries:''
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	category:'Streams-External'
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
!
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
!SerialPort primitiveDefinitions!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
%{
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
#include "stxOSDefs.h"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
    31
#ifdef __win32__
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
2818
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    33
/* this is to catch uses of those - there should be none */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
# undef __BEGIN_INTERRUPTABLE__
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
# undef __END_INTERRUPTABLE__
2818
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    36
# ifdef __TCC__
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    37
#  define __BEGIN_INTERRUPTABLE__ xxxx
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    38
#  define __END_INTERRUPTABLE__ yyyy
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    39
# else
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    40
#  define __BEGIN_INTERRUPTABLE__ ..
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    41
#  define __END_INTERRUPTABLE__ ..
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
    42
# endif
1593
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 WRAP_STDIO
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
# define PORT_FROM_FD(fd)     (_get_osfhandle(fd))
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
# define closePort(port)      closeHandle(port)
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
# define SERIALPORT           HANDLE
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
    50
#else /* not __win32__ */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
# define PORT_FROM_FD(fd)     (fd)
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
# define closePort(port)      close(port)
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
# define SERIALPORT           int
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
    56
#endif /* __win32__ */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
# define PORT_FROM_FILE(f)             (PORT_FROM_FD(fileno(f)))
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
# define PORT_FROM_FILE_OBJECT(f)      (PORT_FROM_FILE(__FILEVal(f)))
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
#include <stdio.h>
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
#include <errno.h>
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
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
 * on some systems errno is a macro ... check for it here
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
 */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
#ifndef errno
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
 extern errno;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
#ifdef USE_H_ERRNO
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
# ifndef h_errno
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
 extern h_errno;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
# endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
#ifdef DEBUG
1839
c10cd58ec334 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1599
diff changeset
    78
# define DBGPRINTF(x)    { if (__debugging__) console_printf x; }
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
#else
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
# define DBGPRINTF(x)    /* as nothing */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
#ifndef TRUE
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
# define TRUE   1
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
#endif
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
#ifndef FALSE
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
# define FALSE  0
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
#endif
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
    89
#ifndef __win32__
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
typedef int BOOL;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
#endif
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
! !
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
!SerialPort primitiveVariables!
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
static int __debugging__ = 0;
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
! !
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
!SerialPort class methodsFor:'documentation'!
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
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
 COPYRIGHT (c) 2006 by eXept Software AG
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
	      All Rights Reserved
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
 This software is furnished under a license and may be used
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
 only in accordance with the terms of that license and with the
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
 inclusion of the above copyright notice.   This software may not
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
 be provided or otherwise made available to, or used by, any
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
 other person.  No title to or ownership of the software is
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
 hereby transferred.
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
!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
documentation
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
"
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   121
    This class provides access to serial ports.
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   122
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   123
    Before opening, the port should be configured, unless the default settings
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   124
    are not correct.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   125
    i.e.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   126
        port := SerialPort new.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   127
        port setBaudrate:19200
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   128
        port open.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   129
        
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   130
    Arguments/Parameters/Instvars:
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   131
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   132
        portName                String                  device name
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   133
                                                            WIN32:  COM0, COM1, ...
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   134
                                                            Unix:   /dev/ttyS0, ...
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   135
                                                                    /dev/cua0, ...
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   136
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   137
        baudRate                Integer                 9600, 19200, ...
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   138
        stopBitsType            Symbol                  #stop1, #stop1_5 or #stop2
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   139
        parityType              Symbol                  #odd, #even or #none
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   140
        dataBits                Integer                 5, 6, 7, 8
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   141
        inFlowCtrlType          Symbol                  #xOnOff, #hardware or #none
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   142
        outFlowCtrlType         Symbol                  #xOnOff, #hardware or #none
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   143
        xOnChar                 Integer | Character
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   144
        xOffChar'               Integer | Character
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
examples
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    example (get help info from an nntp server):
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   151
									[exBegin]
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   152
    |serialPort|
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   153
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   154
    serialPort := SerialPort new setPortName:(SerialPort defaultPortName).
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   155
    serialPort open.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   156
    serialPort close.
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   157
									[exEnd]
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   158
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   159
									[exBegin]
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   160
    |serialPort|
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   161
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   162
    serialPort := SerialPort new setPortName:'COM5'.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   163
    serialPort open.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   164
    serialPort nextPutAll:'hello world'.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   165
    serialPort cr.
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   166
    serialPort close.
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   167
									[exEnd]
1597
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   168
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   169
									[exBegin]
1597
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   170
    |serialPort|
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   171
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   172
    serialPort := SerialPort new setPortName:'COM5'.
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   173
    serialPort open.
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   174
    Transcript showCR:(serialPort nextAvailable:100).
82fcfa2fc223 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1596
diff changeset
   175
    serialPort close.
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   176
									[exEnd]
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
"
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
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   180
!SerialPort class methodsFor:'instance creation'!
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
portName: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
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
   xOnChar:xOnCharOrNil xOffChar:xOffCharOrNil
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   188
    "arguments are self describing; nil values mean: leave setting as is.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   189
    
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   190
     baudrate is a number i.e. 9600, 19200...
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   191
     stopBitsType must be one of: #stop1, #stop1_5 or #stop2
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   192
     parityType must be one of: #odd, #even or #none
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   193
     dataBits must be 5, 6, 7 or 8
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   194
     inFlowCtrlType must be one of: #xOnOff, #hardware or #none (or nil)
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   195
     outFlowCtrlType must be one of: #xOnOff, #hardware or #none (or nil)  
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   196
     xOnChar must be nil or a character or a small byte valued integer
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   197
     xOffChar must be nil or a character or a small byte valued integer
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   198
    "
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   200
    ^ self new
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   201
        setPortName:portName
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   202
        baudRate:baudRateOrNil stopBitsType:stopBitsTypeOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   203
        parityType:parityTypeOrNil dataBits:dataBitsOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   204
        inFlowCtrlType:inFlowCtrlTypeOrNil outFlowCtrlType:outFlowCtrlTypeOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   205
        xOnChar:xOnCharOrNil xOffChar:xOffCharOrNil
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
!SerialPort class methodsFor:'debugging'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
debug:aBoolean
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    "turn on/off internal debugprints.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
     This method is for ST/X debugging only and
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
     may  be removed in later versions"
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
%{  /* NOCONTEXT */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    __debugging__ = (aBoolean == true);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
%}
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    "
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
     SerialPort debug:true
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
     SerialPort debug:false
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    "
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   225
!SerialPort class methodsFor:'defaults'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   226
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   227
defaultPortName
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   228
    DefaultPortName notNil ifTrue:[^ DefaultPortName ].
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   229
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   230
    OperatingSystem isMSDOSlike ifTrue:[
5446
f802bbaa5b0a #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4058
diff changeset
   231
        ^ 'COM1'
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   232
    ].
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   233
    ^ '/dev/ttyS0'
5446
f802bbaa5b0a #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4058
diff changeset
   234
f802bbaa5b0a #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 4058
diff changeset
   235
    "Modified: / 05-02-2020 / 17:54:20 / stefan"
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   236
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   237
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   238
defaultPortName:aString
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   239
    DefaultPortName := aString
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   240
! !
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   241
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
!SerialPort methodsFor:'accessing'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   244
pathName
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   245
    "answer the port name - compatibilty with FileStream"
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   246
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   247
    ^ portName
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   248
!
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   249
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   250
setBaudRate:baudRateOrNil
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   251
    "baudrate is a number i.e. 9600, 19200....
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   252
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   253
    
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   254
    baudRate := baudRateOrNil.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   255
!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   256
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   257
setDataBits:dataBitsOrNil
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   258
    "dataBits must be 5, 6, 7 or 8.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   259
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   260
    
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   261
    dataBits := dataBitsOrNil.
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   262
!
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   263
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   264
setInFlowCtrlType:inFlowCtrlTypeOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   265
    "inFlowCtrlType must be one of: #xOnOff, #hardware or #none (or nil)
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   266
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   267
    
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   268
    inFlowCtrlType := inFlowCtrlTypeOrNil.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   269
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   270
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   271
setOutFlowCtrlType:outFlowCtrlTypeOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   272
    "outFlowCtrlType must be one of: #xOnOff, #hardware or #none (or nil)
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   273
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   274
    
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   275
    outFlowCtrlType := outFlowCtrlTypeOrNil.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   276
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   277
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   278
setParityType:parityTypeOrNil
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   279
    "parityType must be one of: #odd, #even or #none.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   280
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   281
    
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   282
    parityType := parityTypeOrNil.
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   283
!
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   284
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   285
setPortName:portNameArg
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   286
    "Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   287
    
2020
f47ac2710db3 Change port name COM* to \\.\COM* to support com ports > 9
ab
parents: 1903
diff changeset
   288
    (portNameArg startsWith:'C') ifTrue:[
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   289
        "/ add special port name to support COM ports > 9
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   290
        portName := '\\.\', portNameArg.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   291
        ^ self
2020
f47ac2710db3 Change port name COM* to \\.\COM* to support com ports > 9
ab
parents: 1903
diff changeset
   292
    ].
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   293
    portName := portNameArg.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   294
!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   295
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
setPortName:portNameArg
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   297
        baudRate:baudRateOrNil stopBitsType:stopBitsTypeOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   298
        parityType:parityTypeOrNil dataBits:dataBitsOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   299
        inFlowCtrlType:inFlowCtrlTypeOrNil outFlowCtrlType:outFlowCtrlTypeOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   300
        xOnChar:xOnCharOrNil xOffChar:xOffCharOrNil
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   302
    "these must be set before opening.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   303
     baudrate is a number i.e. 9600, 19200...
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   304
     stopBitsType must be one of: #stop1, #stop1_5 or #stop2
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   305
     parityType must be one of: #odd, #even or #none
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   306
     dataBits must be 5, 6, 7 or 8
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   307
     inFlowCtrlType must be one of: #xOnOff, #hardware or #none (or nil)
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   308
     outFlowCtrlType must be one of: #xOnOff, #hardware or #none (or nil)  
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   309
     xOnChar must be nil or a character or a small byte valued integer
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   310
     xOffChar must be nil or a character or a small byte valued integer
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   311
    "
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   312
    
2020
f47ac2710db3 Change port name COM* to \\.\COM* to support com ports > 9
ab
parents: 1903
diff changeset
   313
    self setPortName:portNameArg.
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
    baudRate := baudRateOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    stopBitsType := stopBitsTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
    parityType := parityTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    dataBits := dataBitsOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
    inFlowCtrlType := inFlowCtrlTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
    outFlowCtrlType := outFlowCtrlTypeOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
    xOnChar := xOnCharOrNil.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    xOffChar := xOffCharOrNil.
1846
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   322
!
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   323
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   324
setStopBitsType:stopBitsTypeOrNil
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   325
    "stopBitsType must be one of: #stop1, #stop1_5 or #stop2.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   326
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   327
    
1846
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   328
    stopBitsType := stopBitsTypeOrNil.
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   329
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   330
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   331
setXOffChar:xOffCharOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   332
    "xOffChar must be nil or a character or a small byte valued integer.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   333
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   334
    
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   335
    xOnChar := xOffCharOrNil.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   336
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   337
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   338
setXOnChar:xOnCharOrNil
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   339
    "xOnChar must be nil or a character or a small byte valued integer.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   340
     Must be set before opening."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   341
    
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   342
    xOnChar := xOnCharOrNil.
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
3483
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   345
!SerialPort methodsFor:'initialization'!
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   346
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   347
initialize
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   348
    super initialize.
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   349
    "/ transparent
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   350
    eolMode := nil.
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   351
! !
014fa9bca2da class: SerialPort
Claus Gittinger <cg@exept.de>
parents: 3220
diff changeset
   352
4057
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   353
!SerialPort methodsFor:'inspecting'!
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   354
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   355
inspectorExtraMenuOperations
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   356
    "extra operation-menu entries to be shown in an inspector.
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   357
     Answers a collection of pairs contining aString and action aBlock.
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   358
     aString is the label of the menu item.
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   359
     aBlock is evaluated when the menu item is selected.
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   360
     To be redefined in objects which think that it makes sense to offer
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   361
     often used operations in an inspector.
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   362
     See SerialPort as an example."
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   363
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   364
    ^ super inspectorExtraMenuOperations
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   365
    , {
4058
aa7a38bb1376 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4057
diff changeset
   366
        { 'Close SerialPort' . [self close] }
4057
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   367
    }
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   368
! !
9df077908336 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 4056
diff changeset
   369
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   370
!SerialPort methodsFor:'low level'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   371
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   372
baudRate:newRate
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   373
    "allows change of the baudrate while being open.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   374
     Currently, only works for windows.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   375
     Unix users should close, reconfigure and reopen."
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   376
    
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   377
    handle isNil ifTrue:[
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   378
        "not open"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   379
        baudRate := newRate.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   380
        ^ self
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   381
    ].
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   382
%{
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   383
    OBJ fp;
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   384
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   385
    fp = __INST(handle);
1598
96e2b32185a9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1597
diff changeset
   386
    if (__isSmallInteger(newRate)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   387
        SERIALPORT port;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   388
        int ret;
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   389
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   390
        port = PORT_FROM_FILE_OBJECT(fp);
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   391
#ifdef __win32__
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   392
        {
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   393
            DCB dcb;
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   394
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   395
            ZeroMemory(&dcb, sizeof(dcb));
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   396
            dcb.DCBlength = sizeof(dcb);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   397
            GetCommState(port, &dcb);
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   398
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   399
            dcb.BaudRate = __intVal(newRate);
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   400
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   401
            if (! SetCommState(port, &dcb)) {
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   402
                RETURN(false);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   403
            }
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   404
            __INST(baudRate) = newRate;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   405
            RETURN(true);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   406
        }
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   407
# else /* ! __win32__ */
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   408
        /* add code for unix ioctl here ... */
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   409
# endif /* __win32__ */
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   410
    }
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   411
%}.
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   412
    self primitiveFailed.
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   413
! !
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   414
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   415
!SerialPort protectedMethodsFor:'low level'!
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
closeFile
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
    "low level close"
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
%{
3219
65db912c5ff8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3153
diff changeset
   421
    OBJ t = __INST(handle);
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
    if (t != nil) {
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   423
	FILE *fp = __FILEVal(t);
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   425
	__INST(handle) = nil;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   427
#if defined(__win32__) && defined(xxxDO_WRAP_CALLS)
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   428
	{
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   429
	    int ret;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   431
	    do {
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   432
		__threadErrno = 0;
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   433
		ret = STX_C_CALL1("fclose", fclose, fp);
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   434
	    } while ((ret < 0) && (__threadErrno == EINTR));
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   435
	}
2818
94d67df5c00d compilable with tcc
Claus Gittinger <cg@exept.de>
parents: 2751
diff changeset
   436
#else
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   437
	fclose(fp);
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   438
#endif
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
%}
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   441
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   442
    "Modified: / 05-08-2011 / 14:13:35 / cg"
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
!SerialPort methodsFor:'opening'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
open
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   448
    "open the OS-port.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   449
    Notice: all parameters (baudrate, stopbits, etc.) must have been set before"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   450
    
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   451
    |errorSymbol errorNumber|
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   453
    handle notNil ifTrue:[
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   454
        ^ self errorAlreadyOpen
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
    ].
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
    FILE *fp;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    SERIALPORT port;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
    char *__portName;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
    int __setBaudRate = 1,
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   461
        __setDataBits = 1,
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   462
        __setXOnChar = 1,
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   463
        __setXOffChar = 1,
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   464
        __setInFlowCtrl = 1,
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   465
        __setOutFlowCtrl = 1,
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   466
        __setStopBits = 1,
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   467
        __setParityType = 1;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
    int __baudRate, __dataBits;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
    int __xOnChar, __xOffChar;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
    int __inFlowCtrl, __outFlowCtrl;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
    int __stopBits, __parityType;
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   472
#ifdef __win32__
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
    COMMTIMEOUTS timeouts;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
    DCB dcb;
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   475
#endif /* __win32__ */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
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
   477
#   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
   478
#   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
   479
#   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
   480
#   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
   481
#   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
   482
#   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
   483
#   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
   484
#   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
   485
#   define FLG_PARITY_NONE    3
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
2751
d62cad0013dd changed: #open
Stefan Vogel <sv@exept.de>
parents: 2692
diff changeset
   487
    if (__isStringLike(__INST(portName))) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   488
        __portName = __stringVal(__INST(portName));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   490
        errorSymbol = @symbol(portName);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   491
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
    }
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 (__isSmallInteger(__INST(baudRate))) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   495
        __baudRate = __intVal(__INST(baudRate));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
    } else if (__INST(baudRate) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   497
        __setBaudRate = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   499
        errorSymbol = @symbol(baudRate);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   500
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
    if (__isSmallInteger(__INST(dataBits))) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   504
        __dataBits = __intVal(__INST(dataBits));
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   505
    } else if (__INST(dataBits) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   506
        __setDataBits = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   508
        errorSymbol = @symbol(dataBits);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   509
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
    if (__isSmallInteger(__INST(xOnChar))) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   513
        __xOnChar = __intVal(__INST(xOnChar));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
    } else if (__isCharacter(__INST(xOnChar))) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   515
        __xOnChar = __intVal(__characterVal(__INST(xOnChar)));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
    } else if (__INST(xOnChar) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   517
        __setXOnChar = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   519
        errorSymbol = @symbol(xOnChar);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   520
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
    if (__isSmallInteger(__INST(xOffChar))) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   524
        __xOffChar = __intVal(__INST(xOffChar));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
    } else if (__isCharacter(__INST(xOffChar))) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   526
        __xOffChar = __intVal(__characterVal(__INST(xOffChar)));
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
    } else if (__INST(xOffChar) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   528
        __setXOffChar = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   530
        errorSymbol = @symbol(xOffChar);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   531
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
    if (__INST(inFlowCtrlType) == @symbol(xOnOff)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   535
        __inFlowCtrl = FLG_FLOW_XONOFF;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
    } else if (__INST(inFlowCtrlType) == @symbol(hardware)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   537
        __inFlowCtrl = FLG_FLOW_HARDWARE;
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   538
    } else if (__INST(inFlowCtrlType) == @symbol(none)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   539
        __inFlowCtrl = FLG_FLOW_NONE;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   540
    } else if (__INST(inFlowCtrlType) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   541
        __setInFlowCtrl = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   543
        errorSymbol = @symbol(inFlowCtrlType);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   544
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
    if (__INST(outFlowCtrlType) == @symbol(xOnOff)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   548
        __outFlowCtrl = FLG_FLOW_XONOFF;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
    } else if (__INST(outFlowCtrlType) == @symbol(hardware)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   550
        __outFlowCtrl = FLG_FLOW_HARDWARE;
1599
7c2c8f7233bd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1598
diff changeset
   551
    } else if (__INST(outFlowCtrlType) == @symbol(none)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   552
        __outFlowCtrl = FLG_FLOW_NONE;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
    } else if (__INST(outFlowCtrlType) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   554
        __setOutFlowCtrl = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   555
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   556
        errorSymbol = @symbol(outFlowCtrlType);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   557
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   558
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   560
    if (__INST(stopBitsType) == @symbol(stop1)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   561
        __stopBits = FLG_STOP_1;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
    } else if (__INST(stopBitsType) == @symbol(stop2)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   563
        __stopBits = FLG_STOP_2;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
    } else if (__INST(stopBitsType) == @symbol(stop1_5)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   565
        __stopBits = FLG_STOP_1_5;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   566
    } else if (__INST(stopBitsType) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   567
        __setStopBits = 0;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   569
        errorSymbol = @symbol(stopBitsType);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   570
        goto getOutOfhere;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   571
    }
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   572
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   573
    if (__INST(parityType) == @symbol(odd)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   574
        __parityType = FLG_PARITY_ODD;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   575
    } else if (__INST(parityType) == @symbol(even)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   576
        __parityType = FLG_PARITY_EVEN;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   577
    } else if (__INST(parityType) == @symbol(none)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   578
        __parityType = FLG_PARITY_NONE;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   579
    } else if (__INST(parityType) == nil) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   580
        __setParityType = 0;
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   581
    } else {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   582
        errorSymbol = @symbol(parityType);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   583
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   586
#ifdef __win32__
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
    port = CreateFile(__portName,
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   588
              GENERIC_READ | GENERIC_WRITE,
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   589
              0,             /* comm devices must be opened with exclusive access */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   590
              NULL,          /* no security attrs */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   591
              OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   592
              0,             /* no overlapped I/O */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   593
              NULL           /* hTemplate must be NULL for comm devices */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   594
           );
1593
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
    if (port == INVALID_HANDLE_VALUE) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   597
        console_fprintf(stderr, "Win32OS [info]: serial port open failed\n");
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   598
        errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   599
        errorSymbol = @symbol(openFailed);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   600
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
    /* Flush the driver */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
    PurgeComm( port, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   606
    /* Set driver buffer sizes */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   607
    SetupComm( port, 4096 /*SERIAL_IN_QUEUE_SIZE*/, 4096 /*SERIAL_OUT_QUEUE_SIZE*/);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   608
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   609
    /* Reset timeout constants */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   610
    timeouts.ReadIntervalTimeout= 0xFFFFFFFF;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   611
    timeouts.ReadTotalTimeoutMultiplier = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
    timeouts.ReadTotalTimeoutConstant = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
    timeouts.WriteTotalTimeoutMultiplier = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   614
    timeouts.WriteTotalTimeoutConstant = 0;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
    SetCommTimeouts( port, &timeouts );
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   616
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   617
    /* Set communication parameters */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   618
    ZeroMemory(&dcb, sizeof(dcb));
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   619
    dcb.DCBlength = sizeof(dcb);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   620
    GetCommState(port, &dcb);
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   621
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   622
    if (__setBaudRate) dcb.BaudRate = __baudRate;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   623
    if (__setDataBits) dcb.ByteSize = __dataBits;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   624
    if (__setXOnChar)  dcb.XonChar = __xOnChar;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   625
    if (__setXOffChar) dcb.XoffChar = __xOffChar;
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   626
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   627
    if (__setStopBits) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   628
        /* set stop bits */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   629
        switch(__stopBits) {
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   630
            case FLG_STOP_1_5: dcb.StopBits = 1; break; /* 1.5 stop bits */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   631
            case FLG_STOP_1: dcb.StopBits = 0; break; /* 1 stop bit */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   632
            case FLG_STOP_2: dcb.StopBits = 2; break; /* 2 stop bits */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   633
            default:
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   634
                errorSymbol = @symbol(stopBits);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   635
                goto errExit;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   636
        }
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   637
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   638
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   639
    if (__setParityType) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   640
        /* set parity */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   641
        switch(__parityType) {
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   642
            case FLG_PARITY_NONE: dcb.Parity = NOPARITY; break;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   643
            case FLG_PARITY_ODD: dcb.Parity = ODDPARITY; break;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   644
            case FLG_PARITY_EVEN: dcb.Parity = EVENPARITY; break;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   645
            default:
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   646
                errorSymbol = @symbol(parityType);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   647
                goto errExit;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   648
        }
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   649
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   650
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   651
    if (__setInFlowCtrl) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   652
        /* set control flow */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   653
        dcb.fInX = FALSE;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   654
        dcb.fDtrControl = FALSE;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   655
        if (__inFlowCtrl == FLG_FLOW_XONOFF) dcb.fInX = TRUE;  /* XOn/XOff handshaking */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   656
        if (__inFlowCtrl == FLG_FLOW_HARDWARE) dcb.fDtrControl = TRUE;  /* hardware handshaking */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   658
    if (__setOutFlowCtrl) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   659
        dcb.fOutX = FALSE;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   660
        dcb.fOutxCtsFlow = FALSE;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   661
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   662
        if (__outFlowCtrl == FLG_FLOW_XONOFF) dcb.fOutX = TRUE;  /* XOn/XOff handshaking */
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   663
        if (__outFlowCtrl == FLG_FLOW_HARDWARE) dcb.fOutxCtsFlow = TRUE;  /* hardware handshaking */
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   664
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   665
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
    if (! SetCommState(port, &dcb)) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   667
        console_fprintf(stderr, "Win32OS [info]: serial port comm-setup failed\n");
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   668
        errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   669
        goto errExit;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   670
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
    /*
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   673
     * make it a FILE *
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   674
     */
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   675
    {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   676
        int _fd;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   677
        __stxWrapApiEnterCritical();
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   678
        _fd = _open_osfhandle((long)port, 0);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   679
        fp = fdopen(_fd, "r+");
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   680
        __stxWrapApiLeaveCritical();
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   681
    }
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   682
# else /* ! __win32__ */
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   683
    fp = fopen(__portName, "r+");
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   684
    /* add code for unix ioctl here ... */
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   685
# endif /* !__win32__ */
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   686
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
    if (! fp) {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   688
        console_fprintf(stderr, "SerialPort [info]: fdopen failed\n");
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   689
        errorNumber = __MKSMALLINT(errno);
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   690
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   691
    errExit: ;
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   692
# ifdef __win32__
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   693
        CloseHandle(port);
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   694
# endif
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   695
        goto getOutOfhere;
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   696
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
    {
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   699
        OBJ t = __MKEXTERNALADDRESS(fp);
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   700
        __INST(handle) = t;
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   701
        __STORE(self, t);
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   702
    }
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   703
1596
0296c521f18e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1595
diff changeset
   704
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
   705
#   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
   706
#   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
   707
#   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
   708
#   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
   709
#   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
   710
#   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
   711
#   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
   712
#   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
   713
#   undef FLG_PARITY_NONE
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   714
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   715
%}.
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   716
    "all ok?"
2321
6f4cc7b644db filePointer -> handle migration
Claus Gittinger <cg@exept.de>
parents: 2020
diff changeset
   717
    handle notNil ifTrue:[
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   718
        handleType := #filePointer.
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   719
        self registerForFinalization.
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   720
    ] ifFalse:[
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   721
        self openError:(errorNumber ? 'invalid argument(s)').
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   722
    ].
1846
3be8e3d770f0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1839
diff changeset
   723
2610
cb6211751636 changed:
Claus Gittinger <cg@exept.de>
parents: 2423
diff changeset
   724
    "Modified: / 05-08-2011 / 14:14:08 / cg"
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   725
! !
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   726
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   727
!SerialPort methodsFor:'printing & storing'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   728
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   729
printOn:aStream
1903
d62268dffe6b changed #printOn: print port name (COMx)
Stefan Vogel <sv@exept.de>
parents: 1846
diff changeset
   730
    aStream nextPutAll:'SerialPort('.
d62268dffe6b changed #printOn: print port name (COMx)
Stefan Vogel <sv@exept.de>
parents: 1846
diff changeset
   731
    portName printOn:aStream.
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   732
    baudRate notNil ifTrue:[
3846
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   733
	aStream nextPut:$/.
7c9889bed912 win32 defs
Claus Gittinger <cg@exept.de>
parents: 3621
diff changeset
   734
	baudRate printOn:aStream.
3220
6aed06c3fdf8 class: SerialPort
Stefan Vogel <sv@exept.de>
parents: 3219
diff changeset
   735
    ].
1903
d62268dffe6b changed #printOn: print port name (COMx)
Stefan Vogel <sv@exept.de>
parents: 1846
diff changeset
   736
    aStream nextPut:$).
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   737
! !
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   738
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   739
!SerialPort methodsFor:'queries'!
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   740
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   741
getBaudrate
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   742
    "return the baudRate"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   743
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   744
    ^ baudRate
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   745
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   746
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   747
getDataBits
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   748
    "return the nr. of dataBits"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   749
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   750
    ^ dataBits
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   751
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   752
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   753
getInFlowCtrlType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   754
    "return the inFlowCtrlType"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   755
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   756
    ^ inFlowCtrlType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   757
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   758
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   759
getName
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   760
    "return the name; here, we return the devices name"
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   761
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   762
    ^ portName
4056
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   763
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   764
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   765
getOutFlowCtrlType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   766
    "return the outFlowCtrlType"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   767
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   768
    ^ outFlowCtrlType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   769
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   770
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   771
getParityType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   772
    "return the parityType"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   773
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   774
    ^ parityType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   775
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   776
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   777
getStopBitsType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   778
    "return the stopBitsType"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   779
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   780
    ^ stopBitsType
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   781
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   782
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   783
getXOffChar
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   784
    "return the xOffChar"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   785
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   786
    ^ xOffChar
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   787
!
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   788
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   789
getXOnChar
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   790
    "return the xOnChar"
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   791
de0810b2be05 #QUALITY by cg
Claus Gittinger <cg@exept.de>
parents: 3846
diff changeset
   792
    ^ xOnChar
1595
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   793
! !
eb26b0dfa8f6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1593
diff changeset
   794
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   795
!SerialPort class methodsFor:'documentation'!
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   796
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   797
version
3621
e4099b3a18fd #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 3483
diff changeset
   798
    ^ '$Header$'
2419
8ea9b41e7b4b Use __MKEXTERNALADDRESS() instead of __MKOBJ()
Stefan Vogel <sv@exept.de>
parents: 2321
diff changeset
   799
!
8ea9b41e7b4b Use __MKEXTERNALADDRESS() instead of __MKOBJ()
Stefan Vogel <sv@exept.de>
parents: 2321
diff changeset
   800
8ea9b41e7b4b Use __MKEXTERNALADDRESS() instead of __MKOBJ()
Stefan Vogel <sv@exept.de>
parents: 2321
diff changeset
   801
version_CVS
3621
e4099b3a18fd #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 3483
diff changeset
   802
    ^ '$Header$'
1593
d6d284094d2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   803
! !
3153
eff2380e918e Initialize in instance initialize method insted in #new
Stefan Vogel <sv@exept.de>
parents: 2998
diff changeset
   804