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

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) => {
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)
}

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

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