com.sun.comm
Class LinuxSerial

java.lang.Object
  extended byjavax.comm.CommPort
      extended byjavax.comm.SerialPort
          extended bycom.sun.comm.LinuxSerial

public class LinuxSerial
extends SerialPort


Nested Class Summary
private  class LinuxSerial.SSCheckStatusThread
           
 class LinuxSerial.SSInputStream
           
 class LinuxSerial.SSOutputStream
           
private  class LinuxSerial.SSReaderThread
           
 
Field Summary
private  int baud
           
private  LinuxSerial.SSCheckStatusThread checkStatus
           
private  int databits
           
private  int flowcontrol
           
private  int framing_byte
           
private  int ibuffer_size
           
private  LinuxSerial.SSInputStream inputStream
           
private  SerialPortEventListener listener
           
private  int notificationMask
           
private static int NOTIFY_BreakInterrupt
           
private static int NOTIFY_CarrierDetect
           
private static int NOTIFY_CTS
           
private static int NOTIFY_DataAvailable
           
private static int NOTIFY_DSR
           
private static int NOTIFY_FramingError
           
private static int NOTIFY_OutputEmpty
           
private static int NOTIFY_OverrunError
           
private static int NOTIFY_ParityError
           
private static int NOTIFY_RingIndicator
           
private  int obuffer_size
           
private  LinuxSerial.SSOutputStream outputStream
           
private  int parity
           
private  int port_fd
           
private  boolean portInError
           
private  int rcvThreshold
           
private  int rcvTimeout
           
private  LinuxSerial.SSReaderThread readerThread
           
private static int STATUS_CD
           
private static int STATUS_CTS
           
private static int STATUS_DATA_AVAIL
           
private static int STATUS_DSR
           
private static int STATUS_DTR
           
private static int STATUS_OUTPUTEMPTY
           
private static int STATUS_RI
           
private static int STATUS_RTS
           
private  int stopbits
           
private  boolean write_finished_flag
           
private  java.lang.Object write_finished_flag_lock
           
 
Fields inherited from class javax.comm.SerialPort
DATABITS_5, DATABITS_6, DATABITS_7, DATABITS_8, FLOWCONTROL_NONE, FLOWCONTROL_RTSCTS_IN, FLOWCONTROL_RTSCTS_OUT, FLOWCONTROL_XONXOFF_IN, FLOWCONTROL_XONXOFF_OUT, PARITY_EVEN, PARITY_MARK, PARITY_NONE, PARITY_ODD, PARITY_SPACE, STOPBITS_1, STOPBITS_1_5, STOPBITS_2
 
Fields inherited from class javax.comm.CommPort
name
 
Constructor Summary
LinuxSerial(java.lang.String theName)
           
 
Method Summary
 void addEventListener(SerialPortEventListener lsnr)
          Registers a SerialPortEventListener object to listen for SerialEvents.
 void close()
          Closes the communications port.
 void disableReceiveFraming()
          Disables receive framing.
 void disableReceiveThreshold()
          Disables receive threshold.
 void disableReceiveTimeout()
          Disables receive timeout.
 void enableReceiveFraming(int framingByte)
          Enables receive framing, if this feature is supported by the driver.
 void enableReceiveThreshold(int thresh)
          Enables receive threshold, if this feature is supported by the driver.
 void enableReceiveTimeout(int timeout)
          Enables receive timeout, if this feature is supported by the driver.
 int getBaudRate()
          Gets the currently configured baud rate.
 int getDataBits()
          Gets the currently configured number of data bits.
 int getFlowControlMode()
          Gets the currently configured flow control mode.
 int getInputBufferSize()
          Gets the input buffer size.
 java.io.InputStream getInputStream()
          Returns an input stream.
 int getOutputBufferSize()
          Gets the output buffer size.
 java.io.OutputStream getOutputStream()
          Returns an output stream.
 int getParity()
          Get the currently configured parity setting.
 int getReceiveFramingByte()
          Gets the current byte used for receive framing.
 int getReceiveThreshold()
          Gets the integer value of the receive threshold.
 int getReceiveTimeout()
          Gets the integer value of the receive timeout.
 int getStopBits()
          Gets the currently defined stop bits.
 boolean isCD()
          Gets the state of the CD (Carrier Detect) bit in the UART, if supported by the underlying implementation.
 boolean isCTS()
          Gets the state of the CTS (Clear To Send) bit in the UART, if supported by the underlying implementation.
 boolean isDSR()
          Gets the state of the DSR (Data Set Ready) bit in the UART, if supported by the underlying implementation.
 boolean isDTR()
          Gets the state of the DTR (Data Terminal Ready) bit in the UART, if supported by the underlying implementation.
 boolean isReceiveFramingEnabled()
          Checks if receive framing is enabled.
 boolean isReceiveThresholdEnabled()
          Checks if receive threshold is enabled.
 boolean isReceiveTimeoutEnabled()
          Checks if receive timeout is enabled.
 boolean isRI()
          Gets the state of the RI (Ring Indicator) bit in the UART, if supported by the underlying implementation.
 boolean isRTS()
          Gets the state of the RTS (Request To Send) bit in the UART, if supported by the underlying implementation.
private  int nativeAvailable(int port_fd)
           
private  int nativeCheckBreak(int port_fd)
           
private  int nativeCheckParityErrors(int port_fd)
           
private  void nativeClosePort(int port_fd)
           
private  int nativeFlush(int port_fd)
           
private  int nativeGetBaudRate(int port_fd)
           
private  int nativeGetDataBits(int port_fd)
           
private  int nativeGetFlowControlMode(int port_fd)
           
private  int nativeGetParity(int port_fd)
           
private  int nativeGetStatusFlags(int port_fd)
           
private  int nativeGetStopBits(int port_fd)
           
private  int nativeOpenPort(java.lang.String name)
           
private  int nativeRead(int port_fd, byte[] buf, int offset, int len, int timeout, int threshold)
           
private  int nativeReaderThread(int port_fd)
           
private  void nativeSendBreak(int port_fd, int millis)
           
private  void nativeSetDTR(int port_fd, boolean dtr)
           
private  void nativeSetFramingByte(int port_fd, int framingByte)
           
private  void nativeSetRTS(int port_fd, boolean rts)
           
private  void nativeSetSerialPortParams(int port_fd, int baudRate, int dataBits, int stopBits, int parity, int flowControl)
           
private  void nativeWaitForEvent(int port_fd)
           
private  int nativeWrite(int port_fd, byte[] buf, int offset, int len)
           
 void notifyOnBreakInterrupt(boolean enable)
          Expresses interest in receiving notification when there is a break interrupt on the line.
 void notifyOnCarrierDetect(boolean enable)
          Expresses interest in receiving notification when the CD (Carrier Detect) bit changes.
 void notifyOnCTS(boolean enable)
          Expresses interest in receiving notification when the CTS (Clear To Send) bit changes.
 void notifyOnDataAvailable(boolean enable)
          Expresses interest in receiving notification when input data is available.
 void notifyOnDSR(boolean enable)
          Expresses interest in receiving notification when the DSR (Data Set Ready) bit changes.
 void notifyOnFramingError(boolean enable)
          Expresses interest in receiving notification when there is a framing error.
 void notifyOnOutputEmpty(boolean enable)
          Expresses interest in receiving notification when the output buffer is empty.
 void notifyOnOverrunError(boolean enable)
          Expresses interest in receiving notification when there is an overrun error.
 void notifyOnParityError(boolean enable)
          Expresses interest in receiving notification when there is a parity error.
 void notifyOnRingIndicator(boolean enable)
          Expresses interest in receiving notification when the RI (Ring Indicator) bit changes.
 void removeEventListener()
          Deregisters event listener registered using addEventListener.
 void sendBreak(int millis)
          Sends a break of millis milliseconds duration.
 void setDTR(boolean dtr)
          Sets or clears the DTR (Data Terminal Ready) bit in the UART, if supported by the underlying implementation.
 void setFlowControlMode(int FlowControl)
          Sets the flow control mode.
 void setInputBufferSize(int size)
          Sets the input buffer size.
 void setOutputBufferSize(int size)
          Sets the output buffer size.
 void setRTS(boolean rts)
          Sets or clears the RTS (Request To Send) bit in the UART, if supported by the underlying implementation.
 void setSerialPortParams(int baudrate, int dataBits, int stopBits, int parity)
          Sets serial port parameters.
 
Methods inherited from class javax.comm.SerialPort
setRcvFifoTrigger
 
Methods inherited from class javax.comm.CommPort
getName, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

port_fd

private int port_fd

rcvThreshold

private int rcvThreshold

rcvTimeout

private int rcvTimeout

framing_byte

private int framing_byte

ibuffer_size

private int ibuffer_size

obuffer_size

private int obuffer_size

listener

private SerialPortEventListener listener

checkStatus

private LinuxSerial.SSCheckStatusThread checkStatus

readerThread

private LinuxSerial.SSReaderThread readerThread

inputStream

private LinuxSerial.SSInputStream inputStream

outputStream

private LinuxSerial.SSOutputStream outputStream

baud

private int baud

databits

private int databits

parity

private int parity

stopbits

private int stopbits

flowcontrol

private int flowcontrol

portInError

private boolean portInError

write_finished_flag

private boolean write_finished_flag

write_finished_flag_lock

private java.lang.Object write_finished_flag_lock

STATUS_DTR

private static final int STATUS_DTR
See Also:
Constant Field Values

STATUS_RTS

private static final int STATUS_RTS
See Also:
Constant Field Values

STATUS_CTS

private static final int STATUS_CTS
See Also:
Constant Field Values

STATUS_DSR

private static final int STATUS_DSR
See Also:
Constant Field Values

STATUS_RI

private static final int STATUS_RI
See Also:
Constant Field Values

STATUS_CD

private static final int STATUS_CD
See Also:
Constant Field Values

STATUS_DATA_AVAIL

private static final int STATUS_DATA_AVAIL
See Also:
Constant Field Values

STATUS_OUTPUTEMPTY

private static final int STATUS_OUTPUTEMPTY
See Also:
Constant Field Values

notificationMask

private int notificationMask

NOTIFY_DataAvailable

private static final int NOTIFY_DataAvailable
See Also:
Constant Field Values

NOTIFY_OutputEmpty

private static final int NOTIFY_OutputEmpty
See Also:
Constant Field Values

NOTIFY_CTS

private static final int NOTIFY_CTS
See Also:
Constant Field Values

NOTIFY_DSR

private static final int NOTIFY_DSR
See Also:
Constant Field Values

NOTIFY_RingIndicator

private static final int NOTIFY_RingIndicator
See Also:
Constant Field Values

NOTIFY_CarrierDetect

private static final int NOTIFY_CarrierDetect
See Also:
Constant Field Values

NOTIFY_OverrunError

private static final int NOTIFY_OverrunError
See Also:
Constant Field Values

NOTIFY_ParityError

private static final int NOTIFY_ParityError
See Also:
Constant Field Values

NOTIFY_FramingError

private static final int NOTIFY_FramingError
See Also:
Constant Field Values

NOTIFY_BreakInterrupt

private static final int NOTIFY_BreakInterrupt
See Also:
Constant Field Values
Constructor Detail

LinuxSerial

public LinuxSerial(java.lang.String theName)
            throws java.io.IOException
Method Detail

nativeOpenPort

private int nativeOpenPort(java.lang.String name)
                    throws java.io.IOException
Throws:
java.io.IOException

getBaudRate

public int getBaudRate()
Description copied from class: SerialPort
Gets the currently configured baud rate.

Specified by:
getBaudRate in class SerialPort
Returns:
integer value indicating the baud rate

nativeGetBaudRate

private int nativeGetBaudRate(int port_fd)

getDataBits

public int getDataBits()
Description copied from class: SerialPort
Gets the currently configured number of data bits.

Specified by:
getDataBits in class SerialPort
Returns:
integer that can be equal to DATABITS_5, DATABITS_6, DATABITS_7, or DATABITS_8

nativeGetDataBits

private int nativeGetDataBits(int port_fd)

getStopBits

public int getStopBits()
Description copied from class: SerialPort
Gets the currently defined stop bits.

Specified by:
getStopBits in class SerialPort
Returns:
integer that can be equal to STOPBITS_1, STOPBITS_2, or STOPBITS_1_5

nativeGetStopBits

private int nativeGetStopBits(int port_fd)

getParity

public int getParity()
Description copied from class: SerialPort
Get the currently configured parity setting.

Specified by:
getParity in class SerialPort
Returns:
integer that can be equal to PARITY_NONE, PARITY_ODD, PARITY_EVEN, PARITY_MARK or PARITY_SPACE.

nativeGetParity

private int nativeGetParity(int port_fd)

sendBreak

public void sendBreak(int millis)
Description copied from class: SerialPort
Sends a break of millis milliseconds duration. Note that it may not be possible to time the duration of the break under certain Operating Systems. Hence this parameter is advisory.

Specified by:
sendBreak in class SerialPort
Parameters:
millis - duration of break to send

nativeSendBreak

private void nativeSendBreak(int port_fd,
                             int millis)

getFlowControlMode

public int getFlowControlMode()
Description copied from class: SerialPort
Gets the currently configured flow control mode.

Specified by:
getFlowControlMode in class SerialPort
Returns:
an integer bitmask of the modes FLOWCONTROL_NONE, FLOWCONTROL_RTSCTS_IN, FLOWCONTROL_RTSCTS_OUT, FLOWCONTROL_XONXOFF_IN, and FLOWCONTROL_XONXOFF_OUT.

nativeGetFlowControlMode

private int nativeGetFlowControlMode(int port_fd)

getInputBufferSize

public int getInputBufferSize()
Description copied from class: CommPort
Gets the input buffer size. Note that this method is advisory and the underlying OS may choose not to report correct values for the buffer size.

Specified by:
getInputBufferSize in class CommPort
Returns:
input buffer size currently in use

setInputBufferSize

public void setInputBufferSize(int size)
Description copied from class: CommPort
Sets the input buffer size. Note that this is advisory and memory availability may determine the ultimate buffer size used by the driver.

Specified by:
setInputBufferSize in class CommPort
Parameters:
size - size of the input buffer

getOutputBufferSize

public int getOutputBufferSize()
Description copied from class: CommPort
Gets the output buffer size. Note that this method is advisory and the underlying OS may choose not to report correct values for the buffer size.

Specified by:
getOutputBufferSize in class CommPort
Returns:
output buffer size currently in use

disableReceiveTimeout

public void disableReceiveTimeout()
Description copied from class: CommPort
Disables receive timeout.

Specified by:
disableReceiveTimeout in class CommPort

enableReceiveTimeout

public void enableReceiveTimeout(int timeout)
                          throws UnsupportedCommOperationException
Description copied from class: CommPort
Enables receive timeout, if this feature is supported by the driver. When the receive timeout condition becomes true, a read from the input stream for this port will return immediately.

enableReceiveTimeout is an advisory method which the driver may not implement. By default, receive timeout is not enabled.

An application can determine whether the driver supports this feature by first calling the enableReceiveTimeout method and then calling the isReceiveTimeout method. If isReceiveTimeout still returns false, then receive timeout is not supported by the driver.

See getInputStream for description of exact behaviour.

Specified by:
enableReceiveTimeout in class CommPort
Parameters:
timeout - when this many milliseconds have elapsed, return immediately from read, regardless of bytes in input buffer.

Throws:
UnsupportedCommOperationException - is thrown if receive timeout is not supported by the underlying driver.

getReceiveTimeout

public int getReceiveTimeout()
Description copied from class: CommPort
Gets the integer value of the receive timeout. If the receive timeout is disabled or not supported by the driver, then the value returned is meaningless.

Specified by:
getReceiveTimeout in class CommPort
Returns:
number of milliseconds in receive timeout

isReceiveTimeoutEnabled

public boolean isReceiveTimeoutEnabled()
Description copied from class: CommPort
Checks if receive timeout is enabled.

Specified by:
isReceiveTimeoutEnabled in class CommPort
Returns:
boolean true if the driver supports receive timeout.

setOutputBufferSize

public void setOutputBufferSize(int size)
Description copied from class: CommPort
Sets the output buffer size. Note that this is advisory and memory availability may determine the ultimate buffer size used by the driver.

Specified by:
setOutputBufferSize in class CommPort
Parameters:
size - size of the output buffer

isCD

public boolean isCD()
Description copied from class: SerialPort
Gets the state of the CD (Carrier Detect) bit in the UART, if supported by the underlying implementation.

Specified by:
isCD in class SerialPort

isCTS

public boolean isCTS()
Description copied from class: SerialPort
Gets the state of the CTS (Clear To Send) bit in the UART, if supported by the underlying implementation.

Specified by:
isCTS in class SerialPort

isDSR

public boolean isDSR()
Description copied from class: SerialPort
Gets the state of the DSR (Data Set Ready) bit in the UART, if supported by the underlying implementation.

Specified by:
isDSR in class SerialPort

isDTR

public boolean isDTR()
Description copied from class: SerialPort
Gets the state of the DTR (Data Terminal Ready) bit in the UART, if supported by the underlying implementation.

Specified by:
isDTR in class SerialPort

isRI

public boolean isRI()
Description copied from class: SerialPort
Gets the state of the RI (Ring Indicator) bit in the UART, if supported by the underlying implementation.

Specified by:
isRI in class SerialPort

isRTS

public boolean isRTS()
Description copied from class: SerialPort
Gets the state of the RTS (Request To Send) bit in the UART, if supported by the underlying implementation.

Specified by:
isRTS in class SerialPort

nativeGetStatusFlags

private int nativeGetStatusFlags(int port_fd)

setDTR

public void setDTR(boolean dtr)
Description copied from class: SerialPort
Sets or clears the DTR (Data Terminal Ready) bit in the UART, if supported by the underlying implementation.

Specified by:
setDTR in class SerialPort
Parameters:
dtr -
  • true: set DTR
  • false: clear DTR

nativeSetDTR

private void nativeSetDTR(int port_fd,
                          boolean dtr)

setRTS

public void setRTS(boolean rts)
Description copied from class: SerialPort
Sets or clears the RTS (Request To Send) bit in the UART, if supported by the underlying implementation.

Specified by:
setRTS in class SerialPort
Parameters:
rts -
  • true: set RTS
  • false: clear RTS

nativeSetRTS

private void nativeSetRTS(int port_fd,
                          boolean rts)

isReceiveFramingEnabled

public boolean isReceiveFramingEnabled()
Description copied from class: CommPort
Checks if receive framing is enabled.

Specified by:
isReceiveFramingEnabled in class CommPort
Returns:
boolean true if the driver supports receive framing.

enableReceiveFraming

public void enableReceiveFraming(int framingByte)
                          throws UnsupportedCommOperationException
Description copied from class: CommPort
Enables receive framing, if this feature is supported by the driver. When the receive framing condition becomes true, a read from the input stream for this port will return immediately.

enableReceiveFraming is an advisory method which the driver may not implement. By default, receive framing is not enabled.

An application can determine whether the driver supports this feature by first calling the enableReceiveFraming method and then calling the isReceiveFramingEnabled method. If isReceiveFramingEnabled still returns false, then receive framing is not supported by the driver.

Note: As implemented in this method, framing is not related to bit-level framing at the hardware level, and is not associated with data errors.

Specified by:
enableReceiveFraming in class CommPort
Parameters:
framingByte - this byte in the input stream suggests the end of the received frame. Blocked reads will return immediately. Only the low 8 bits of framingByte are used while the upper 24 bits are masked off. A value outside the range of 0-255 will be converted to the value of its lowest 8 bits.

Throws:
UnsupportedCommOperationException - is thrown if receive timeout is not supported by the underlying driver.

disableReceiveFraming

public void disableReceiveFraming()
Description copied from class: CommPort
Disables receive framing.

Specified by:
disableReceiveFraming in class CommPort

getReceiveFramingByte

public int getReceiveFramingByte()
Description copied from class: CommPort
Gets the current byte used for receive framing. If the receive framing is disabled or not supported by the driver, then the value returned is meaningless. The return value of getReceiveFramingByte is an integer, the low 8 bits of which represent the current byte used for receive framing.

Note: As implemented in this method, framing is not related to bit-level framing at the hardware level, and is not associated with data errors.

Specified by:
getReceiveFramingByte in class CommPort
Returns:
integer current byte used for receive framing

nativeSetFramingByte

private void nativeSetFramingByte(int port_fd,
                                  int framingByte)

isReceiveThresholdEnabled

public boolean isReceiveThresholdEnabled()
Description copied from class: CommPort
Checks if receive threshold is enabled.

Specified by:
isReceiveThresholdEnabled in class CommPort
Returns:
boolean true if the driver supports receive threshold.

enableReceiveThreshold

public void enableReceiveThreshold(int thresh)
                            throws UnsupportedCommOperationException
Description copied from class: CommPort
Enables receive threshold, if this feature is supported by the driver. When the receive threshold condition becomes true, a read from the input stream for this port will return immediately.

enableReceiveThreshold is an advisory method which the driver may not implement. By default, receive threshold is not enabled.

An application can determine whether the driver supports this feature by first calling the enableReceiveThreshold method and then calling the isReceiveThresholdEnabled method. If isReceiveThresholdEnabled still returns false, then receive threshold is not supported by the driver. If the driver does not implement this feature, it will return from blocking reads at an appropriate time.

See getInputStream for description of exact behaviour.

Specified by:
enableReceiveThreshold in class CommPort
Parameters:
thresh - when this many bytes are in the input buffer, return immediately from read.

Throws:
UnsupportedCommOperationException - is thrown if receive threshold is not supported by the underlying driver.

disableReceiveThreshold

public void disableReceiveThreshold()
Description copied from class: CommPort
Disables receive threshold.

Specified by:
disableReceiveThreshold in class CommPort

getReceiveThreshold

public int getReceiveThreshold()
Description copied from class: CommPort
Gets the integer value of the receive threshold. If the receive threshold is disabled or not supported by the driver, then the value returned is meaningless.

Specified by:
getReceiveThreshold in class CommPort
Returns:
number of bytes for receive threshold

setSerialPortParams

public void setSerialPortParams(int baudrate,
                                int dataBits,
                                int stopBits,
                                int parity)
                         throws UnsupportedCommOperationException
Description copied from class: SerialPort
Sets serial port parameters.

Specified by:
setSerialPortParams in class SerialPort
Parameters:
baudrate - If the baudrate passed in by the application is unsupported by the driver, the driver will throw an UnsupportedCommOperationException
dataBits -
  • DATABITS_5: 5 bits
  • DATABITS_6: 6 bits
  • DATABITS_7: 7 bits
  • DATABITS_8: 8 bits
stopBits -
  • STOPBITS_1: 1 stop bit
  • STOPBITS_2: 2 stop bits
  • STOPBITS_1_5: 1.5 stop bits
parity -
  • PARITY_NONE: no parity
  • PARITY_ODD: odd parity
  • PARITY_EVEN: even parity
  • PARITY_MARK: mark parity
  • PARITY_SPACE: space parity
Throws:
UnsupportedCommOperationException - if any of the above parameters are specified incorrectly. All four of the parameters will revert to the values before the call was made.

DEFAULT: 9600 baud, 8 data bits, 1 stop bit, no parity


nativeSetSerialPortParams

private void nativeSetSerialPortParams(int port_fd,
                                       int baudRate,
                                       int dataBits,
                                       int stopBits,
                                       int parity,
                                       int flowControl)

setFlowControlMode

public void setFlowControlMode(int FlowControl)
                        throws UnsupportedCommOperationException
Description copied from class: SerialPort
Sets the flow control mode.

Specified by:
setFlowControlMode in class SerialPort
Parameters:
FlowControl - Can be a bitmask combination of
  • FLOWCONTROL_NONE: no flow control
  • FLOWCONTROL_RTSCTS_IN: RTS/CTS (hardware) flow control for input
  • FLOWCONTROL_RTSCTS_OUT: RTS/CTS (hardware) flow control for output
  • FLOWCONTROL_XONXOFF_IN: XON/XOFF (software) flow control for input
  • FLOWCONTROL_XONXOFF_OUT: XON/XOFF (software) flow control for output
    Throws:
    UnsupportedCommOperationException - if any of the flow control mode was not supported by the underline OS, or if input and output flow control are set to different values, i.e. one hardware and one software. The flow control mode will revert to the value before the call was made.

notifyOnBreakInterrupt

public void notifyOnBreakInterrupt(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when there is a break interrupt on the line.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnBreakInterrupt in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnCarrierDetect

public void notifyOnCarrierDetect(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when the CD (Carrier Detect) bit changes.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnCarrierDetect in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnCTS

public void notifyOnCTS(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when the CTS (Clear To Send) bit changes.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnCTS in class SerialPort
Parameters:
enable -
  • true: enable notification
  • >
>

notifyOnDataAvailable

public void notifyOnDataAvailable(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when input data is available. This may be used to drive asynchronous input. When data is available in the input buffer, this event is propagated to the listener registered using addEventListener.

The event will be generated once when new data arrive at the serial port. Even if the user doesn't read the data, it won't be generated again until next time new data arrive.

Specified by:
notifyOnDataAvailable in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnDSR

public void notifyOnDSR(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when the DSR (Data Set Ready) bit changes.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnDSR in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnFramingError

public void notifyOnFramingError(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when there is a framing error.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnFramingError in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnOutputEmpty

public void notifyOnOutputEmpty(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when the output buffer is empty. This may be used to drive asynchronous output. When the output buffer becomes empty, this event is propagated to the listener registered using addEventListener. The event will be generated after a write is completed, when the system buffer becomes empty again.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnOutputEmpty in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnOverrunError

public void notifyOnOverrunError(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when there is an overrun error.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnOverrunError in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnParityError

public void notifyOnParityError(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when there is a parity error.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnParityError in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

notifyOnRingIndicator

public void notifyOnRingIndicator(boolean enable)
Description copied from class: SerialPort
Expresses interest in receiving notification when the RI (Ring Indicator) bit changes.

This notification is hardware dependent and may not be supported by all implementations.

Specified by:
notifyOnRingIndicator in class SerialPort
Parameters:
enable -
  • true: enable notification
  • false: disable notification

close

public void close()
Description copied from class: CommPort
Closes the communications port. The application must call close when it is done with the port. Notification of this ownership change will be propagated to all classes registered using addPortOwnershipListener.

Overrides:
close in class CommPort

nativeClosePort

private void nativeClosePort(int port_fd)

nativeAvailable

private int nativeAvailable(int port_fd)

nativeRead

private int nativeRead(int port_fd,
                       byte[] buf,
                       int offset,
                       int len,
                       int timeout,
                       int threshold)

nativeWrite

private int nativeWrite(int port_fd,
                        byte[] buf,
                        int offset,
                        int len)

nativeFlush

private int nativeFlush(int port_fd)

nativeWaitForEvent

private void nativeWaitForEvent(int port_fd)

nativeCheckBreak

private int nativeCheckBreak(int port_fd)

nativeCheckParityErrors

private int nativeCheckParityErrors(int port_fd)

addEventListener

public void addEventListener(SerialPortEventListener lsnr)
                      throws java.util.TooManyListenersException
Description copied from class: SerialPort
Registers a SerialPortEventListener object to listen for SerialEvents. Interest in specific events may be expressed using the notifyOnXXX calls. The serialEvent method of SerialPortEventListener will be called with a SerialEvent object describing the event.

The current implementation only allows one listener per SerialPort. Once a listener is registered, subsequent call attempts to addEventListener will throw a TooManyListenersException without effecting the listener already registered.

All the events received by this listener are generated by one dedicated thread that belongs to the SerialPort object. After the port is closed, no more event will be generated. Another call to open() of the port's CommPortIdentifier object will return a new CommPort object, and the lsnr has to be added again to the new CommPort object to receive event from this port.

Specified by:
addEventListener in class SerialPort
Parameters:
lsnr - The SerialPortEventListener object whose serialEvent method will be called with a SerialEvent describing the event.

Throws:
java.util.TooManyListenersException - If an initial attempt to attach a listener succeeds, subsequent attempts will throw TooManyListenersException without effecting the first listener.

removeEventListener

public void removeEventListener()
Description copied from class: SerialPort
Deregisters event listener registered using addEventListener.

This is done automatically at port close.

Specified by:
removeEventListener in class SerialPort

getInputStream

public java.io.InputStream getInputStream()
                                   throws java.io.IOException
Description copied from class: CommPort
Returns an input stream. This is the only way to receive data from the communications port. If the port is unidirectional and doesn't support receiving data, then getInputStream returns null.

The read behaviour of the input stream returned by getInputStream depends on combination of the threshold and timeout values. The possible behaviours are described in the table below:

Threshold Timeout Read Buffer Size Read Behaviour
State Value State Value
disabled - disabled - n bytes block until any data is available
enabled m bytes disabled - n bytes block until min(m,n) bytes are available
disabled - enabled x ms n bytes block for x ms or until any data is available
enabled m bytes enabled x ms n bytes block for x ms or until min(m,n) bytes are available

Note, however, that framing errors may cause the Timeout and Threshold values to complete prematurely without raising an exception.

Enabling the Timeout OR Threshold with a value a zero is a special case. This causes the underlying driver to poll for incoming data instead being event driven. Otherwise, the behaviour is identical to having both the Timeout and Threshold disabled.

Specified by:
getInputStream in class CommPort
Returns:
InputStream object that can be used to read from the port
Throws:
java.io.IOException - if an I/O error occurred

getOutputStream

public java.io.OutputStream getOutputStream()
                                     throws java.io.IOException
Description copied from class: CommPort
Returns an output stream. This is the only way to send data to the communications port. If the port is unidirectional and doesn't support sending data, then getOutputStream returns null.

Specified by:
getOutputStream in class CommPort
Returns:
OutputStream object that can be used to write to the port
Throws:
java.io.IOException - if an I/O error occurred

nativeReaderThread

private int nativeReaderThread(int port_fd)