Skip to content

Releases: Fazecast/jSerialComm

jSerialComm v2.8.5

21 Jan 18:51
Compare
Choose a tag to compare
  • Retry native write() call upon errno == EAGAIN on Posix
  • Remove all FTDI native driver calls to FT_Open, FT_Close, FT_GetComPort, and FT_SetDriverLatency on Windows
  • Update FTDI enumeration using registry keys directly on Windows
  • Search for serial modem devices in addition to plain serial devices on Windows
  • Set FTDI latency using the registry on Windows (requires admin first time)
  • Only set FTDI latency when calling openPort()
  • Ignore LPT parallel devices on Windows

jSerialComm v2.8.4

18 Jan 19:49
Compare
Choose a tag to compare
  • Fixed bug where calling removeDataListener() on an unopened port caused a crash

jSerialComm v2.8.3

18 Jan 19:01
Compare
Choose a tag to compare
  • RS485-mode ioctl errors are no longer treated as fatal errors
  • Small updates to getLastErrorLine() and getLastError() when a port has failed to open
  • All JNI functions are now checked for and cleared of exceptions at runtime
  • The portHandle pointer returned from native code to Java is guaranteed to be 0 if there is an error, else a valid number
  • All "open port" checks now verify that the portHandle is not equal to exactly 0
  • Implemented full functionality for OpenBSD x86 and amd64

jSerialComm v2.8.2

14 Jan 21:19
Compare
Choose a tag to compare
  • Allow returning of native error code if port does not open successfully
  • Fix bug with openPort() failing when RS485 mode does not exist

jSerialComm v2.8.1

10 Jan 16:53
Compare
Choose a tag to compare
  • Attempt to load shared library from user's home directory if it failed to load from tmp directory for whatever reason
  • Fix Solaris loading directories for correct architecture
  • Make shared library non-writeable

jSerialComm v2.8.0

06 Jan 15:29
Compare
Choose a tag to compare
  • Add Java property fazecast.jSerialComm.appid so multiple applications using jSerialComm simultaneously do not interfere
  • Fix RS485 RTS delay timing bugs
  • Update documentation to specify how to use a different tmp directory for native library extraction
  • Add option to disable acquiring exclusive lock of a serial port
  • Implement remaining RS485 configuration options (rs485EnableTermination and rs485RxDuringTx)
  • Overhaul build system to entirely use cross-compilers
  • Add support for Windows on ARM
  • Add FreeBSD support for x86, x86_64, and ARM64 architectures
  • Add method to return full OS-defined system path to the port (getSystemPortPath())
  • Various documentation updates and clarifications
  • Properly clear XON/XOFF flow control settings
  • Ensure XOFF is disabled at startup time when no XON/XOFF flow control settings desired
  • Ignore SIGIO POSIX signals
  • Update built-in MacOS baud rates and function deprecations
  • Reduce latency timer in Windows-connected FTDI devices
  • Completely overhaul JNI boundary, port settings and descriptors now stored entirely in C
  • Add methods to return native library error codes and source file locations (getLastErrorCode() and getLastErrorLocation())
  • Stop auto-closing serial ports upon every native error (allow user to handle errors themselves)
  • Add open/close native code test case and Makefile
  • Mov compiler and build configuration files out of the source code repo
  • Ensure port handle exists before attempting to close it
  • Remove "final" keyword from SerialPortEvent class so that it can be mocked
  • Ensure that writeBytes() actually writes all passed-in bytes before returning
  • Verify that port is still open when writing through OutputStream
  • Synchronize open/close code on Java class as well as instance
  • Add new functionality to set custom XON/XOFF characters (setXonXoffCharacters(byte xonStartCharacter, byte xoffStopCharacter))
  • Fix event-based reading issues in Windows
  • Move event-based reading code to native C instead of Java on Posix
  • Add test case for closing a port from a separate thread than its reading thread
  • Force-switch port to be non-blocking before attempting to close it
  • Add new functionality to flush RX/TX buffers in the OS and driver-side (flushIOBuffers())
  • Attempt to load backup native library version if primary version fails
  • Print architecture of the native library trying to be loaded if it fails
  • Update README to explain how to use non-default system temporary (tmp) directory
  • Add new functionality to retrieve physical port location (getPortLocation()) that stays the same across reboots
  • Add Java shutdown hook to force all open ports to close at end of JVM life
  • Fix Windows enumeration bug where wrong description will get returned for correct port
  • Add full range of event listener options (RI, DSR, CTS, BRK, FE, PE)
  • Add new "Port Disconnected" event listener (LISTENING_EVENT_PORT_DISCONNECTED)
  • Update documentation to specify OS limitations for getRead/WriteBufferSize() methods
  • Removed/updated all deprecated Windows-specific function calls

jSerialComm v2.7.0

22 Oct 15:15
Compare
Choose a tag to compare
  • Add native support for Apple Silicon (M1)
  • Add native support for PowerPC
  • Fix port name mangling if invalid port path is passed in
  • Throw SerialPortInvalidPortException if descriptor search fails
  • Allow read timeout exceptions to be suppressed within InputStream
  • Add Gradle wrapper and automate builds

jSerialComm v2.6.2

29 Apr 22:13
Compare
Choose a tag to compare
  • Set "low latency mode" on Linux, if it exists
  • Do not tcdrain before closing port in case port has stopped responding (which causes a freeze)
  • Update documentation to indicate that getCommPorts() always returns a new unique array of SerialPort instances

jSerialComm v2.6.1

06 Apr 16:39
Compare
Choose a tag to compare
  • Merge Android-specific code into General POSIX codebase
  • Deprecated Android architectures removed
  • Updated Crosstool-NG config files to work with newer Crosstool version
  • Sync/force write data before closing port
  • Update error strings to better indicate IO errors
  • Only enable BRKINT flag if not in RS485 mode
  • Check return value of SetupComm in Windows
  • Return boolean value when changing port configurations after opened to indicate success/failure
  • Redefine fdatasync to fsync on Mac OS
  • Do not completely reset port configuration when updating config parameters
  • Updated Javadocs

jSerialComm v2.6.0

19 Feb 18:42
Compare
Choose a tag to compare
  • Created new SerialPortMessageListenerWithExceptions class to allow users to handle event-based exceptions
  • In Windows, use "CreateProcess" to directly preset DTR/RTS modes instead of calling system()
  • Add ability for user to specify whether RTS is high/low when sending in RS485 mode
  • Ensure data was actually received in waitForEvent on Windows
  • Add additional ARM version indicator for choosing correct native binary
  • Additional test case updates
  • Use flock() to ensure exclusive port access instead of TIOCEXCL
  • Perform full port closure routing upon native error
  • Synchronize open/close/setup calls in Java to avoid race conditions
  • Officially remove OSX 32-bit support
  • Remove isOpened field and detect openness based on file descriptor instead
  • Break out of event waiting loop based on Java-side boolean value
  • Force-interrupt event waiting thread in case it gets stuck in native/driver code
  • Update Gradle build file to use bnd instead of the deprecated osgi plugin