Alexander Nozik
7fc27c49a3
# Conflicts: # build.gradle.kts # dataforge-magix-client/src/commonMain/kotlin/hep/dataforge/control/client/magixClient.kt # magix/magix-service/src/commonMain/kotlin/hep/dataforge/magix/service/RSocketMagixEndpoint.kt |
||
---|---|---|
.github/workflows | ||
dataforge-device-core | ||
dataforge-device-serial | ||
dataforge-device-server | ||
dataforge-device-tcp | ||
dataforge-magix-client | ||
demo | ||
docs | ||
gradle/wrapper | ||
magix | ||
motors | ||
.gitignore | ||
build.gradle.kts | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
README.md | ||
settings.gradle.kts |
DataForge-control
DataForge-control is a data acquisition framework (work in progress). It is based on DataForge, a software framework for automated data processing. This repository contains a prototype of API and simple implementation of a slow control system, including a demo.
DataForge-control uses some concepts and modules of DataForge,
such as Meta
(immutable tree-like structure) and MetaItem
(which
includes a scalar value, or a tree of values, easily convertable to/from JSON
if needed).
To learn more about DataForge, please consult the following URLs:
- Kotlin multiplatform implementation of DataForge
- DataForge documentation
- Original implementation of DataForge
DataForge-control is a Kotlin-multiplatform application. Asynchronous operations are implemented with kotlinx.coroutines library.
Features
Among other things, you can:
- Describe devices and their properties.
- Collect data from devices and execute arbitrary actions supported by a device.
- Property values can be cached in the system and requested from devices as needed, asynchronously.
- Connect devices to event bus via bidirectional message flows.
dataforge-control-core
module packages
-
api
- defines API for device management. The main class here isDevice
. Generally, a Device has Properties that can be read and written. Also, some Actions can optionally be applied on a device (may or may not affect properties). -
base
- contains baselineDevice
implementationDeviceBase
and property implementation, including property asynchronous flows. -
controllers
- implements Message Controller that can be attached to the event bus, Message and Property flows.
demo
module
The demo includes a simple mock device with a few properties changing as sin
and cos
of
the current time. The device is configurable via a simple TornadoFX-based control panel.
You can run a demo by executing application/run
Gradle task.
The graphs are displayed using plotly.kt library.
Example view of a demo: