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