public class CAN
extends java.lang.Object
To obtain an instance of the CAN interface you have to use the
CANManager.createCAN(int)
method.
To receive frames you have to register an ICANListener
and then
start reading for the interface using the startRead
method.
To send frames use the write
method.
Modifier and Type | Method and Description |
---|---|
void |
close()
Attempts to close the CAN interface.
|
int |
getInterfaceNumber()
Retrieves the CAN interface number.
|
boolean |
isInterfaceOpen()
Gets the status of the CAN interface.
|
boolean |
isReading()
Gets the status of the read process.
|
void |
open()
Opens the CAN interface.
|
void |
registerListener(ICANListener listener)
Registers a listener to detect when a CAN message has been received.
|
void |
setBitrate(int bitrate)
Changes the bitrate of this CAN interface.
|
void |
startRead(java.util.List<CANFilter> filters)
Starts the reception procedure of CAN messages according to the specified
IDs and masks.
|
void |
stopRead()
Stops the reception procedure of CAN messages.
|
void |
unregisterListener(ICANListener listener)
Unregisters a listener to stop detecting when a CAN message has been
received.
|
void |
write(CANFrame frame)
Sends the given
CANFrame . |
public void open() throws NoSuchInterfaceException, java.io.IOException
It does nothing if the interface is already open.
java.io.IOException
- If there is an error opening the CAN interface.NoSuchInterfaceException
- If the configured interface does
not exist.close()
,
isInterfaceOpen()
public void close() throws java.io.IOException
If the read process is running, this method stops it.
java.io.IOException
- If there is an error closing the CAN interface.isInterfaceOpen()
,
open()
,
stopRead()
public boolean isInterfaceOpen()
public int getInterfaceNumber()
public boolean isReading()
true
if the read process is running, false
otherwise.public void startRead(java.util.List<CANFilter> filters) throws java.io.IOException
This method is supposed to be called once the listener is already registered.
To change the filters, use stopRead()
and then call this
method with the new list of filters to use.
This method does nothing if the read process is already running. Use
isReading()
to know the status of the process.
filters
- Array containing the desired reception IDs.java.lang.IllegalArgumentException
- If any filter in the list is null
.java.io.IOException
- If the interface is closed.java.lang.NullPointerException
- If filters == null
.isReading()
,
registerListener(ICANListener)
,
stopRead()
public void stopRead() throws java.io.IOException
java.io.IOException
- If the interface is closed.isReading()
,
startRead(List)
public void registerListener(ICANListener listener)
If the given listener is already registered, this method does nothing.
To start receiving CAN frames, the method startRead
must be
called.
listener
- The listener to be registered.java.lang.NullPointerException
- If listener == null
.isReading()
,
startRead(List)
,
unregisterListener(ICANListener)
public void unregisterListener(ICANListener listener)
If the given listener is not registered, this method does nothing.
listener
- The listener to be unregistered.java.lang.NullPointerException
- If listener == null
.registerListener(ICANListener)
public void write(CANFrame frame) throws java.io.IOException
CANFrame
.frame
- The CAN frame to be written.java.io.IOException
- If the interface is closed or there is an error writing data.java.lang.NullPointerException
- If frame == null
.isInterfaceOpen()
public void setBitrate(int bitrate) throws java.lang.IllegalArgumentException, java.lang.UnsupportedOperationException, java.io.IOException
bitrate
- New interface bitrate in Hz.java.lang.IllegalArgumentException
- If bitrate < 1
java.io.IOException
- If there is an error setting the bitrate.java.lang.UnsupportedOperationException
- If the interface does not support
bitrate changes.