Skip to content

Commit 2563ce7

Browse files
committed
Cleanup
- Drop duplicated header includes. - Enhance error messages in windows writeBytes().
1 parent bc7b153 commit 2563ce7

File tree

3 files changed

+17
-13
lines changed

3 files changed

+17
-13
lines changed

src/main/cpp/_nix_based/jssc.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,10 @@
2525
#include <assert.h>
2626
#include <limits.h>
2727
#include <stdio.h>
28-
#include <string.h>
2928
#include <fcntl.h>
3029
#include <stdlib.h>
3130
#include <string.h>
3231
#include <unistd.h>
33-
#include <string.h>
3432
#include <sys/ioctl.h>
3533
#include <termios.h>
3634
#include <time.h>
@@ -41,7 +39,6 @@
4139
#endif
4240
#ifdef __sun
4341
#include <sys/filio.h>//Needed for FIONREAD in Solaris
44-
#include <string.h>//Needed for select() function
4542
#endif
4643
#ifdef __APPLE__
4744
#include <serial/ioss.h>//Needed for IOSSIOSPEED in Mac OS X (Non standard baudrate)

src/main/cpp/windows/jssc.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,30 +243,37 @@ JNIEXPORT jint JNICALL Java_jssc_SerialNativeInterface_writeBytes
243243
if( exClz ) env->ThrowNew(exClz, "buffer");
244244
return 0;
245245
}
246-
jbyte* jBuffer = env->GetByteArrayElements(buffer, NULL);
246+
jbyte *jBuffer = env->GetByteArrayElements(buffer, NULL);
247247
if( !jBuffer ){
248248
jclass exClz = env->ExceptionCheck() ? NULL : env->FindClass("java/lang/RuntimeException");
249249
if( exClz ) env->ThrowNew(exClz, "jni->GetByteArrayElements() failed");
250250
return 0;
251251
}
252252
OVERLAPPED *overlapped = new OVERLAPPED();
253253
overlapped->hEvent = CreateEventA(NULL, true, false, NULL);
254+
DWORD err = 0;
254255
if(WriteFile(hComm, jBuffer, (DWORD)env->GetArrayLength(buffer), &lpNumberOfBytesWritten, overlapped)){
255256
returnValue = lpNumberOfBytesWritten;
256-
}
257-
else if(GetLastError() == ERROR_IO_PENDING){
258-
if(WaitForSingleObject(overlapped->hEvent, INFINITE) == WAIT_OBJECT_0){
259-
if(GetOverlappedResult(hComm, overlapped, &lpNumberOfBytesTransferred, false)){
260-
returnValue = lpNumberOfBytesTransferred;
257+
}else{
258+
err = GetLastError();
259+
if( err == ERROR_IO_PENDING ){
260+
if(WaitForSingleObject(overlapped->hEvent, INFINITE) == WAIT_OBJECT_0){
261+
if(GetOverlappedResult(hComm, overlapped, &lpNumberOfBytesTransferred, false)){
262+
returnValue = lpNumberOfBytesTransferred;
263+
}
264+
}else{
265+
err = GetLastError();
261266
}
262267
}
263268
}
264269
env->ReleaseByteArrayElements(buffer, jBuffer, 0);
265270
CloseHandle(overlapped->hEvent);
266271
delete overlapped;
267272
if( returnValue < 0 ){
273+
char emsg[128];
274+
snprintf(emsg, sizeof emsg, "Error %d. Details: https://learn.microsoft.com/en-us/windows/win32/debug/system-error-codes#system-error-codes", err);
268275
jobject *exClz = env->FindClass("jssc/SerialPortException");
269-
if( exClz ) env->ThrowNew(exClz, "WriteFile() failed");
276+
if( exClz ) env->ThrowNew(exClz, emsg);
270277
return 0;
271278
}
272279
return returnValue;

src/main/java/jssc/SerialPort.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,8 @@ public boolean writeBytes1(byte[] buffer) throws SerialPortException {
415415
/* Delegate to new method and translate result to what original method
416416
* did return. */
417417
try{
418-
int result = writeBytes(buffer);
419-
return result == buffer.length;
418+
int numWrittenBytes = writeBytes(buffer);
419+
return numWrittenBytes == buffer.length;
420420
} catch(IOException ex) {
421421
throw SerialPortException.wrapNativeException(ex, this, "writeBytes1");
422422
}
@@ -428,7 +428,7 @@ public boolean writeBytes1(byte[] buffer) throws SerialPortException {
428428
* @param buffer <code>byte[]</code> array to write.
429429
*
430430
* @return number of bytes written.
431-
*
431+
*
432432
* @throws SerialPortException
433433
*/
434434
public int writeBytes(byte[] buffer) throws SerialPortException {

0 commit comments

Comments
 (0)