1-Wire API for .NET Version 4.00
|
1-Wire temperature interface class for basic temperature measuring operations. More...
Inherits com::dalsemi::onewire::container::OneWireSensor.
Inherited by OneWireContainer10, OneWireContainer21, OneWireContainer22, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
Public Member Functions | |
boolean | hasTemperatureAlarms () |
Checks to see if this temperature measuring device has high/low trip alarms. | |
boolean | hasSelectableTemperatureResolution () |
Checks to see if this device has selectable temperature resolution. | |
double[] | getTemperatureResolutions () |
Get an array of available temperature resolutions in Celsius. | |
double | getTemperatureAlarmResolution () throws OneWireException |
Gets the temperature alarm resolution in Celsius. | |
double | getMaxTemperature () |
Gets the maximum temperature in Celsius. | |
double | getMinTemperature () |
Gets the minimum temperature in Celsius. | |
void | doTemperatureConvert (byte[] state) throws OneWireIOException, OneWireException |
Performs a temperature conversion. | |
double | getTemperature (byte[] state) throws OneWireIOException |
Gets the temperature value in Celsius from the state data retrieved from the readDevice() method. | |
double | getTemperatureAlarm (int alarmType, byte[] state) throws OneWireException |
Gets the specified temperature alarm value in Celsius from the state data retrieved from the readDevice() method. | |
double | getTemperatureResolution (byte[] state) |
Gets the current temperature resolution in Celsius from the state data retrieved from the readDevice() method. | |
void | setTemperatureAlarm (int alarmType, double alarmValue, byte[] state) throws OneWireException |
Sets the temperature alarm value in Celsius in the provided state data. | |
void | setTemperatureResolution (double resolution, byte[] state) throws OneWireException |
Sets the current temperature resolution in Celsius in the provided state data. | |
Static Public Attributes | |
static final int | ALARM_HIGH = 1 |
high temperature alarm | |
static final int | ALARM_LOW = 0 |
low temperature alarm |
1-Wire temperature interface class for basic temperature measuring operations.
This class should be implemented for each temperature type 1-Wire device.
The TemperatureContainer methods can be organized into the following categories:
Display some features of TemperatureContainer instance 'tc
':
// Read High and Low Alarms
if (!tc.hasTemperatureAlarms())
System.out.println("Temperature alarms not supported");
else
{
byte[] state = tc.readDevice();
double alarmLow = tc.getTemperatureAlarm(TemperatureContainer.ALARM_LOW, state);
double alarmHigh = tc.getTemperatureAlarm(TemperatureContainer.ALARM_HIGH, state);
System.out.println("Alarm: High = " + alarmHigh + ", Low = " + alarmLow);
} }
Gets temperature reading from a TemperatureContainer instance 'tc
':
double lastTemperature;
// get the current resolution and other settings of the device (done only once)
byte[] state = tc.readDevice();
do // loop to read the temp
{
// perform a temperature conversion
tc.doTemperatureConvert(state);
// read the result of the conversion
state = tc.readDevice();
// extract the result out of state
lastTemperature = tc.getTemperature(state);
...
}while (!done);
The reason the conversion and the reading are separated is that one may want to do a conversion without reading the result. One could take advantage of the alarm features of a device by setting a threshold and doing conversions until the device is alarming. For example:
// get the current resolution of the device
byte [] state = tc.readDevice();
// set the trips
tc.setTemperatureAlarm(TemperatureContainer.ALARM_HIGH, 50, state);
tc.setTemperatureAlarm(TemperatureContainer.ALARM_LOW, 20, state);
tc.writeDevice(state);
do // loop on conversions until an alarm occurs
{
tc.doTemperatureConvert(state);
} while (!tc.isAlarming());
Sets the temperature resolution of a TemperatureContainer instance 'tc
':
byte[] state = tc.readDevice();
if (tc.hasSelectableTemperatureResolution())
{
double[] resolution = tc.getTemperatureResolutions();
tc.setTemperatureResolution(resolution [resolution.length - 1], state);
tc.writeDevice(state);
}
void doTemperatureConvert | ( | byte[] | state | ) | throws OneWireIOException, OneWireException |
Performs a temperature conversion.
state | byte array with device state information |
OneWireException | Part could not be found [ fatal ] |
OneWireIOException | Data wasn't transferred properly [ recoverable ] |
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
double getMaxTemperature | ( | ) |
Gets the maximum temperature in Celsius.
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
double getMinTemperature | ( | ) |
Gets the minimum temperature in Celsius.
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
double getTemperature | ( | byte[] | state | ) | throws OneWireIOException |
Gets the temperature value in Celsius from the state
data retrieved from the readDevice()
method.
state | byte array with device state information |
doTemperatureConvert()
OneWireIOException | In the case of invalid temperature data |
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
double getTemperatureAlarm | ( | int | alarmType, |
byte[] | state | ||
) | throws OneWireException |
Gets the specified temperature alarm value in Celsius from the state
data retrieved from the readDevice()
method.
alarmType | valid value: ALARM_HIGH or ALARM_LOW |
state | byte array with device state information |
OneWireException | Device does not support temperature alarms |
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
double getTemperatureAlarmResolution | ( | ) | throws OneWireException |
Gets the temperature alarm resolution in Celsius.
OneWireException | Device does not support temperature alarms |
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
double getTemperatureResolution | ( | byte[] | state | ) |
Gets the current temperature resolution in Celsius from the state
data retrieved from the readDevice()
method.
state | byte array with device state information |
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
double [] getTemperatureResolutions | ( | ) |
Get an array of available temperature resolutions in Celsius.
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
boolean hasSelectableTemperatureResolution | ( | ) |
Checks to see if this device has selectable temperature resolution.
true
if this TemperatureContainer
has selectable temperature resolutionImplemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
boolean hasTemperatureAlarms | ( | ) |
Checks to see if this temperature measuring device has high/low trip alarms.
true
if this TemperatureContainer
has high/low trip alarmsImplemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
void setTemperatureAlarm | ( | int | alarmType, |
double | alarmValue, | ||
byte[] | state | ||
) | throws OneWireException |
Sets the temperature alarm value in Celsius in the provided state
data.
Use the method writeDevice()
with this data to finalize the change to the device.
alarmType | valid value: ALARM_HIGH or ALARM_LOW |
alarmValue | alarm trip value in Celsius |
state | byte array with device state information |
OneWireException | Device does not support temperature alarms |
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.
void setTemperatureResolution | ( | double | resolution, |
byte[] | state | ||
) | throws OneWireException |
Sets the current temperature resolution in Celsius in the provided state
data.
Use the method writeDevice()
with this data to finalize the change to the device.
resolution | temperature resolution in Celsius |
state | byte array with device state information |
OneWireException | Device does not support selectable temperature resolution |
Implemented in OneWireContainer10, OneWireContainer21, OneWireContainer28, OneWireContainer30, OneWireContainer41, and OneWireContainer42.