2023-11-10 16:42:00 +01:00
|
|
|
@startuml class
|
|
|
|
|
|
|
|
hide empty members
|
|
|
|
|
|
|
|
|
|
|
|
class Dolibarr {
|
|
|
|
+ String getDestination(String tagID)
|
|
|
|
+ String createStockMovement(String tagID, String warehouseId)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
package "Components" {
|
|
|
|
package "NFCReader" {
|
|
|
|
interface INFCReader {
|
|
|
|
{abstract} char* read()
|
|
|
|
{abstract} bool hasTag()
|
|
|
|
}
|
|
|
|
class RC522
|
|
|
|
RC522 .|> INFCReader
|
|
|
|
}
|
|
|
|
|
|
|
|
package "LCDScreen" {
|
|
|
|
interface ILCDScreen {
|
|
|
|
{abstract} void clearScreen()
|
|
|
|
{abstract} void draw(int x, int y, int h, int w)
|
|
|
|
{abstract} void drawRect(int x, int y, int h, int w)
|
|
|
|
}
|
|
|
|
class M5LCD
|
|
|
|
M5LCD .|> ILCDScreen
|
|
|
|
}
|
|
|
|
|
|
|
|
package "GRBL" {
|
|
|
|
interface IGRBL {
|
|
|
|
{abstract} drive(int x, int y, int z, int step)
|
|
|
|
{abstract} step(int s)
|
|
|
|
}
|
|
|
|
class M5GRBL
|
|
|
|
M5GRBL .|> IGRBL
|
|
|
|
}
|
|
|
|
|
|
|
|
package "ServoMotor" {
|
|
|
|
interface IServoMotor {
|
|
|
|
{abstract} goLeft()
|
|
|
|
{abstract} goRight()
|
|
|
|
{abstract} goMiddle()
|
|
|
|
}
|
|
|
|
class ServoMotor
|
|
|
|
ServoMotor .|> IServoMotor
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class Program {
|
|
|
|
+ Program()
|
|
|
|
+ void loop
|
|
|
|
}
|
|
|
|
|
2024-02-09 08:57:25 +01:00
|
|
|
Program <-- IServoMotor
|
|
|
|
Program <-- IGRBL
|
|
|
|
Program <-- ILCDScreen
|
|
|
|
Program <-- INFCReader
|
2023-11-10 16:42:00 +01:00
|
|
|
|
2024-02-09 08:57:25 +01:00
|
|
|
Dolibarr --> Program
|
2023-11-10 16:42:00 +01:00
|
|
|
|
|
|
|
@enduml
|