diff --git a/Main/src/main/java/com/chameleonvision/Main.java b/Main/src/main/java/com/chameleonvision/Main.java index 825465612..18f599a0b 100644 --- a/Main/src/main/java/com/chameleonvision/Main.java +++ b/Main/src/main/java/com/chameleonvision/Main.java @@ -148,7 +148,7 @@ public class Main { if (ntClientModeServer != null) { NetworkTableInstance.getDefault().startClient(ntClientModeServer); } else { - NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.team_number); + NetworkTableInstance.getDefault().startClientTeam(SettingsManager.GeneralSettings.teamNumber); } } diff --git a/Main/src/main/java/com/chameleonvision/network/NetworkManager.java b/Main/src/main/java/com/chameleonvision/network/NetworkManager.java index c8c36d5e4..a50eef82f 100644 --- a/Main/src/main/java/com/chameleonvision/network/NetworkManager.java +++ b/Main/src/main/java/com/chameleonvision/network/NetworkManager.java @@ -1,6 +1,7 @@ package com.chameleonvision.network; +import com.chameleonvision.settings.ConnectionType; import com.chameleonvision.settings.NetworkSettings; import com.chameleonvision.settings.Platform; import com.chameleonvision.settings.SettingsManager; @@ -46,7 +47,7 @@ public class NetworkManager { e.printStackTrace(); } - var teamBytes = NetworkSettings.GetTeamNumberIPBytes(SettingsManager.GeneralSettings.team_number); + var teamBytes = NetworkSettings.GetTeamNumberIPBytes(SettingsManager.GeneralSettings.teamNumber); if (interfaces.size() > 0) { for (var inetface : interfaces) { @@ -85,7 +86,7 @@ public class NetworkManager { } var genSettings = SettingsManager.GeneralSettings; - boolean isStatic = genSettings.connection_type.toLowerCase().equals("static"); + boolean isStatic = genSettings.connectionType.equals(ConnectionType.Static); if (isStatic) { var splitIPAddr = genSettings.ip.split("\\."); diff --git a/Main/src/main/java/com/chameleonvision/settings/ConnectionType.java b/Main/src/main/java/com/chameleonvision/settings/ConnectionType.java new file mode 100644 index 000000000..7226ea2de --- /dev/null +++ b/Main/src/main/java/com/chameleonvision/settings/ConnectionType.java @@ -0,0 +1,5 @@ +package com.chameleonvision.settings; + +public enum ConnectionType { + DHCP,Static +} diff --git a/Main/src/main/java/com/chameleonvision/settings/GeneralSettings.java b/Main/src/main/java/com/chameleonvision/settings/GeneralSettings.java index f921af331..8b1b31fce 100644 --- a/Main/src/main/java/com/chameleonvision/settings/GeneralSettings.java +++ b/Main/src/main/java/com/chameleonvision/settings/GeneralSettings.java @@ -1,12 +1,12 @@ package com.chameleonvision.settings; public class GeneralSettings { - public int team_number = 1577; - public String connection_type = "DHCP"; + public int teamNumber = 1577; + public ConnectionType connectionType = ConnectionType.DHCP; public String ip = ""; public String gateway = ""; public String netmask = ""; public String hostname = "Chameleon-vision"; - public String curr_camera = ""; - public Integer curr_pipeline = null; + public String currentCamera = ""; + public Integer currentPipeline = null; } diff --git a/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java b/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java index 6a2a3c310..5cfa1eae8 100644 --- a/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java +++ b/Main/src/main/java/com/chameleonvision/settings/SettingsManager.java @@ -32,10 +32,10 @@ public class SettingsManager { // netSettings.run(); // } var allCameras = CameraManager.getAllCamerasByName(); - if (!allCameras.containsKey(GeneralSettings.curr_camera) && allCameras.size() > 0) { + if (!allCameras.containsKey(GeneralSettings.currentCamera) && allCameras.size() > 0) { var cam = allCameras.entrySet().stream().findFirst().get().getValue(); - GeneralSettings.curr_camera = cam.name; - GeneralSettings.curr_pipeline = cam.getCurrentPipelineIndex(); + GeneralSettings.currentCamera = cam.name; + GeneralSettings.currentPipeline = cam.getCurrentPipelineIndex(); } } @@ -49,12 +49,12 @@ public class SettingsManager { } public static void updateCameraSetting(String cameraName, int pipelineNumber) { - GeneralSettings.curr_camera = cameraName; - GeneralSettings.curr_pipeline = pipelineNumber; + GeneralSettings.currentCamera = cameraName; + GeneralSettings.currentPipeline = pipelineNumber; } public static void updatePipelineSetting(int pipelineNumber) { - GeneralSettings.curr_pipeline = pipelineNumber; + GeneralSettings.currentPipeline = pipelineNumber; } public static void saveSettings() { diff --git a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java index f417dfb45..0fda6e312 100644 --- a/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java +++ b/Main/src/main/java/com/chameleonvision/vision/camera/Camera.java @@ -118,6 +118,7 @@ public class Camera { cvSource = cs.putVideo(name, newVideoMode.width, newVideoMode.height); } ServerHandler.sendFullSettings(); + } } diff --git a/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java b/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java index 7a17c7ef9..5e34442f3 100644 --- a/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java +++ b/Main/src/main/java/com/chameleonvision/vision/camera/CameraManager.java @@ -92,7 +92,7 @@ public class CameraManager { public static Camera getCurrentCamera() throws CameraException { if (AllCamerasByName.size() == 0) throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA); - var curCam = AllCamerasByName.get(SettingsManager.GeneralSettings.curr_camera); + var curCam = AllCamerasByName.get(SettingsManager.GeneralSettings.currentCamera); if (curCam == null) throw new CameraException(CameraException.CameraExceptionType.BAD_CAMERA); return curCam; } @@ -100,7 +100,7 @@ public class CameraManager { public static void setCurrentCamera(String cameraName) throws CameraException { if (!AllCamerasByName.containsKey(cameraName)) throw new CameraException(CameraException.CameraExceptionType.BAD_CAMERA); - SettingsManager.GeneralSettings.curr_camera = cameraName; + SettingsManager.GeneralSettings.currentCamera = cameraName; SettingsManager.updateCameraSetting(cameraName, getCurrentCamera().getCurrentPipelineIndex()); } @@ -116,15 +116,15 @@ public class CameraManager { } public static List getResolutionList() throws CameraException { - if (!SettingsManager.GeneralSettings.curr_camera.equals("")) { - return Arrays.stream(CameraManager.getCamera(SettingsManager.GeneralSettings.curr_camera).getAvailableVideoModes()) + if (!SettingsManager.GeneralSettings.currentCamera.equals("")) { + return Arrays.stream(CameraManager.getCamera(SettingsManager.GeneralSettings.currentCamera).getAvailableVideoModes()) .map(res -> String.format("%s X %s at %s fps using %s ", res.width, res.height, res.fps, res.pixelFormat.toString())).collect(Collectors.toList()); } throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA); } public static VisionProcess getCurrentCameraProcess() throws CameraException{ - if (!SettingsManager.GeneralSettings.curr_camera.equals("")){ - return AllVisionProcessesByName.get(SettingsManager.GeneralSettings.curr_camera); + if (!SettingsManager.GeneralSettings.currentCamera.equals("")){ + return AllVisionProcessesByName.get(SettingsManager.GeneralSettings.currentCamera); } throw new CameraException(CameraException.CameraExceptionType.NO_CAMERA); } diff --git a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java index cee414192..5db4a7f9a 100644 --- a/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/process/VisionProcess.java @@ -4,6 +4,7 @@ import com.chameleonvision.settings.SettingsManager; import com.chameleonvision.vision.Orientation; import com.chameleonvision.vision.Pipeline; import com.chameleonvision.vision.camera.Camera; +import com.chameleonvision.vision.camera.CameraException; import com.chameleonvision.web.ServerHandler; import edu.wpi.cscore.VideoException; import edu.wpi.first.networktables.*; @@ -88,12 +89,13 @@ public class VisionProcess implements Runnable { System.err.println(e.toString()); } camera.setBrightness(pipeline.brightness); - if (SettingsManager.GeneralSettings.curr_camera.equals(cameraName)){ - SettingsManager.GeneralSettings.curr_pipeline = ntPipelineIndex; + if (SettingsManager.GeneralSettings.currentCamera.equals(cameraName)){ + SettingsManager.GeneralSettings.currentPipeline = ntPipelineIndex; HashMap pipeChange = new HashMap<>(); - pipeChange.put("curr_pipeline", ntPipelineIndex); + pipeChange.put("currentPipeline", ntPipelineIndex); ServerHandler.broadcastMessage(pipeChange); ServerHandler.sendFullSettings(); + } } else { ntPipelineEntry.setNumber(camera.getCurrentPipelineIndex()); @@ -222,25 +224,27 @@ public class VisionProcess implements Runnable { // get vision data var pipelineResult = runVisionProcess(cameraInputMat, streamOutputMat); updateNetworkTables(pipelineResult); - if (cameraName.equals(SettingsManager.GeneralSettings.curr_camera)) { + if (cameraName.equals(SettingsManager.GeneralSettings.currentCamera)) { HashMap WebSend = new HashMap<>(); HashMap point = new HashMap<>(); + HashMap calculated = new HashMap<>(); List center = new ArrayList<>(); if (pipelineResult.IsValid) { center.add(pipelineResult.RawPoint.center.x); center.add(pipelineResult.RawPoint.center.y); - point.put("pitch", pipelineResult.Pitch); - point.put("yaw", pipelineResult.Yaw); + calculated.put("pitch", pipelineResult.Pitch); + calculated.put("yaw", pipelineResult.Yaw); } else { center.add(0.0); center.add(0.0); - point.put("pitch", 0); - point.put("yaw", 0); + calculated.put("pitch", 0); + calculated.put("yaw", 0); } point.put("fps", uiFps); + point.put("calculated",calculated); + point.put("rawPoint",center); WebSend.put("point", point); - WebSend.put("raw_point", center); -// ServerHandler.broadcastMessage(WebSend); + ServerHandler.broadcastMessage(WebSend); } cameraProcess.updateFrame(streamOutputMat); diff --git a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java index cee0d483e..38cd88837 100644 --- a/Main/src/main/java/com/chameleonvision/web/ServerHandler.java +++ b/Main/src/main/java/com/chameleonvision/web/ServerHandler.java @@ -48,8 +48,9 @@ public class ServerHandler { try { switch (entry.getKey()) { case "generalSettings": { - System.out.println("asdds"); - //change general settings using a general settings object + for (HashMap.Entry e : ((HashMap)entry.getValue()).entrySet()){ + setField(SettingsManager.GeneralSettings,e.getKey(),e.getValue()); + } break; } case "cameraSettings": { @@ -133,7 +134,7 @@ public class ServerHandler { broadcastMessage(obj, null);//Broadcasts the message to every user } - public static HashMap getOrdinalPipeline() throws CameraException, IllegalAccessException { + private static HashMap getOrdinalPipeline() throws CameraException, IllegalAccessException { HashMap tmp = new HashMap<>(); for (Field f : Pipeline.class.getFields()){ @@ -146,12 +147,22 @@ public class ServerHandler { } return tmp; } + private static HashMap getOrdinalSettings() throws IllegalAccessException { + HashMap tmp = new HashMap<>(); + tmp.put("teamNumber",SettingsManager.GeneralSettings.teamNumber); + tmp.put("connectionType",SettingsManager.GeneralSettings.connectionType.ordinal()); + tmp.put("ip",SettingsManager.GeneralSettings.ip); + tmp.put("gateway",SettingsManager.GeneralSettings.gateway); + tmp.put("netmask",SettingsManager.GeneralSettings.netmask); + tmp.put("hostname",SettingsManager.GeneralSettings.hostname); + return tmp; + } public static void sendFullSettings() { //General settings - Map fullSettings = new HashMap(); - fullSettings.put("settings", SettingsManager.GeneralSettings); - fullSettings.put("cameraList", CameraManager.getAllCamerasByName().keySet()); + Map fullSettings = new HashMap<>(); try { + fullSettings.put("settings", getOrdinalSettings()); + fullSettings.put("cameraList", CameraManager.getAllCamerasByName().keySet()); var currentCamera = CameraManager.getCurrentCamera(); fullSettings.put("pipeline", getOrdinalPipeline()); fullSettings.put("pipelineList", currentCamera.getPipelines().keySet()); diff --git a/New client/chameleon-client/src/components/cv-number-input.vue b/New client/chameleon-client/src/components/cv-number-input.vue index 6335ae8d6..352e53e0f 100644 --- a/New client/chameleon-client/src/components/cv-number-input.vue +++ b/New client/chameleon-client/src/components/cv-number-input.vue @@ -26,7 +26,7 @@ return this.value; }, set(value){ - this.$emit('input',value); + this.$emit('input', parseInt(value)); } } } diff --git a/New client/chameleon-client/src/store.js b/New client/chameleon-client/src/store.js index 88eb2c101..abaf79555 100644 --- a/New client/chameleon-client/src/store.js +++ b/New client/chameleon-client/src/store.js @@ -4,13 +4,19 @@ import Vuex from 'vuex' Vue.use(Vuex) const set = key => (state,val) =>{ - // state[key] = val Vue.set(state,key,val); }; export default new Vuex.Store({ state: { - settings:{}, + settings:{ + teamNumber:1577, + connectionType:0, + ip:"", + gateway:"", + netmask:"", + hostname: "Chameleon-vision" + }, pipeline:{ exposure:0, brightness:0, diff --git a/New client/chameleon-client/src/views/Camera.vue b/New client/chameleon-client/src/views/Camera.vue index 671ee92b1..a3dbbdd5d 100644 --- a/New client/chameleon-client/src/views/Camera.vue +++ b/New client/chameleon-client/src/views/Camera.vue @@ -65,8 +65,8 @@
No Cameras Are connected +
{{point}}
-
{{point}}
@@ -118,9 +118,10 @@ import CVicon from '../components/cv-icon' }, point:{ get:function(){ - let p = this.$store.state.point.calulated; + let p = this.$store.state.point.calculated; + let fps = this.$store.state.point.fps; if(p !== undefined){ - return ("Pitch: " + parseFloat(p['pitch']).toFixed(2) + " Yaw: " + parseFloat(p['yaw']).toFixed(2) + " FPS: " + parseFloat(p['fps']).toFixed(2)) + return ("Pitch: " + parseFloat(p['pitch']).toFixed(2) + " Yaw: " + parseFloat(p['yaw']).toFixed(2) + " FPS: " + fps.toFixed(2)) } else{ return undefined; } @@ -173,7 +174,7 @@ import CVicon from '../components/cv-icon' } .videoClass img{ height: auto !important; - width: 75%; + width: 70%; vertical-align: middle; } #Point{ diff --git a/New client/chameleon-client/src/views/SettingsViewes/General.vue b/New client/chameleon-client/src/views/SettingsViewes/General.vue index 09b5f919d..733cd7078 100644 --- a/New client/chameleon-client/src/views/SettingsViewes/General.vue +++ b/New client/chameleon-client/src/views/SettingsViewes/General.vue @@ -1,6 +1,6 @@