Device I/O API 1.1

Package jdk.dio.counter

Interfaces and classes for counting pulses (or events) on a digital input line.

See: Description

Package jdk.dio.counter Description

Interfaces and classes for counting pulses (or events) on a digital input line.

In order to access and control a specific pulse counter, an application should first open and obtain an PulseCounter instance for the pulse counter the application wants to access and control, using its numeric ID, name, type (interface) and/or properties:

Using its ID
 PulseCounter counter = (PulseCounter) DeviceManager.open(8);
 
Using its name and interface
 PulseCounter counter = DeviceManager.open("ENCODER", PulseCounter.class, null);
 
Once opened, an application can either start a pulse counting session using the startCounting method and retrieve the current pulse count on-the-fly by calling the PulseCounter.getCount() method; or it can start a pulse counting session with a terminal count value and a counting time interval using the PulseCounter.startCounting(int, long, jdk.dio.counter.CountingListener) and get asynchronously notified once the terminal count value has been reached or the counting time interval has expired. In both cases, the application can retrieve the current pulse count value at any time (on-the-fly) by calling the getCount.
 counter.startCounting(); // Start counting pulses
 // Perform some task...
 int count = counter.getCount(); // Retrieve the number of pulses that occurred while performing the task
 counter.stopCounting(); // Stop counting pulses
 
When done, the application should call the close method to close Pulse counter.
 counter.close();
 
The following sample codes give examples of using the counter/timer API:
 class PulseCounting implements CountingListener {
 
     private PulseCounter counter = null;
 
     public void start(int counterID) throws IOException, NonAvailableDeviceException, DeviceNotFoundException {
         counter = (PulseCounter) DeviceManager.open(counterID);
         counter.startCounting(-1, 1000, this); // Count events occuring during 1 second (without terminal count value)
     }
 
     public void countValueAvailable(CountingEvent event) {
         int count = event.getValue();
         // Handle pulse count...
     }
 
     public void stop() throws IOException {
         if (counter != null) {
             counter.stopCounting();
             counter.close();
         }
     }
 }
 

Because of performance issue, procedures handling pulse counting events, and especially event listeners, should be implemented to be as fast as possible.

Unless otherwise noted, permission and security checks that may cause a SecurityException to be thrown must be performed in priority to any other checks or operations once performed the checking of the input parameters from which the permission target names and action lists are retrieved and assembled.

Unless otherwise noted, passing a null argument to a constructor or method in any class or interface in this package will cause a NullPointerException to be thrown.

This package requires the jdk.dio.gpio package.

Since:
1.0
Device I/O API 1.1