@@ -116,7 +116,7 @@ public static boolean touchForCDCReset(String iname) throws SerialException {
116
116
}
117
117
}
118
118
119
- private Serial (String iname , int irate , char iparity , int idatabits , float istopbits , boolean setRTS , boolean setDTR ) throws SerialException {
119
+ protected Serial (String iname , int irate , char iparity , int idatabits , float istopbits , boolean setRTS , boolean setDTR ) throws SerialException {
120
120
//if (port != null) port.close();
121
121
//this.parent = parent;
122
122
//parent.attach(this);
@@ -131,6 +131,11 @@ private Serial(String iname, int irate, char iparity, int idatabits, float istop
131
131
if (istopbits == 1.5f ) stopbits = SerialPort .STOPBITS_1_5 ;
132
132
if (istopbits == 2 ) stopbits = SerialPort .STOPBITS_2 ;
133
133
134
+ // This is required for unit-testing
135
+ if (iname .equals ("none" )) {
136
+ return ;
137
+ }
138
+
134
139
try {
135
140
port = new SerialPort (iname );
136
141
port .openPort ();
@@ -175,31 +180,35 @@ public synchronized void serialEvent(SerialPortEvent serialEvent) {
175
180
if (serialEvent .isRXCHAR ()) {
176
181
try {
177
182
byte [] buf = port .readBytes (serialEvent .getEventValue ());
178
- int next = 0 ;
179
- while (next < buf .length ) {
180
- while (next < buf .length && outToMessage .hasRemaining ()) {
181
- int spaceInIn = inFromSerial .remaining ();
182
- int copyNow = buf .length - next < spaceInIn ? buf .length - next : spaceInIn ;
183
- inFromSerial .put (buf , next , copyNow );
184
- next += copyNow ;
185
- inFromSerial .flip ();
186
- bytesToStrings .decode (inFromSerial , outToMessage , false );
187
- inFromSerial .compact ();
188
- }
189
- outToMessage .flip ();
190
- if (outToMessage .hasRemaining ()) {
191
- char [] chars = new char [outToMessage .remaining ()];
192
- outToMessage .get (chars );
193
- message (chars , chars .length );
194
- }
195
- outToMessage .clear ();
196
- }
183
+ processSerialEvent (buf );
197
184
} catch (SerialPortException e ) {
198
185
errorMessage ("serialEvent" , e );
199
186
}
200
187
}
201
188
}
202
189
190
+ public void processSerialEvent (byte [] buf ) {
191
+ int next = 0 ;
192
+ while (next < buf .length ) {
193
+ while (next < buf .length && outToMessage .hasRemaining ()) {
194
+ int spaceInIn = inFromSerial .remaining ();
195
+ int copyNow = buf .length - next < spaceInIn ? buf .length - next : spaceInIn ;
196
+ inFromSerial .put (buf , next , copyNow );
197
+ next += copyNow ;
198
+ inFromSerial .flip ();
199
+ bytesToStrings .decode (inFromSerial , outToMessage , false );
200
+ inFromSerial .compact ();
201
+ }
202
+ outToMessage .flip ();
203
+ if (outToMessage .hasRemaining ()) {
204
+ char [] chars = new char [outToMessage .remaining ()];
205
+ outToMessage .get (chars );
206
+ message (chars , chars .length );
207
+ }
208
+ outToMessage .clear ();
209
+ }
210
+ }
211
+
203
212
/**
204
213
* This method is intented to be extended to receive messages
205
214
* coming from serial port.
0 commit comments