refact: created abstract interfaces and factories

This commit is contained in:
joshuashoemaker 2021-01-22 21:47:56 -06:00
parent 6572fcc7ab
commit 808904dfd6
10 changed files with 77 additions and 52 deletions

View File

@ -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 = () => {

View File

@ -0,0 +1,8 @@
interface IMotorMover {
moveClockwise(): void,
moveCounterClockwise(): void,
stopMovement(): void,
movementState: 'CLOCKWISE' | 'COUNTERCLOCKWISE' | "IDLE"
}
export default IMotorMover

View File

@ -0,0 +1,8 @@
import IMotor from "./IMotor";
interface IMotorMoverConstructor {
motor: IMotor,
pauseIntervalTime: number
}
export default IMotorMoverConstructor

View File

@ -0,0 +1,5 @@
interface IServer {
port: number
}
export default IServer

View File

@ -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)
} }

View File

@ -0,0 +1,7 @@
import EventManager from "../../EventManager"
function makeEventManager () {
return new EventManager()
}
export default makeEventManager

View 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

View 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

View File

@ -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}`)
}) })
} }

View File

@ -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()