@@ -116,7 +116,7 @@ public static boolean touchForCDCReset(String iname) throws SerialException {
116116 }
117117 }
118118
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 {
120120 //if (port != null) port.close();
121121 //this.parent = parent;
122122 //parent.attach(this);
@@ -131,6 +131,11 @@ private Serial(String iname, int irate, char iparity, int idatabits, float istop
131131 if (istopbits == 1.5f ) stopbits = SerialPort .STOPBITS_1_5 ;
132132 if (istopbits == 2 ) stopbits = SerialPort .STOPBITS_2 ;
133133
134+ // This is required for unit-testing
135+ if (iname .equals ("none" )) {
136+ return ;
137+ }
138+
134139 try {
135140 port = new SerialPort (iname );
136141 port .openPort ();
@@ -175,31 +180,35 @@ public synchronized void serialEvent(SerialPortEvent serialEvent) {
175180 if (serialEvent .isRXCHAR ()) {
176181 try {
177182 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 );
197184 } catch (SerialPortException e ) {
198185 errorMessage ("serialEvent" , e );
199186 }
200187 }
201188 }
202189
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+
203212 /**
204213 * This method is intented to be extended to receive messages
205214 * coming from serial port.
0 commit comments