driver

package
v0.6.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 15, 2023 License: AGPL-3.0 Imports: 19 Imported by: 0

README

驱动

驱动在Rulex里面被定义成最底层的设施,对于硬件而言,可能是个通信方式,对于软件而言,可能是个通信协议。

硬件驱动

比如串口、USB以及RJ45等直接操作硬件端口的方式,都称之为硬件驱动。

软件驱动

比如某个设备桥接的时候需要一种底层协议,比如可能是个UnixSocket或者是信号等,可能就是普通的二进制协议。

标准驱动

目前有部分厂商设备接入, 未来更多驱动可以由产商实现。或者根据不同的设备类型来自己实现个性化需求。

关于写驱动的建议

  1. 驱动永远关注“读”和“写”,而不要关注读出来的是不是对的
  2. 设备只管问驱动要数据,然后将其加工成应用格式,设备不关注读写细节
  3. 资源只管数据流向而不用管怎么来的,只管输送或者接收

综上所述,设备、资源本质上是两类东西,设备是真实物理器材,资源是逻辑存在的软件源或者目标。

现阶段支持的驱动

目前支持下面几个基础驱动

名称 版本 简介
通用modbus_rtu 1.0 modbus RTU 模式
通用modbus_tcp 1.0 modbus RTU 模式
通用串口 1.0 通用串口读写
rtu_485_ther 1.0 485温湿度传感器
tss200 1.0 多指标环境参数传感器
yk08 1.0 国产8口继电器控制器
raw_uart_driver 1.0 通用串口数据透传驱动
s1200 1.0 西门子S1200系列的DB读写驱动
usr g776 1.0 有人G776型号的4G DTU模块

提示:未来可能不会在RULEX内置其他新设备,而是通过外部插件的形式,上面表格里的这些设备可以认为是个基准示例。

Documentation

Overview

uart_driver相当于是升级版,这个是最原始的基础驱动

485 温湿度传感器驱动案例 这是个很简单的485温湿度传感器驱动, 目的是为了演示厂商如何实现自己的设备底层驱动 本驱动完成于2022年4月28日, 温湿度传感器资料请移步文档 备注:THer 的含义是 ·temperature and humidity detector· 的简写

拖车驱动

TC-S200 系列空气质量监测仪内置 PM2.5、TVOC、甲醛、CO2,温湿度等高精 度传感器套件,可通过吸顶式或壁挂安装,RS-485 接口通过 Modbus-RTU 协议进行 数据输出,通过网关组网,或配合联动模块可以用于新风联动控制。 该驱动是V0.2版本

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewModBusRtuDriver

func NewModBusRtuDriver(
	d *typex.Device,
	e typex.RuleX,
	Registers []common.RegisterRW,
	handler *modbus.RTUClientHandler,
	client modbus.Client, frequency int64) typex.XExternalDriver

func NewModBusTCPDriver

func NewModBusTCPDriver(
	d *typex.Device,
	e typex.RuleX,
	Registers []common.RegisterRW,
	handler *modbus.TCPClientHandler,
	client modbus.Client, frequency int64) typex.XExternalDriver

func NewRawUartDriver

func NewRawUartDriver(
	ctx context.Context,
	e typex.RuleX,
	device *typex.Device,
	serialPort serial.Port,
) typex.XExternalDriver

初始化一个驱动

func NewRtu485THerDriver

func NewRtu485THerDriver(d *typex.Device, e typex.RuleX,
	registers []common.RegisterRW,
	handler *modbus.RTUClientHandler,
	client modbus.Client) typex.XExternalDriver

func NewS1200Driver

func NewS1200Driver(d *typex.Device,
	e typex.RuleX,
	s7client gos7.Client,
	dbs []common.S1200Block) typex.XExternalDriver

func NewSnmpDriver

func NewSnmpDriver(
	d *typex.Device,
	e typex.RuleX,
	client *gosnmp.GoSNMP,
) typex.XExternalDriver

func NewTSS200Driver

func NewTSS200Driver(d *typex.Device, e typex.RuleX,
	registers []common.RegisterRW,
	handler *modbus.RTUClientHandler,
	client modbus.Client) typex.XExternalDriver

func NewTrailerDriver

func NewTrailerDriver(e typex.RuleX, grpcConn *grpc.ClientConn) typex.XExternalDriver

func NewUsrG776Driver

func NewUsrG776Driver(
	ctx context.Context,
	e typex.RuleX,
	device *typex.Device,
	serialPort serial.Port,
) typex.XExternalDriver

初始化一个驱动

func NewYK8RelayControllerDriver

func NewYK8RelayControllerDriver(d *typex.Device, e typex.RuleX,
	registers []common.RegisterRW,
	handler *modbus.RTUClientHandler,
	client modbus.Client) typex.XExternalDriver

Types

type TrailerDriver

type TrailerDriver struct {
	RuleEngine typex.RuleX
	// contains filtered or unexported fields
}

func (*TrailerDriver) DriverDetail

func (sc *TrailerDriver) DriverDetail() typex.DriverDetail

---------------------------------------------------

func (*TrailerDriver) Init

func (sc *TrailerDriver) Init(config map[string]string) error

func (*TrailerDriver) Read

func (sc *TrailerDriver) Read(cmd []byte, data []byte) (int, error)

* * 读取 *

func (*TrailerDriver) State

func (sc *TrailerDriver) State() typex.DriverState

func (*TrailerDriver) Stop

func (sc *TrailerDriver) Stop() error

func (*TrailerDriver) Test

func (sc *TrailerDriver) Test() error

func (*TrailerDriver) Work

func (sc *TrailerDriver) Work() error

func (*TrailerDriver) Write

func (sc *TrailerDriver) Write(cmd []byte, data []byte) (int, error)

* * 写入 *

type UsrG776Driver

type UsrG776Driver struct {
	RuleEngine typex.RuleX
	// contains filtered or unexported fields
}

func (*UsrG776Driver) DriverDetail

func (d *UsrG776Driver) DriverDetail() typex.DriverDetail

func (*UsrG776Driver) Init

func (d *UsrG776Driver) Init(map[string]string) error

func (*UsrG776Driver) Read

func (d *UsrG776Driver) Read(cmd []byte, b []byte) (int, error)

func (*UsrG776Driver) State

func (d *UsrG776Driver) State() typex.DriverState

func (*UsrG776Driver) Stop

func (d *UsrG776Driver) Stop() error

func (*UsrG776Driver) Test

func (d *UsrG776Driver) Test() error

func (*UsrG776Driver) Work

func (d *UsrG776Driver) Work() error

func (*UsrG776Driver) Write

func (d *UsrG776Driver) Write(cmd []byte, b []byte) (int, error)

type YK8RelayControllerDriver

type YK8RelayControllerDriver struct {
	RuleEngine typex.RuleX
	Registers  []common.RegisterRW
	// contains filtered or unexported fields
}

func (*YK8RelayControllerDriver) DriverDetail

func (yk8 *YK8RelayControllerDriver) DriverDetail() typex.DriverDetail

---------------------------------------------------

func (*YK8RelayControllerDriver) Init

func (*YK8RelayControllerDriver) Read

func (yk8 *YK8RelayControllerDriver) Read(cmd []byte, data []byte) (int, error)

* * 读出来的是个JSON, 记录了8个开关的状态 *

func (*YK8RelayControllerDriver) State

func (*YK8RelayControllerDriver) Stop

func (yk8 *YK8RelayControllerDriver) Stop() error

func (*YK8RelayControllerDriver) Test

func (yk8 *YK8RelayControllerDriver) Test() error

func (*YK8RelayControllerDriver) Work

func (yk8 *YK8RelayControllerDriver) Work() error

func (*YK8RelayControllerDriver) Write

func (yk8 *YK8RelayControllerDriver) Write(cmd []byte, data []byte) (int, error)

写入数据

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL