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 makeMotor from "./UseCases/Factories/makeMotor"
|
||||
import IMotor from "../Interfaces/IMotor"
|
||||
import makeMotor from "../UseCases/Factories/makeMotor"
|
||||
import * as childProcesses from 'child_process'
|
||||
import IMotorMoverConstructor from "../Interfaces/IMotorMoverConstructor"
|
||||
import IMotorMover from "../Interfaces/IMotorMover"
|
||||
|
||||
class MotorMover {
|
||||
class MotorMover implements IMotorMover {
|
||||
motor: IMotor
|
||||
moveProcess: childProcesses.ChildProcessWithoutNullStreams | null = null
|
||||
pauseIntervalTime: number = 0.05
|
||||
pauseIntervalTime: number
|
||||
movementState: 'CLOCKWISE' | 'COUNTERCLOCKWISE' | "IDLE" = 'IDLE'
|
||||
|
||||
constructor (motor: IMotor) {
|
||||
this.motor = makeMotor(motor)
|
||||
constructor (props: IMotorMoverConstructor) {
|
||||
this.motor = makeMotor(props.motor)
|
||||
this.pauseIntervalTime = props.pauseIntervalTime
|
||||
}
|
||||
|
||||
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) => {
|
||||
socketService.on('connection', (socket: Socket) => {
|
||||
socketService.on('connection', () => {
|
||||
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)
|
||||
|
||||
}
|
||||
|
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 IEventManager from './Interfaces/IEventManager';
|
||||
import MotorMover from './MotorMover';
|
||||
|
||||
|
||||
function sleep (ms: number) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
import makeServer from './UseCases/Factories/makeServer'
|
||||
import makeEventManager from './UseCases/Factories/makeEventManager'
|
||||
import makeMotorMover from './UseCases/Factories/makeMotorMover'
|
||||
|
||||
const main = () => {
|
||||
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 })
|
||||
// motorMover.moveClockwise()
|
||||
const port = 5005
|
||||
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[]) => {
|
||||
if (offsets[0]?.x > 50) {
|
||||
motorMover.moveCounterClockwise()
|
||||
xAxisMotorMover.moveCounterClockwise()
|
||||
} else if (offsets[0]?.x < - 50) {
|
||||
motorMover.moveClockwise()
|
||||
xAxisMotorMover.moveClockwise()
|
||||
} 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