|
@@ -114,10 +114,8 @@ function restartCameraService() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function getCameraStatus() {
|
|
function getCameraStatus() {
|
|
|
- setBtnStatus("btn1", false, "page5");
|
|
|
|
|
- setBtnStatus("btn2", false, "page5");
|
|
|
|
|
- setBtnStatus("btn3", false, "page5");
|
|
|
|
|
- setBtnStatus("btn4", false, "page5");
|
|
|
|
|
|
|
+ ["btn1", "btn2", "btn3", "btn4"]
|
|
|
|
|
+ .forEach(id => setBtnStatus(id, false, "page5"));
|
|
|
|
|
|
|
|
fetch("/api/camera/status")
|
|
fetch("/api/camera/status")
|
|
|
.then(async r => {
|
|
.then(async r => {
|
|
@@ -138,10 +136,8 @@ function getCameraStatus() {
|
|
|
.forEach(id => setText(id, null, "page5"));
|
|
.forEach(id => setText(id, null, "page5"));
|
|
|
})
|
|
})
|
|
|
.finally(() => {
|
|
.finally(() => {
|
|
|
- setBtnStatus("btn1", true, "page5");
|
|
|
|
|
- setBtnStatus("btn2", true, "page5");
|
|
|
|
|
- setBtnStatus("btn3", true, "page5");
|
|
|
|
|
- setBtnStatus("btn4", true, "page5");
|
|
|
|
|
|
|
+ ["btn1", "btn2", "btn3", "btn4"]
|
|
|
|
|
+ .forEach(id => setBtnStatus(id, true, "page5"));
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
getCameraLogLevel();
|
|
getCameraLogLevel();
|
|
@@ -191,8 +187,80 @@ function cameraPing() {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+let cameraPreviewTimer = null;
|
|
|
|
|
+let cameraPreviewRunning = false;
|
|
|
|
|
+let cameraPhotoIndex = 0;
|
|
|
|
|
+let cameraCurrentFile = "";
|
|
|
|
|
+let cameraTakingPhoto = false;
|
|
|
|
|
+
|
|
|
|
|
+const cameraPhotoFiles = [
|
|
|
|
|
+ "/tmp/camera_preview_0.jpg",
|
|
|
|
|
+ "/tmp/camera_preview_1.jpg"
|
|
|
|
|
+];
|
|
|
|
|
+
|
|
|
|
|
+async function cameraTakePhoto(filename) {
|
|
|
|
|
+ const r = await fetch("/api/camera/takePhoto", {
|
|
|
|
|
+ method: "POST",
|
|
|
|
|
+ headers: {
|
|
|
|
|
+ "Content-Type": "application/json"
|
|
|
|
|
+ },
|
|
|
|
|
+ body: JSON.stringify({
|
|
|
|
|
+ filename: filename
|
|
|
|
|
+ })
|
|
|
|
|
+ });
|
|
|
|
|
+ if (!r.ok) {
|
|
|
|
|
+ throw new Error(await r.text());
|
|
|
|
|
+ }
|
|
|
|
|
+ return await r.json();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function setImageSrc(id, url)
|
|
|
|
|
+{
|
|
|
|
|
+ const img = document.getElementById(id);
|
|
|
|
|
+ if (img) img.src = url;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function takeOnePhoto() {
|
|
|
|
|
+ if (cameraTakingPhoto) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ cameraTakingPhoto = true;
|
|
|
|
|
+
|
|
|
|
|
+ ["btn1", "btn2", "btn3", "btn4"]
|
|
|
|
|
+ .forEach(id => setBtnStatus(id, false, "page5"));
|
|
|
|
|
+
|
|
|
|
|
+ setText("cvar1", "拍照中, 请稍后...", "page5");
|
|
|
|
|
+ const filename = cameraPhotoFiles[cameraPhotoIndex];
|
|
|
|
|
+ cameraPhotoIndex = cameraPhotoIndex ? 0 : 1;
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ const data = await cameraTakePhoto(filename);
|
|
|
|
|
+ if (!data.ok) throw new Error("take photo failed");
|
|
|
|
|
+
|
|
|
|
|
+ cameraCurrentFile = filename;
|
|
|
|
|
+ setImageSrc("camera-image", "/api/camera/getImage?file=" + encodeURIComponent(filename) + "&t=" + Date.now());
|
|
|
|
|
+
|
|
|
|
|
+ setText("cvar1", "拍照完成", "page5");
|
|
|
|
|
+ setText("cvar2", "1", "page5");
|
|
|
|
|
+ setText("cvar3", data.var1, "page5");
|
|
|
|
|
+ setText("cvar4", data.var2, "page5");
|
|
|
|
|
+ setText("cvar5", data.var3, "page5");
|
|
|
|
|
+ setText("cvar6", data.var4 + "x" + data.var5, "page5");
|
|
|
|
|
+ } catch(e) {
|
|
|
|
|
+ console.error("takeOnePhoto failed:", e);
|
|
|
|
|
+ setText("cvar1", "拍照失败", "page5");
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ cameraTakingPhoto = false;
|
|
|
|
|
+ ["btn1", "btn2", "btn3", "btn4"]
|
|
|
|
|
+ .forEach(id => setBtnStatus(id, true, "page5"));
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
function initPage5() {
|
|
function initPage5() {
|
|
|
getCameraStatus();
|
|
getCameraStatus();
|
|
|
|
|
+ if (cameraTakingPhoto) {
|
|
|
|
|
+ setText("cvar1", "拍照中, 请稍后...", "page5");
|
|
|
|
|
+ }
|
|
|
connectLog("yfkj-camera-capture.service", "text1");
|
|
connectLog("yfkj-camera-capture.service", "text1");
|
|
|
}
|
|
}
|
|
|
|
|
|