¶Ô±ÈÐÂÎļþ |
| | |
| | | // æ°å¢ï¼åå¨å
¨å±ä¸²å£å读åå¨å®ä¾ |
| | | let port = null; |
| | | let reader = null; |
| | | let accumulatedData = ""; // ç§»å°å
¨å±ï¼ä¾¿äºå
³éæ¶éç½® |
| | | |
| | | async function connect() { |
| | | if ("serial" in navigator) { |
| | | try { |
| | | port = await navigator.serial.requestPort(); // ä¿®æ¹ä¸ºå
¨å±åé |
| | | await port.open({ baudRate: 9600 }); |
| | | |
| | | reader = port.readable.getReader(); // ä¿®æ¹ä¸ºå
¨å±åé |
| | | const decoder = new TextDecoder(); |
| | | accumulatedData = ""; // éç½®ç´¯ç§¯æ°æ® |
| | | |
| | | console.log("串å£è¿æ¥æåï¼å¼å§æ¥æ¶æ°æ®..."); |
| | | |
| | | while (true) { |
| | | const { value, done } = await reader.read(); |
| | | if (done) break; |
| | | |
| | | const decodedChunk = decoder.decode(value, { stream: true }); |
| | | accumulatedData += decodedChunk; |
| | | console.log("æ¥æ¶å°æ°æ®å:", decodedChunk); |
| | | |
| | | processAccumulatedData(accumulatedData); |
| | | } |
| | | } catch (error) { |
| | | console.error("串å£é误:", error); |
| | | } |
| | | } |
| | | |
| | | function processAccumulatedData(data) { |
| | | if (data.includes("\n")) { |
| | | const messages = data.split("\n"); |
| | | |
| | | for (let i = 0; i < messages.length - 1; i++) { |
| | | const completeMessage = messages[i]; |
| | | console.log("宿´æ¶æ¯:", completeMessage); |
| | | handleMessage(completeMessage); |
| | | } |
| | | |
| | | accumulatedData = messages[messages.length - 1]; |
| | | } |
| | | |
| | | // å
¶ä»æ¶æ¯æå示ä¾ä¿æä¸å |
| | | /* |
| | | while (accumulatedData.length >= 32) { |
| | | const message = accumulatedData.substring(0, 32); |
| | | accumulatedData = accumulatedData.substring(32); |
| | | handleMessage(message); |
| | | } |
| | | */ |
| | | |
| | | /* |
| | | let startIndex = 0; |
| | | while (true) { |
| | | const start = accumulatedData.indexOf(0xAA, startIndex); |
| | | if (start === -1) break; |
| | | |
| | | const end = accumulatedData.indexOf(0x55, start + 1); |
| | | if (end === -1) break; |
| | | |
| | | const message = accumulatedData.substring(start, end + 1); |
| | | accumulatedData = accumulatedData.substring(end + 1); |
| | | handleMessage(message); |
| | | startIndex = start; |
| | | } |
| | | */ |
| | | } |
| | | } |
| | | |
| | | // æ°å¢ï¼å
³éè¿æ¥å½æ° |
| | | async function disconnect() { |
| | | if (!port || !reader) { |
| | | console.log("æªå»ºç«è¿æ¥ï¼æ éå
³é"); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | // å
åæ¶è¯»åå¨ |
| | | await reader.cancel(); |
| | | // åå
³éä¸²å£ |
| | | await port.close(); |
| | | console.log("串å£è¿æ¥å·²å
³é"); |
| | | |
| | | // éç½®å
¨å±åé |
| | | port = null; |
| | | reader = null; |
| | | accumulatedData = ""; |
| | | } catch (error) { |
| | | console.error("å
³éè¿æ¥å¤±è´¥:", error); |
| | | } |
| | | } |
| | | |
| | | export { connect, disconnect }; |
| | |
| | | <div class="search_label">æ°æ®åºå¯ç ï¼</div> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="configForm.dbPassword"></el-input> |
| | | </div> |
| | | <div v-if="configForm.fileType === '.mysql'" class="search_thing" style="margin-bottom: 14px;"> |
| | | <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>æ°æ®åºè¡¨ï¼</div> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="configForm.dbTable"></el-input> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="dialogVisible4 = false">å æ¶</el-button> |
| | |
| | | dbFileName: "", |
| | | fiberOpticRibbon: "", |
| | | dbUserName: "", |
| | | dbPassword: "" |
| | | dbPassword: "", |
| | | dbTable: "" |
| | | }, |
| | | domains: [ |
| | | { |
| | |
| | | { label: "excel", value: ".xlsx" }, |
| | | { label: "excel", value: ".xls" }, |
| | | { label: "txt", value: ".txt" }, |
| | | { label: "mysql", value: ".mysql" }, |
| | | { label: "png", value: ".png" } |
| | | ], |
| | | spanList: [], |
| | |
| | | this.$set(this.configForm, "dbFileName", res.data.dbFileName); |
| | | this.$set(this.configForm, "fiberOpticRibbon", res.data.fiberOpticRibbon); |
| | | this.$set(this.configForm, "dbUserName", res.data.dbUserName); |
| | | this.$set(this.configForm, "dbPassword", res.data.dbPassword) |
| | | this.$set(this.configForm, "dbPassword", res.data.dbPassword); |
| | | this.$set(this.configForm, "dbTable", res.data.dbTable); |
| | | }) |
| | | }, |
| | | // æäº¤æä»¶é
ç½® |
| | |
| | | dbFileName: this.configForm.dbFileName, |
| | | fiberOpticRibbon: this.configForm.fiberOpticRibbon, |
| | | dbUserName: this.configForm.dbUserName, |
| | | dbPassword: this.configForm.dbPassword |
| | | dbPassword: this.configForm.dbPassword, |
| | | dbTable: this.configForm.dbTable |
| | | }); |
| | | this.upLoad4 = true; |
| | | saveDeviceFileConfiguration({ deviceId: this.deviceId, ...obj }).then(res => { |
| | |
| | | <el-button :loading="dataAcquisitionLoading" v-if="state == 1" size="small" type="primary" |
| | | @click="getDataAcquisitionDevice">æ°æ®éé</el-button> |
| | | <el-button :type="dataAcquisitionEidtAble ? '' : 'primary'" v-if="state == 1" size="small" |
| | | @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble">{{ dataAcquisitionEidtAble ? "å
³éç¼è¾" : "ç¼è¾æ°é" |
| | | @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble,disconnect()">{{ dataAcquisitionEidtAble ? "å
³éç¼è¾" : "ç¼è¾æ°é" |
| | | }}</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | import AddUnPass from "../unpass/components/addUnPass.vue"; |
| | | import InspectionWord from "./components/InspectionWord.vue"; |
| | | import PurchaseVerification from "../unpass/components/PurchaseVerification.vue"; |
| | | import { connect,disconnect } from "@/utils/connect.js"; |
| | | |
| | | import { |
| | | doInsOrder, |
| | | getCableTag, |
| | |
| | | this.startWorker(); |
| | | // this.getList0() // ä»»å¡åæ¢ |
| | | this.scrollInit(); |
| | | disconnect() |
| | | }, |
| | | activated() { |
| | | this.getTypeDicts(); // è·åç´§æ¥ç¨åº¦ä¸ææ¡é项 |
| | |
| | | beforeDestroy() { |
| | | // å¨ç»ä»¶éæ¯åç¡®ä¿åæ¢ Workerï¼é¿å
å
åæ³æ¼ |
| | | this.stopWorker(); |
| | | disconnect() |
| | | }, |
| | | methods: { |
| | | // æä»¶ç®¡ç--å¼å§ |
| | |
| | | }, |
| | | // æ°æ®éé |
| | | getDataAcquisitionDevice() { |
| | | // connect() |
| | | // return |
| | | let itemIds = []; |
| | | this.currentSample.insProduct.forEach((item) => { |
| | | if (item.inspectionItemType === "1") { |
| | |
| | | this.$router.go(-1) |
| | | } |
| | | }, |
| | | destroyed() { |
| | | disconnect() |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |