refact: created abstract interfaces and factories
This commit is contained in:
parent
6572fcc7ab
commit
808904dfd6
@ -1,15 +1,18 @@
|
|||||||
import IMotor from "./Interfaces/IMotor"
|
import IMotor from "../Interfaces/IMotor"
|
||||||
import makeMotor from "./UseCases/Factories/makeMotor"
|
import makeMotor from "../UseCases/Factories/makeMotor"
|
||||||
import * as childProcesses from 'child_process'
|
import * as childProcesses from 'child_process'
|
||||||
|
import IMotorMoverConstructor from "../Interfaces/IMotorMoverConstructor"
|
||||||
|
import IMotorMover from "../Interfaces/IMotorMover"
|
||||||
|
|
||||||
class MotorMover {
|
class MotorMover implements IMotorMover {
|
||||||
motor: IMotor
|
motor: IMotor
|
||||||
moveProcess: childProcesses.ChildProcessWithoutNullStreams | null = null
|
moveProcess: childProcesses.ChildProcessWithoutNullStreams | null = null
|
||||||
pauseIntervalTime: number = 0.05
|
pauseIntervalTime: number
|
||||||
movementState: 'CLOCKWISE' | 'COUNTERCLOCKWISE' | "IDLE" = 'IDLE'
|
movementState: 'CLOCKWISE' | 'COUNTERCLOCKWISE' | "IDLE" = 'IDLE'
|
||||||
|
|
||||||
constructor (motor: IMotor) {
|
constructor (props: IMotorMoverConstructor) {
|
||||||
this.motor = makeMotor(motor)
|
this.motor = makeMotor(props.motor)
|
||||||
|
this.pauseIntervalTime = props.pauseIntervalTime
|
||||||
}
|
}
|
||||||
|
|
||||||
public moveClockwise = () => {
|
public moveClockwise = () => {
|
8
src/Server/Interfaces/IMotorMover.ts
Normal file
8
src/Server/Interfaces/IMotorMover.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
interface IMotorMover {
|
||||||
|
moveClockwise(): void,
|
||||||
|
moveCounterClockwise(): void,
|
||||||
|
stopMovement(): void,
|
||||||
|
movementState: 'CLOCKWISE' | 'COUNTERCLOCKWISE' | "IDLE"
|
||||||
|
}
|
||||||
|
|
||||||
|
export default IMotorMover
|
8
src/Server/Interfaces/IMotorMoverConstructor.ts
Normal file
8
src/Server/Interfaces/IMotorMoverConstructor.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import IMotor from "./IMotor";
|
||||||
|
|
||||||
|
interface IMotorMoverConstructor {
|
||||||
|
motor: IMotor,
|
||||||
|
pauseIntervalTime: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export default IMotorMoverConstructor
|
5
src/Server/Interfaces/IServer.ts
Normal file
5
src/Server/Interfaces/IServer.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
interface IServer {
|
||||||
|
port: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export default IServer
|
@ -50,17 +50,16 @@ class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
openSockets = (socketService: any) => {
|
openSockets = (socketService: any) => {
|
||||||
socketService.on('connection', (socket: Socket) => {
|
socketService.on('connection', () => {
|
||||||
console.log('client connected')
|
console.log('client connected')
|
||||||
|
|
||||||
socket.on('offsets', (offsets: any) => {
|
|
||||||
this.onReceiveOffsets(offsets)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
socketService.on('message', (message: any) => {
|
||||||
|
console.log(message)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
onReceiveOffsets = (offsets: any[]) => {
|
public onReceiveOffsets = (offsets: any[]) => {
|
||||||
this.eventManager.emit('onReceiveOffsets', offsets)
|
this.eventManager.emit('onReceiveOffsets', offsets)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
7
src/Server/UseCases/Factories/makeEventManager.ts
Normal file
7
src/Server/UseCases/Factories/makeEventManager.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import EventManager from "../../EventManager"
|
||||||
|
|
||||||
|
function makeEventManager () {
|
||||||
|
return new EventManager()
|
||||||
|
}
|
||||||
|
|
||||||
|
export default makeEventManager
|
8
src/Server/UseCases/Factories/makeMotorMover.ts
Normal file
8
src/Server/UseCases/Factories/makeMotorMover.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import MotorMover from "../../Entities/MotorMover"
|
||||||
|
import IMotorMoverConstructor from "../../Interfaces/IMotorMoverConstructor"
|
||||||
|
|
||||||
|
function makeMotorMover (props: IMotorMoverConstructor) {
|
||||||
|
return new MotorMover(props)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default makeMotorMover
|
9
src/Server/UseCases/Factories/makeServer.ts
Normal file
9
src/Server/UseCases/Factories/makeServer.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import { Server } from "socket.io";
|
||||||
|
|
||||||
|
function makeServer (port: number) {
|
||||||
|
const defaultPort = 5005
|
||||||
|
|
||||||
|
return new Server(port || defaultPort)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default makeServer
|
@ -1,32 +1,32 @@
|
|||||||
import Server from './Server'
|
import IEventManager from './Interfaces/IEventManager'
|
||||||
|
import IMotorMover from './Interfaces/IMotorMover'
|
||||||
|
|
||||||
import EventManager from './EventManager'
|
import makeServer from './UseCases/Factories/makeServer'
|
||||||
import IEventManager from './Interfaces/IEventManager';
|
import makeEventManager from './UseCases/Factories/makeEventManager'
|
||||||
import MotorMover from './MotorMover';
|
import makeMotorMover from './UseCases/Factories/makeMotorMover'
|
||||||
|
|
||||||
|
|
||||||
function sleep (ms: number) {
|
|
||||||
return new Promise(resolve => setTimeout(resolve, ms));
|
|
||||||
}
|
|
||||||
|
|
||||||
const main = () => {
|
const main = () => {
|
||||||
console.log('starting')
|
console.log('starting')
|
||||||
const port = 5005
|
|
||||||
const server = new Server(port)
|
|
||||||
const eventManager: IEventManager = new EventManager()
|
|
||||||
|
|
||||||
const motorMover = new MotorMover({ pinOne: 3, pinTwo: 5, pinThree: 7, pinFour: 11 })
|
const port = 5005
|
||||||
// motorMover.moveClockwise()
|
makeServer(port)
|
||||||
|
|
||||||
|
const eventManager: IEventManager = makeEventManager()
|
||||||
|
|
||||||
|
const xAxisMotorMover: IMotorMover = makeMotorMover({
|
||||||
|
motor: { pinOne: 3, pinTwo: 5, pinThree: 7, pinFour: 11 },
|
||||||
|
pauseIntervalTime: 0.05
|
||||||
|
})
|
||||||
|
|
||||||
eventManager.listen('onReceiveOffsets', (offsets: any[]) => {
|
eventManager.listen('onReceiveOffsets', (offsets: any[]) => {
|
||||||
if (offsets[0]?.x > 50) {
|
if (offsets[0]?.x > 50) {
|
||||||
motorMover.moveCounterClockwise()
|
xAxisMotorMover.moveCounterClockwise()
|
||||||
} else if (offsets[0]?.x < - 50) {
|
} else if (offsets[0]?.x < - 50) {
|
||||||
motorMover.moveClockwise()
|
xAxisMotorMover.moveClockwise()
|
||||||
} else {
|
} else {
|
||||||
motorMover.stopMovement()
|
xAxisMotorMover.stopMovement()
|
||||||
}
|
}
|
||||||
console.log(`moving ${motorMover.movementState}`)
|
console.log(`moving ${xAxisMotorMover.movementState}`)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
import { spawn } from 'child_process'
|
|
||||||
|
|
||||||
function sleep (ms: number) {
|
|
||||||
return new Promise(resolve => setTimeout(resolve, ms));
|
|
||||||
}
|
|
||||||
|
|
||||||
const main = async () => {
|
|
||||||
console.log('start')
|
|
||||||
|
|
||||||
const rotateProcess = spawn('python', ['src/Server/moveStepper.py', '3', '5', '7', '11', 'clockwise', '0.01'])
|
|
||||||
console.log('running')
|
|
||||||
|
|
||||||
await sleep(5000)
|
|
||||||
rotateProcess.kill()
|
|
||||||
|
|
||||||
console.log('change direction')
|
|
||||||
const couterRotateProcess = spawn('python', ['src/Server/moveStepper.py', '3', '5', '7', '11', 'counterClockwise', '0.01'])
|
|
||||||
await sleep(5000)
|
|
||||||
couterRotateProcess.kill()
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
|
Loading…
x
Reference in New Issue
Block a user