Updates to control using coroutines
This commit is contained in:
parent
700707a7a9
commit
f2d292b853
@ -143,11 +143,11 @@ abstract class DeviceDisplay<D : Device> : Component(), Connection, DeviceListen
|
||||
}
|
||||
}
|
||||
|
||||
override fun notifyDeviceStateChanged(device: Device, name: String, state: Value) {
|
||||
override fun notifyStateChanged(device: Device, name: String, state: Value) {
|
||||
bindings[name]?.invalidate()
|
||||
}
|
||||
|
||||
override fun notifyDeviceStateChanged(device: Device, name: String, state: Meta) {
|
||||
override fun notifyMetaStateChanged(device: Device, name: String, state: Meta) {
|
||||
metaBindings[name]?.invalidate()
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,11 @@ import java.time.Instant
|
||||
* Created by darksnake on 06-Dec-16.
|
||||
*/
|
||||
object ConsoleVac {
|
||||
private fun Sensor.read():Double{
|
||||
this.measure()
|
||||
|
||||
}
|
||||
|
||||
@Throws(Exception::class)
|
||||
@JvmStatic
|
||||
fun main(args: Array<String>) {
|
||||
@ -33,7 +38,7 @@ object ConsoleVac {
|
||||
var className: String = cli.getOptionValue("c") ?: throw RuntimeException("Vacuumeter class not defined")
|
||||
|
||||
if (!className.contains(".")) {
|
||||
className = "inr.numass.readvac.devices." + className
|
||||
className = "inr.numass.readvac.devices.$className"
|
||||
}
|
||||
|
||||
val name = cli.getOptionValue("n", "sensor")
|
||||
|
@ -34,6 +34,7 @@ import inr.numass.control.StorageHelper
|
||||
import kotlinx.coroutines.experimental.launch
|
||||
import kotlinx.coroutines.experimental.time.delay
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
import java.util.*
|
||||
import java.util.stream.Stream
|
||||
|
||||
@ -53,11 +54,11 @@ class VacCollectorDevice(context: Context, meta: Meta, val sensors: Collection<S
|
||||
notifyResult(it)
|
||||
}
|
||||
|
||||
override fun notifyDeviceStateChanged(device: Device, name: String, state: Value) {
|
||||
override fun notifyStateChanged(device: Device, name: String, state: Value) {
|
||||
|
||||
}
|
||||
|
||||
override fun notifyDeviceStateChanged(device: Device, name: String, state: Meta) {
|
||||
override fun notifyMetaStateChanged(device: Device, name: String, state: Meta) {
|
||||
if (name == MEASUREMENT_RESULT_STATE) {
|
||||
collector.put(device.name, state.getValue("value"))
|
||||
}
|
||||
@ -110,8 +111,8 @@ class VacCollectorDevice(context: Context, meta: Meta, val sensors: Collection<S
|
||||
}
|
||||
|
||||
|
||||
private fun notifyResult(values: Values) {
|
||||
notifyResult(produceResult(values.toMeta()))
|
||||
private fun notifyResult(values: Values, timestamp: Instant = Instant.now()) {
|
||||
super.notifyResult(values,timestamp)
|
||||
helper.push(values)
|
||||
}
|
||||
|
||||
|
@ -8,9 +8,11 @@ package inr.numass.control.readvac
|
||||
import hep.dataforge.control.devices.Device
|
||||
import hep.dataforge.control.devices.PortSensor.Companion.CONNECTED_STATE
|
||||
import hep.dataforge.control.devices.Sensor
|
||||
import hep.dataforge.kodex.stringValue
|
||||
import hep.dataforge.kodex.timeValue
|
||||
import hep.dataforge.kodex.value
|
||||
import hep.dataforge.meta.Meta
|
||||
import hep.dataforge.values.Value
|
||||
import inr.numass.control.DeviceDisplay
|
||||
import inr.numass.control.switch
|
||||
import javafx.application.Platform
|
||||
@ -48,27 +50,13 @@ open class VacDisplay : DeviceDisplay<Sensor>() {
|
||||
return VacView();
|
||||
}
|
||||
|
||||
override fun evaluateDeviceException(device: Device, message: String, exception: Throwable) {
|
||||
if (!message.isEmpty()) {
|
||||
Platform.runLater {
|
||||
status = "ERROR: $message"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMeasurementFailed(measurement: Measurement<*>, exception: Throwable) {
|
||||
Platform.runLater {
|
||||
value = "Err"
|
||||
}
|
||||
}
|
||||
|
||||
fun message(message: String) {
|
||||
Platform.runLater {
|
||||
status = message
|
||||
}
|
||||
}
|
||||
|
||||
fun onResult(res: Any, time: Instant) {
|
||||
private fun onResult(res: Any, time: Instant) {
|
||||
val result = Number::class.java.cast(res).toDouble()
|
||||
val resString = FORMAT.format(result)
|
||||
Platform.runLater {
|
||||
@ -78,21 +66,32 @@ open class VacDisplay : DeviceDisplay<Sensor>() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun notifyDeviceStateChanged(device: Device, name: String, state: Meta) {
|
||||
super.notifyDeviceStateChanged(device, name, state)
|
||||
override fun notifyMetaStateChanged(device: Device, name: String, state: Meta) {
|
||||
super.notifyMetaStateChanged(device, name, state)
|
||||
|
||||
when (name) {
|
||||
Sensor.MEASUREMENT_RESULT_STATE -> {
|
||||
val res by state.value(Sensor.RESULT_VALUE)
|
||||
val time by state.timeValue(Sensor.RESULT_TIMESTAMP)
|
||||
onResult(res, time)
|
||||
if(state.getBoolean(Sensor.RESULT_SUCCESS)) {
|
||||
val res by state.value(Sensor.RESULT_VALUE)
|
||||
val time by state.timeValue(Sensor.RESULT_TIMESTAMP)
|
||||
onResult(res, time)
|
||||
} else{
|
||||
Platform.runLater {
|
||||
value = "Err"
|
||||
}
|
||||
}
|
||||
}
|
||||
Sensor.MEASUREMENT_ERROR_STATE -> {
|
||||
|
||||
val message by state.stringValue("message")
|
||||
message(message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun notifyStateChanged(device: Device, name: String, state: Value) {
|
||||
super.notifyStateChanged(device, name, state)
|
||||
}
|
||||
|
||||
fun getTitle(): String {
|
||||
return device.meta.getString("title", device.name);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user