res

package module
v0.3.4 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	InvalidCallbackIndex = -1
)

Variables

This section is empty.

Functions

func AddCommonRes

func AddCommonRes(item IObject) error

func AddScalarCallback added in v0.3.0

func AddScalarCallback[T any](s *ScalarCallbackManager, scalar IScalar[T], cb WatchCallback[T]) error

func NewRangeScalar

func NewRangeScalar[T rangeScalarType](name, desp string, min, max, pos T) *rangeScalar[T]

func RegisterCommonUpdateResourceCallback added in v0.3.0

func RegisterCommonUpdateResourceCallback(f updateScalarCallback) error

func RemoveAllScalarCallbacks added in v0.3.0

func RemoveAllScalarCallbacks(s *ScalarCallbackManager)

func SetCommonDelegate

func SetCommonDelegate(d *ResDelegate) error

func UpdatePosition added in v0.3.0

func UpdatePosition(t TransitionMatrix, p Position) error

func UpdateRotation added in v0.3.0

func UpdateRotation(t TransitionMatrix, r RotationMatrix) error

Types

type Axis

type Axis[T rangeScalarType] struct {
	EnabledValue bool
	// should be sync callback function, when the callback finished, the real process finished
	EnableCb enableCallback
	/* These two callbacks can be sync or async callback function, but MoveAbsCb and MoveRelCb should be the same type.
	   If they are sync functions, AutoStartMove flag and AutoStopMove flag are prefered to be true,
	   which means the Runningxxx flags are automatically maintained.
	   If they are async functions, AutoStartMove flag and AutoStopMove flag are prefered to be false,
	   which means you need to maintain the Runningxxx flags by StartMove/StopMove manually.
	*/
	MoveAbsCb moveCallback[T]
	MoveRelCb moveCallback[T]

	// should be sync callback function, when the callback finished, the real process finished
	StopCb          func() error
	Running         bool
	RunningPositive bool
	RunningNegative bool
	// should be sync callback function, when the callback finished, the real process finished
	GoHomeCb           gohomeCallback
	GoHomeDone         bool
	Homing             bool
	MaxLimit, MinLimit bool
	AutoStartMove      bool
	AutoStopMove       bool
	// contains filtered or unexported fields
}

func NewAxis

func NewAxis[T rangeScalarType](name, desp string, min, max, pos T) *Axis[T]

func NewAxisWithCallbacks

func NewAxisWithCallbacks[T rangeScalarType](name, desp string, min, max, pos T, enableCb enableCallback, goHomeCb gohomeCallback, absMoveCb moveCallback[T], relMoveCb moveCallback[T]) *Axis[T]

func NewDependentAxis

func NewDependentAxis[T rangeScalarType](name, desp string, min, max, pos T, lock *sync.Mutex) *Axis[T]

func NewDependentAxisWithCallbacks

func NewDependentAxisWithCallbacks[T rangeScalarType](name, desp string, min, max, pos T, lock *sync.Mutex, enableCb enableCallback, goHomeCb gohomeCallback, absMoveCb moveCallback[T], relMoveCb moveCallback[T]) *Axis[T]

func NewDependentTestAxis

func NewDependentTestAxis[T rangeScalarType](name, desp string, min, max, pos T, lock *sync.Mutex) *Axis[T]

func NewTestAxis

func NewTestAxis[T rangeScalarType](name, desp string, min, max, pos T) *Axis[T]

func (*Axis[T]) Enable

func (a *Axis[T]) Enable(val bool) error

func (*Axis[T]) Enabled

func (a *Axis[T]) Enabled() bool

func (Axis) GetMaxPos

func (r Axis) GetMaxPos() T

func (Axis) GetMinPos

func (r Axis) GetMinPos() T

func (Axis) GetPos

func (r Axis) GetPos() T

func (*Axis[T]) GoHome

func (a *Axis[T]) GoHome(positiveDir bool) error

func (*Axis[T]) IsHoming

func (a *Axis[T]) IsHoming() bool

func (*Axis[T]) IsRunning

func (a *Axis[T]) IsRunning() bool

func (*Axis[T]) IsRunningNegative

func (a *Axis[T]) IsRunningNegative() bool

func (*Axis[T]) IsRunningPositive

func (a *Axis[T]) IsRunningPositive() bool

func (*Axis[T]) MaxLimitTriggered

func (a *Axis[T]) MaxLimitTriggered() bool

func (*Axis[T]) MinLimitTriggered

func (a *Axis[T]) MinLimitTriggered() bool

func (*Axis[T]) MoveAbsolute

func (a *Axis[T]) MoveAbsolute(pos T) error

func (*Axis[T]) MoveRelative

func (a *Axis[T]) MoveRelative(inc T) error

func (*Axis[T]) SetAutoMoveFlagPolocy added in v0.3.4

func (a *Axis[T]) SetAutoMoveFlagPolocy(autoStart, autoStop bool)

func (*Axis[T]) StartMove added in v0.3.4

func (a *Axis[T]) StartMove(dirIsPositive bool)

func (*Axis[T]) Stop added in v0.3.4

func (a *Axis[T]) Stop() error

func (*Axis[T]) StopMove added in v0.3.4

func (a *Axis[T]) StopMove()

func (*Axis[T]) UpdateMaxLimit

func (a *Axis[T]) UpdateMaxLimit(val bool)

func (*Axis[T]) UpdateMinLimit

func (a *Axis[T]) UpdateMinLimit(val bool)

type DoubleAxis

type DoubleAxis = IAxis[float64]

type FloatAxis

type FloatAxis = IAxis[float32]

type IAxis

type IAxis[T rangeScalarType] interface {
	IRangeScalar[T]
	Enabled() bool
	Enable(bool) error
	MoveAbsolute(pos T) error
	MoveRelative(inc T) error
	IsRunning() bool
	IsHoming() bool
	GoHome(bool) error
	MaxLimitTriggered() bool
	MinLimitTriggered() bool
	IsRunningPositive() bool
	IsRunningNegative() bool
	Stop() error
}

func GetAxis

func GetAxis[T rangeScalarType](r IResProvider, name string) IAxis[T]

func GetCommonAxis

func GetCommonAxis[T rangeScalarType](name string) IAxis[T]

type IMultiAxesMachine added in v0.3.0

type IMultiAxesMachine interface {
	IObject
	IResProvider
	GetAxesCnt() int
	GetAxis(i int) IAxis[float64]
	GetAxesPosition() []float64
	SetAxesPosition([]float64) error
	GetAxesPositionScalar() IWritableScalar[[]float64]
	Stop() error

	GetBasePosition() Position
	SetBasePosition(p Position)
	GetBaseRotation() RotationMatrix
	SetBaseRotation(r RotationMatrix)

	GetBaseTransition() TransitionMatrix
	SetBaseTransition(t TransitionMatrix)

	GetEndPosition() Position
	GetEndRotation() RotationMatrix
	GetEndTransition() TransitionMatrix

	GetEndPositionScalar() IWritableScalar[Position]
	GetEndRotationScalar() IWritableScalar[RotationMatrix]
	GetEndTransitionScalar() IWritableScalar[TransitionMatrix]
}

func GetCommonMultiAxesMachine added in v0.3.3

func GetCommonMultiAxesMachine(name string) IMultiAxesMachine

func GetMultiAxesMachine added in v0.3.0

func GetMultiAxesMachine(r IResProvider, name string) IMultiAxesMachine

type IObject

type IObject interface {
	Name() string
	Description() string
	Type() string
}

type IRangeScalar

type IRangeScalar[T rangeScalarType] interface {
	IObject
	GetPos() T
	GetMaxPos() T
	GetMinPos() T
}

type IResProvider added in v0.3.2

type IResProvider interface {
	GetItem(string, string) any
	SetDelegate(d *ResDelegate) error
	RegisterUpdateResourceCallback(f updateScalarCallback) error
}

type IResStorage added in v0.3.2

type IResStorage interface {
	AddRes(IObject) error
}

type IScalar

type IScalar[T ScalarType] interface {
	IObject
	GetValue() T
	AddWatchCallback(WatchCallback[T]) (int, error)
	RemoveWatchCallback(cbIndex int) error
}

只读变量接口

func GetCommonScalar

func GetCommonScalar[T ScalarType](name string) IScalar[T]

func GetScalar

func GetScalar[T ScalarType](r IResProvider, name string) IScalar[T]

func NewScalarWrapper

func NewScalarWrapper[T ScalarType](name, desp string, s IScalar[T], read ValueWrapper[T]) IScalar[T]

type IScalarHelper

type IScalarHelper[T ScalarType] interface {
	IScalar[T]
	UpdateValue(T)
}

用于后台管理的scalar

func NewScalar

func NewScalar[T ScalarType](name, desp string, val T) IScalarHelper[T]

创建新的只读变量

type IWritableScalar

type IWritableScalar[T ScalarType] interface {
	IScalar[T]
	SetValue(T) error
}

可写变量接口

func GetCommonWritableScalar

func GetCommonWritableScalar[T ScalarType](name string) IWritableScalar[T]

func GetWritableScalar

func GetWritableScalar[T ScalarType](r IResProvider, name string) IWritableScalar[T]

func NewWritableScalarWrapper

func NewWritableScalarWrapper[T ScalarType](name, desp string, s IWritableScalar[T], read, write ValueWrapper[T]) IWritableScalar[T]

type IWritableScalarHelper

type IWritableScalarHelper[T ScalarType] interface {
	IWritableScalar[T]
	UpdateValue(T)
	SetWriteCallback(WriteCallback[T]) error
}

func NewWritableScalar

func NewWritableScalar[T ScalarType](name, desp string, val T) IWritableScalarHelper[T]

创建新的可写变量

type IntAxis

type IntAxis = IAxis[int]

type MultiAxesMachine added in v0.3.0

type MultiAxesMachine struct {
	Object
	IResProvider
	Res *ResManager

	EndPosCalcuCb func([]float64) (RotationMatrix, Position)
	BaseTransMat  TransitionMatrix

	AxesPositioin IWritableScalarHelper[[]float64]
	EndPosition   IWritableScalarHelper[Position]
	EndRotation   IWritableScalarHelper[RotationMatrix]
	EndTransition IWritableScalarHelper[TransitionMatrix]

	StopCb func() error
	// contains filtered or unexported fields
}

func NewMultiAxesMachine added in v0.3.0

func NewMultiAxesMachine(name, desp string, axes []*Axis[float64]) *MultiAxesMachine

func (*MultiAxesMachine) GetAxesCnt added in v0.3.0

func (m *MultiAxesMachine) GetAxesCnt() int

func (*MultiAxesMachine) GetAxesPosition added in v0.3.0

func (m *MultiAxesMachine) GetAxesPosition() []float64

func (*MultiAxesMachine) GetAxesPositionScalar added in v0.3.0

func (m *MultiAxesMachine) GetAxesPositionScalar() IWritableScalar[[]float64]

func (*MultiAxesMachine) GetAxis added in v0.3.0

func (m *MultiAxesMachine) GetAxis(i int) IAxis[float64]

func (*MultiAxesMachine) GetBasePosition added in v0.3.0

func (m *MultiAxesMachine) GetBasePosition() Position

func (*MultiAxesMachine) GetBaseRotation added in v0.3.0

func (m *MultiAxesMachine) GetBaseRotation() RotationMatrix

func (*MultiAxesMachine) GetBaseTransition added in v0.3.0

func (m *MultiAxesMachine) GetBaseTransition() TransitionMatrix

func (*MultiAxesMachine) GetEndPosition added in v0.3.0

func (m *MultiAxesMachine) GetEndPosition() Position

func (*MultiAxesMachine) GetEndPositionScalar added in v0.3.0

func (m *MultiAxesMachine) GetEndPositionScalar() IWritableScalar[Position]

func (*MultiAxesMachine) GetEndRotation added in v0.3.0

func (m *MultiAxesMachine) GetEndRotation() RotationMatrix

func (*MultiAxesMachine) GetEndRotationScalar added in v0.3.0

func (m *MultiAxesMachine) GetEndRotationScalar() IWritableScalar[RotationMatrix]

func (*MultiAxesMachine) GetEndTransition added in v0.3.0

func (m *MultiAxesMachine) GetEndTransition() TransitionMatrix

func (*MultiAxesMachine) GetEndTransitionScalar added in v0.3.0

func (m *MultiAxesMachine) GetEndTransitionScalar() IWritableScalar[TransitionMatrix]

func (*MultiAxesMachine) SetAxesPosition added in v0.3.0

func (m *MultiAxesMachine) SetAxesPosition(arr []float64) error

func (*MultiAxesMachine) SetBasePosition added in v0.3.0

func (m *MultiAxesMachine) SetBasePosition(p Position)

func (*MultiAxesMachine) SetBaseRotation added in v0.3.0

func (m *MultiAxesMachine) SetBaseRotation(r RotationMatrix)

func (*MultiAxesMachine) SetBaseTransition added in v0.3.0

func (m *MultiAxesMachine) SetBaseTransition(t TransitionMatrix)

func (*MultiAxesMachine) Stop added in v0.3.4

func (m *MultiAxesMachine) Stop() error

func (*MultiAxesMachine) UpdateAxesPositionList added in v0.3.0

func (m *MultiAxesMachine) UpdateAxesPositionList(arr []float64) error

func (*MultiAxesMachine) UpdateAxisPosition added in v0.3.0

func (m *MultiAxesMachine) UpdateAxisPosition(index int, pos float64) error

type Object

type Object struct {
	// contains filtered or unexported fields
}

func (Object) Description

func (o Object) Description() string

func (Object) Name

func (o Object) Name() string

func (Object) Type

func (o Object) Type() string

type Position added in v0.3.0

type Position = *mat.VecDense

func AddPosition added in v0.3.4

func AddPosition(p1, p2 Position) Position

func GetPosition added in v0.3.0

func GetPosition(t TransitionMatrix) (Position, error)

func NewPosition added in v0.3.0

func NewPosition(x, y, z float64) Position

func SubPosition added in v0.3.4

func SubPosition(p1, p2 Position) Position

type ResDelegate

type ResDelegate struct {
	// contains filtered or unexported fields
}

func NewResDelegate

func NewResDelegate() *ResDelegate

func (*ResDelegate) AddElement

func (r *ResDelegate) AddElement(src, dst string) error

func (*ResDelegate) DeleteElement

func (r *ResDelegate) DeleteElement(src string) error

func (*ResDelegate) GetElement

func (r *ResDelegate) GetElement(src string) (string, bool)

func (*ResDelegate) HasElement

func (r *ResDelegate) HasElement(src string) bool

func (*ResDelegate) UpdateElement

func (r *ResDelegate) UpdateElement(src, dst string)

type ResManager

type ResManager struct {
	// contains filtered or unexported fields
}

func NewResManager

func NewResManager() *ResManager

func (*ResManager) AddRes added in v0.3.2

func (r *ResManager) AddRes(item IObject) error

func (*ResManager) GetItem added in v0.3.2

func (r *ResManager) GetItem(key, name string) any

func (*ResManager) RegisterUpdateResourceCallback added in v0.3.0

func (r *ResManager) RegisterUpdateResourceCallback(f updateScalarCallback) error

func (*ResManager) SetDelegate

func (r *ResManager) SetDelegate(d *ResDelegate) error

type RotationMatrix added in v0.3.0

type RotationMatrix = *mat.Dense

func GetRotMatX added in v0.3.0

func GetRotMatX(theta float64) RotationMatrix

func GetRotMatY added in v0.3.0

func GetRotMatY(theta float64) RotationMatrix

func GetRotMatZ added in v0.3.0

func GetRotMatZ(theta float64) RotationMatrix

func GetRotation added in v0.3.0

func GetRotation(t TransitionMatrix) (RotationMatrix, error)

func NewRotationMatrix added in v0.3.0

func NewRotationMatrix() RotationMatrix

type ScalarCallbackManager added in v0.3.0

type ScalarCallbackManager struct {
	// contains filtered or unexported fields
}

func NewScalarCallbackManager added in v0.3.0

func NewScalarCallbackManager(f updateScalarCallback) *ScalarCallbackManager

func (*ScalarCallbackManager) RemoveAllCallbacks added in v0.3.0

func (s *ScalarCallbackManager) RemoveAllCallbacks()

func (*ScalarCallbackManager) UpdateCallbacks added in v0.3.0

func (s *ScalarCallbackManager) UpdateCallbacks()

type ScalarType

type ScalarType interface{}

type TransitionMatrix added in v0.3.0

type TransitionMatrix = *mat.Dense

func FormTransitionMatrix added in v0.3.0

func FormTransitionMatrix(r RotationMatrix, p Position) TransitionMatrix

func NewTransitionMatrix added in v0.3.0

func NewTransitionMatrix() TransitionMatrix

type ValueWrapper

type ValueWrapper[T ScalarType] func(T) T

type WatchCallback

type WatchCallback[T ScalarType] func(self IScalar[T], cur, last T)

type WriteCallback

type WriteCallback[T ScalarType] func(self IWritableScalar[T], val T) error

Jump to

Keyboard shortcuts

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