jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/service/impl/BsFormulaChildInfoServiceImpl.java
@@ -220,30 +220,11 @@ public AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo) { Boolean b = true; String result = "1"; // BsFormulaChildInfo getMaterTwo = new BsFormulaChildInfo(); // getMaterTwo.setProcessesCode(bsFormulaChildInfo.getLocationCode()); // getMaterTwo.setOperationType("2"); // List<BsFormulaChildInfo> operationType = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(getMaterTwo); // List<String> collect = operationType.stream().map(BsFormulaChildInfo::getResults).collect(Collectors.toList()); // for (String s : collect) { // if(s.equals("")){ //// return AjaxResult.success("扫描未完成,禁止拧紧操作!"); // } // } // BsFormulaChildInfo listQuery = new BsFormulaChildInfo(); // listQuery.setParamCode(bsFormulaChildInfo.getParamCode()); // listQuery.setProcessesCode(bsFormulaChildInfo.getLocationCode()); String paramData = bsFormulaChildInfo.getTightenTheArray(); if(paramData.contains("N")){ result = "3"; // List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(listQuery); // bsFormulaChildInfos.get(0).setResults("NG"); // bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getTightenTheArray()); // bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0)); this.updateTighteningData(bsFormulaChildInfo,"NG",paramData); // return AjaxResult.success("扫描结果NG,请重新扫描!"); }else { // List<BsFormulaChildInfo> bsFormulaChildInfos = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(listQuery); if(bsFormulaChildInfo.getSpareField2()!=null&&bsFormulaChildInfo.getSpareField3()!=null){ String tightenArray = bsFormulaChildInfo.getTightenTheArray().replace("[", "").replace("]", "").replace(" ", ""); String[] tightenDataParts = tightenArray.split(","); @@ -251,15 +232,11 @@ } if(b){ result = "3"; // bsFormulaChildInfos.get(0).setResults("OK"); // bsFormulaChildInfos.get(0).setCollectData(bsFormulaChildInfo.getTightenTheArray()); // bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos.get(0)); this.updateTighteningData(bsFormulaChildInfo,"OK",paramData); // logger.info("yzUpdateTighteningFormula--查询条件参数:"+listQuery); // logger.info("yzUpdateTighteningFormula--查询结果:"+bsFormulaChildInfos.get(0)); Integer stepNumber = Integer.valueOf(bsFormulaChildInfo.getStepSort()); try { miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+bsFormulaChildInfo.getLocationCode()+".MStepNumber").value(stepNumber+1).build()); String thoroughfare = Constants.thoroughfareMap.get(bsFormulaChildInfo.getLocationCode());//获取通道 miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare+"."+bsFormulaChildInfo.getLocationCode()+".MESScrew").value(stepNumber+1).build()); } catch (Exception e) { throw new RuntimeException(e); } @@ -269,7 +246,6 @@ // 执行操作 if(bsFormulaChildInfo.getSpareField4().equals("1")){ try { // WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), "OUT"); result = "2"; } catch (Exception e) { throw new RuntimeException(e); @@ -278,14 +254,8 @@ } }else { result = "3"; // List<BsFormulaChildInfo> bsFormulaChildInfos1 = bsFormulaChildInfoMapper.selectBsFormulaChildInfoList(listQuery); // bsFormulaChildInfos1.get(0).setResults("NG"); // String originalString = bsFormulaChildInfo.getTightenTheArray(); String modifiedString = paramData.replaceFirst("OK", "NG"); // bsFormulaChildInfos1.get(0).setCollectData(modifiedString); // bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfos1.get(0)); this.updateTighteningData(bsFormulaChildInfo,"NG",modifiedString); // return AjaxResult.success("扫描结果NG,请重新扫描!"); } } return AjaxResult.success(result); @@ -354,13 +324,6 @@ @Override public AjaxResult jrmWorkpieceRelease(BsFormulaChildInfo bsFormulaChildInfo) { this.clearCollectDataAndResultsByProcessesCode(bsFormulaChildInfo); // List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>() // .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getLocationCode()) // .eq(BsFormulaChildInfo::getProductCode, bsFormulaChildInfo.getProductCode())); // for (BsFormulaChildInfo info : list) { // info.setCollectData(""); // info.setResults(""); // bsFormulaChildInfoService.saveOrUpdate(info); // } String[] split = bsFormulaChildInfo.getProductBarcode().split(","); try { @@ -555,35 +518,8 @@ @Override public AjaxResult workpieceRelease(BsFormulaChildInfo bsFormulaChildInfo) { this.clearCollectDataAndResultsByProcessesCode(bsFormulaChildInfo); // List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>() // .eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getLocationCode()) // .eq(BsFormulaChildInfo::getProductCode, bsFormulaChildInfo.getProductCode())); // for (BsFormulaChildInfo info : list) { // info.setCollectData(""); // info.setResults(""); // bsFormulaChildInfoService.saveOrUpdate(info); // } try { daParamCollectionService.pushGeelycvMesFeedback(bsFormulaChildInfo.getProductBarcode(), bsFormulaChildInfo.getLocationCode()); // String barCode = bsFormulaChildInfo.getProductBarcode(); // String locationCode = bsFormulaChildInfo.getLocationCode(); // // if(StringUtils.isNotBlank(locationCode)&&StringUtils.isNotBlank(barCode)){ // DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection(); // daPassingStationCollection.setOutRsSign("1"); // daPassingStationCollection.setOutboundTime(new Date()); // daPassingStationCollection.setSfcCode(barCode); // daPassingStationCollection.setLocationCode(locationCode); // int updateDaPassingStation = daPassingStationCollectionService.updateDaPassingStationCollectionBySfcCodeAndLocationCode(daPassingStationCollection); // logger.info("普通人工工位更新过站记录updateDaPassingStationCollectionBySfcCodeAndLocationCode:更新了{}条数据-更新条件pack码{}-工位{}",updateDaPassingStation,barCode,locationCode); // } // DaPassingStationCollection passingStationCollectionOne = daPassingStationCollectionService.getOne(new LambdaQueryWrapper<DaPassingStationCollection>().eq(DaPassingStationCollection::getSfcCode, barCode).eq(DaPassingStationCollection::getLocationCode, locationCode)); // if (passingStationCollectionOne != null) { // passingStationCollectionOne.setOutRsSign("1"); // passingStationCollectionOne.setOutboundTime(new Date()); // daPassingStationCollectionService.saveOrUpdate(passingStationCollectionOne); // } }catch (Exception e){ } return AjaxResult.success(); @@ -636,8 +572,8 @@ bsFormulaChildInfoMapper.updateBsFormulaChildInfo(bsFormulaChildInfo); Integer stepNumber = Integer.valueOf(bsFormulaChildInfo.getStepSort()); String thoroughfare = Constants.thoroughfareMap.get(bsFormulaChildInfo.getLocationCode());//获取通道 try { String thoroughfare = Constants.thoroughfareMap.get(bsFormulaChildInfo.getLocationCode());//获取通道 miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare+"."+bsFormulaChildInfo.getLocationCode()+".MESScrew").value(stepNumber+1).build()); } catch (Exception e) { throw new RuntimeException(e); @@ -654,7 +590,7 @@ // List<DaPassingStationCollection> daPassingStationCollections = daPassingStationCollectionMapper.selectDaPassingStationCollectionList(daPassingStationCollection); // daPassingStationCollections.get(0).setOutboundTime(new Date()); // daPassingStationCollectionMapper.updateDaPassingStationCollection(daPassingStationCollections.get(0)); // miloService.writeToOpcShort(ReadWriteEntity.builder().identifier("PACK."+bsFormulaChildInfo.getLocationCode()+".RecordDataDone").value(21).build()); miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare +"."+bsFormulaChildInfo.getLocationCode()+".RecordDataDone").value(21).build()); WebSocketUsers.sendMessageToUserByText(map.get(bsFormulaChildInfo.getLocationCode()), "OUT"); } catch (Exception e) { throw new RuntimeException(e); jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/service/impl/DaParamCollectionServiceImpl.java
@@ -561,43 +561,32 @@ for (DaParamCollectionTemp daParamCollection : paramList) { ChildVO childVO = new ChildVO(); childVO.setItemCode(daParamCollection.getParamCode()); // BsFormulaChildInfo childOne = bsFormulaChildInfoService.getOne(new LambdaQueryWrapper<BsFormulaChildInfo>().eq(BsFormulaChildInfo::getParamCode, daParamCollection.getParamCode())); // DaCollectionParamConf paramConfOne = daCollectionParamConfService.getOne(new LambdaQueryWrapper<DaCollectionParamConf>().eq(DaCollectionParamConf::getCollectParameterId, daParamCollection.getParamCode())); List<DaCollectionParamConf> paramConfOneList = daCollectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>() .eq(DaCollectionParamConf::getCollectParameterId, daParamCollection.getParamCode()) .eq(DaCollectionParamConf::getProcessesCode,stationCode)); DaCollectionParamConf paramConfOne = paramConfOneList.get(0); // if(childOne!=null){ // String operationType = childOne.getOperationType(); // if(operationType.equals("1")){ // childVO.setItemType("2"); // }else if(operationType.equals("2")){ // childVO.setItemType("1"); // } // }else { // childVO.setItemType("3"); // } if(paramConfOne!=null){ childVO.setItemType(paramConfOne.getItemType()); childVO.setItemText(paramConfOne.getCollectParameterName()); }else { childVO.setItemType("3"); childVO.setItemText(""); } childVO.setItemValue(daParamCollection.getParamValue()); if(!paramConfOneList.isEmpty()){ if(paramConfOne!=null){ childVO.setItemType(paramConfOne.getItemType()); childVO.setItemText(paramConfOne.getCollectParameterName()); }else { childVO.setItemType("3"); childVO.setItemText(""); } childVO.setItemValue(daParamCollection.getParamValue()); if(daParamCollection.getParamValue().equals("1")){ childVO.setCheckResult("1"); }else if(daParamCollection.getParamValue().equals("2")){ childVO.setCheckResult("0"); parentVO.setTotalResult("0"); totalResult = "1"; }else { childVO.setCheckResult("1"); if(daParamCollection.getParamValue().equals("1")){ childVO.setCheckResult("1"); }else if(daParamCollection.getParamValue().equals("2")){ childVO.setCheckResult("0"); parentVO.setTotalResult("0"); totalResult = "1"; }else { childVO.setCheckResult("1"); } childVO.setCheckTime(format.format(daParamCollection.getCollectionTime())); listChildVo.add(childVO); } childVO.setCheckTime(format.format(daParamCollection.getCollectionTime())); listChildVo.add(childVO); } parentVO.setCheckList(listChildVo); try{ @@ -763,32 +752,34 @@ @Override public void manualWorkstationsAddBasicParameters(DaParamCollection daParamCollection) { // 假设这是从数据库或其他地方获取的参数数据 Map<String, String> map = new HashMap<>(); map.put("GC", "南浔工厂"); map.put("CXBH", "Pack线"); map.put("SBBH", "设备001"); map.put("YGBH", SecurityUtils.getUsername()); map.put("GDBH", daParamCollection.getWorkOrderNo()); map.put("CPXH", daParamCollection.getProductCode()); map.put("INT", format.format(daParamCollection.getInboundTime())); map.put("OUTT",format.format(new Date())); map.forEach((key, value) -> { DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode()); daCollectionParamConf.setCollectParameterId(key); List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf); DaParamCollection saveData = new DaParamCollection(); saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo()); saveData.setProductCode(daParamCollection.getProductCode()); saveData.setLocationCode(daParamCollection.getLocationCode()); saveData.setSfcCode(daParamCollection.getProductBarcode()); saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId()); saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName()); saveData.setCollectionTime(new Date()); saveData.setParamValue(value); daParamCollectionMapper.insertDaParamCollection(saveData); }); // Map<String, String> map = new HashMap<>(); // map.put("GC", "南浔工厂"); // map.put("CXBH", "Pack线"); // map.put("SBBH", "设备001"); // map.put("YGBH", SecurityUtils.getUsername()); // map.put("GDBH", daParamCollection.getWorkOrderNo()); // map.put("CPXH", daParamCollection.getProductCode()); // map.put("INT", format.format(daParamCollection.getInboundTime())); // map.put("OUTT",format.format(new Date())); // // map.forEach((key, value) -> { // DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); // daCollectionParamConf.setProcessesCode(daParamCollection.getLocationCode()); // daCollectionParamConf.setCollectParameterId(key); // List<DaCollectionParamConf> daCollectionParamConfs = daCollectionParamConfMapper.selectDaCollectionParamConfList(daCollectionParamConf); // DaParamCollection saveData = new DaParamCollection(); // saveData.setWorkOrderNo(daParamCollection.getWorkOrderNo()); // saveData.setProductCode(daParamCollection.getProductCode()); // saveData.setLocationCode(daParamCollection.getLocationCode()); // saveData.setSfcCode(daParamCollection.getProductBarcode()); // if(daCollectionParamConfs.isEmpty()){ // saveData.setParamCode(daCollectionParamConfs.get(0).getCollectParameterId()); // saveData.setParamName(daCollectionParamConfs.get(0).getCollectParameterName()); // } // saveData.setCollectionTime(new Date()); // saveData.setParamValue(value); // daParamCollectionMapper.insertDaParamCollection(saveData); // }); } @Override jcdm-ui/src/views/main/kb/preInstalledTerminal/index.vue
@@ -2,22 +2,20 @@ <div class="app-container"> <el-row :gutter="5"> <el-col :span="7"> <el-card shadow="never"> <el-card style="height: 72px;padding-top: 9px" shadow="never"> <span class="head-font">工位编号 : {{headContent.processesCode}}</span> <span hidden>{{headContent.inboundTime}}</span> </el-card> </el-col> <el-col :span="7"> <el-card shadow="never"> <span class="head-font">工位名称 : {{headContent.processesName}}</span> <span class="head-font">物料编码 : </span> <el-input style="width: 70%" ref="inputData" v-model="materialCode" @change="materialCodeHandleEnter" placeholder="请扫描总成序列号"></el-input> </el-card> </el-col> <el-col :span="10"> <el-card shadow="never"> <el-card style="height: 72px;padding-top: 9px" shadow="never"> <span class="head-font">产品序列号 : {{headContent.sfcCode}}</span> <!-- <el-input v-model="content" style="float: right;width: 150px;" placeholder="请输入内容"></el-input>--> <!-- <el-button @click="scanCompleted" style="float: right" type="primary">扫码完成</el-button>--> <el-button type="primary" style="float: right" icon="el-icon-search" size="mini" @click="serialLink">串口连接</el-button> <el-button @click="clearClick" style="float: right" type="danger" size="mini">清除</el-button> </el-card> </el-col> @@ -48,143 +46,6 @@ </el-tabs> </el-col> </el-row> <el-dialog v-dialogpop-up :title="title" :visible.sync="open1" width="1000" append-to-body> <el-row type="flex" class="row-bg" justify="center" v-show="portsList.length === 0" > <el-col :span="7"> <div style="margin-top: 400px"> <span style="display: block"> 仅支持Chrome 89+或者Edge 89+浏览器(安全上下文(HTTPS)中可用) </span> <el-button type="primary" @click="obtainAuthorization">授权</el-button> </div> </el-col> </el-row> <el-form v-show="portsList.length > 0" ref="form1" :model="form1" label-width="100px"> <el-row> <el-col :span="24" ><div> <el-form-item label="串口"> <el-select v-model="form1.port" filterable placeholder="请选择串口" :disabled="isDisable" > <el-option v-for="item in portsList" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> </el-form-item> <el-form-item label="波特率"> <el-autocomplete popper-class="my-autocomplete" v-model="form1.baudRate" :fetch-suggestions="querySearch" placeholder="请输入波特率" :disabled="isDisable" > <i class="el-icon-edit el-input__icon" slot="suffix"> </i> <template slot-scope="{ item }"> <div class="name">{{ item.value }}</div> <span class="addr">{{ item.address }}</span> </template> </el-autocomplete> </el-form-item> <el-form-item label="数据位"> <el-select v-model="form1.dataBits" placeholder="请选择数据位" :disabled="isDisable" > <el-option label="7" value="7"></el-option> <el-option label="8" value="8"></el-option> </el-select> </el-form-item> <el-form-item label="停止位"> <el-select v-model="form1.stopBits" placeholder="请选择停止位" :disabled="isDisable" > <el-option label="1" value="1"></el-option> <el-option label="2" value="2"></el-option> </el-select> </el-form-item> <el-form-item label="校验位"> <el-select v-model="form1.parity" placeholder="请选择校验位" :disabled="isDisable" > <el-option label="None" value="none"></el-option> <el-option label="Even" value="even"></el-option> <el-option label="Odd" value="odd"></el-option> </el-select> </el-form-item> <el-form-item label="流控制"> <el-select v-model="form1.flowControl" placeholder="请选择流控制" :disabled="isDisable" > <el-option label="None" value="none"></el-option> <el-option label="HardWare" value="hardware"></el-option> </el-select> </el-form-item> <el-form-item label="显示历史"> <el-switch v-model="form1.isShowHistory" @change="loadHistory" ></el-switch> <el-button type="danger" icon="el-icon-delete" circle title="清空历史" @click="clearHistory" ></el-button> </el-form-item> <el-form-item label="发送区设置" v-show="isShowSendArea"> <el-form-item label="发送格式"> <el-radio-group v-model="form1.type"> <el-radio label="1">ASCII</el-radio> <el-radio label="2">HEX</el-radio> </el-radio-group> </el-form-item> <el-form-item label="发送信息"> <el-input type="textarea" v-model="form1.sendMsg"></el-input> </el-form-item> <el-button type="primary" @click="sendCommon">发送</el-button> </el-form-item> <el-form-item> <el-button :type="btnType" @click="connectBtn">{{ btnText }}</el-button> <el-button type="info" @click="obtainAuthorization" >新增授权</el-button > </el-form-item> </div> </el-col> </el-row> </el-form> </el-dialog> </div> </template> <script> @@ -291,42 +152,32 @@ passingStationForm: {}, originalArray: [], materialCode: '', } }, beforeDestroy() { this.exit(); }, created() { this.initStation(); // this.getStationConfList(); // setTimeout(() => { // this.connectWebsocket(); // }, 3000); }, mounted() { if ("serial" in navigator) { this.myserialport = new MySerialPort(); this.getPorts(); navigator.serial.addEventListener("connect", (e) => { this.$message.success("设备已连接"); this.getPorts(); }); navigator.serial.addEventListener("disconnect", (e) => { this.$message.error("设备已断开"); }); this.restaurants = this.loadAll(); } else { this.$message.error( "当前为HTTP模式或者浏览器版本过低,不支持网页连接串口" ); } }, computed: { isDisable() { return this.btnType === "danger"; }, this.setFocus() this.initStation() }, methods: { materialCodeHandleEnter() { if(!this.headContent.sfcCode){ this.headContent.sfcCode = this.materialCode this.headContent.inboundTime = this.getCurrentTime(); this.getList() }else { this.serialPortMethod(this.materialCode); this.$message("扫描物料编码"+this.materialCode); this.setFocus(); this.materialCode = ''; } }, setFocus(){ this.$nextTick(()=>{ this.$refs.inputData.focus() }) }, serialLink() { this.open1 = true }, @@ -359,8 +210,8 @@ let formulaChildParams = { scanBarcode: value, sfcBarcode: this.headContent.sfcCode, workOrderNo: this.workpieceInformation.workOrderNo, productCode: "1P102S", workOrderNo: '-', productCode: "9900200461", locationCode: this.headContent.processesCode, collectionTime: new Date() } @@ -378,7 +229,7 @@ }, /** 查询配方配置子信息列表 */ getListFormulaChild() { this.formulaChildParams.productCode = "1P102S" this.formulaChildParams.productCode = "9900200461" this.formulaChildParams.processesCode = this.headContent.processesCode console.log(this.formulaChildParams) noPageListFormulaChild(this.formulaChildParams).then(response => { @@ -418,7 +269,9 @@ clearWorkpieceRelease(param).then(response => {}); this.headContent.sfcCode = '' this.formulaChildList = []; this.materialCode = '' this.$message('清除成功!'); this.setFocus() }, scanCompleted(){ this.$message('扫码完成'+this.content); @@ -435,7 +288,7 @@ const param = { processesCode: this.headContent.processesCode, } fistSetpNumber(param).then(response => {}); // fistSetpNumber(param).then(response => {}); this.getListFormulaChild() // this.addOverStationCollection() }, @@ -485,13 +338,12 @@ console.log('设置工位编码' + this.headContent.processesCode) }); this.conCom() console.log('websocket连接工位为' + this.headContent.processesCode) const wsuri = this.url + this.headContent.processesCode; this.ws = new WebSocket(wsuri); const self = this; this.ws.onopen = function (event) { this.$message('websocket连接成功!'); self.$message('websocket连接成功!'); }; this.ws.onmessage = function (event) { if(event.data.includes("[")) { @@ -510,8 +362,8 @@ const param = { tightenTheArray: event.data, paramCode: formulaChilds.paramCode, // workOrderNo: self.workpieceInformation.workOrderNo, // productCode: "1P102S", workOrderNo: '-', productCode: "9900200461", locationCode: self.headContent.processesCode, productBarcode: self.headContent.sfcCode, spareField2: formulaChilds.spareField2, @@ -554,9 +406,6 @@ } }; }, //接受数据的回调 callBack(value) { if (this.form1.isShowHistory) this.form1.desc = this.readLi().join(""); @@ -573,209 +422,7 @@ this.headContent.inboundTime = this.getCurrentTime(); this.getList() } } }, clearHistory() { this.form1.desc = ""; this.myserialport.state.readValue = []; }, loadHistory() { if (this.form1.isShowHistory) this.form1.desc = this.readLi().join(""); else { let temp = this.readLi(); if (temp.length > 0) this.form1.desc = temp[temp.length - 1].join(""); } }, readLi() { let readType = this.readType; return this.myserialport.state.readValue.map((items, index) => { const item = items.value; const type = items.type; // 1接收,2发送 let body = []; if (item !== undefined) { let strArr = []; for (let hex of Array.from(item)) { strArr.push(hex.toString(16).toLocaleUpperCase()); } if (strArr.includes("D") && strArr.includes("A")) { if (strArr.indexOf("A") - strArr.indexOf("D") === 1) { strArr.splice(strArr.indexOf("D"), 1); strArr.splice(strArr.indexOf("A"), 1, <br key={0} />); } } strArr = strArr.map((item) => { if (typeof item === "string") { if (readType === 1) { return this.myserialport.hex2a(parseInt(item, 16)); } else if (readType === 2) { return item + " "; } } return item; }); if (typeof strArr[strArr.length - 1] === "string") { strArr.push("\r\n"); } body.push(strArr.join("")); } return body; }); }, conCom(){ try { this.myserialport.state.baudRate = this.form1.baudRate; this.myserialport.state.dataBits = this.form1.dataBits; this.myserialport.state.stopBits = this.form1.stopBits; this.myserialport.state.parity = this.form1.parity; this.myserialport.state.flowControl = this.form1.flowControl; this.myserialport.openPort(0, true, this.callBack); console.log(this.form1.port) } catch (error) { this.$message.error("串口连接失败!请检查串口是否已被占用"); } if (this.myserialport.state.isOpen) { this.$message.success("串口连接成功"); } }, //连接 async connectBtn() { if (this.btnType === "primary") { try { this.myserialport.state.baudRate = this.form1.baudRate; this.myserialport.state.dataBits = this.form1.dataBits; this.myserialport.state.stopBits = this.form1.stopBits; this.myserialport.state.parity = this.form1.parity; this.myserialport.state.flowControl = this.form1.flowControl; await this.myserialport.openPort(this.form1.port, true, this.callBack); console.log(this.form1.port) } catch (error) { this.$message.error("串口连接失败!请检查串口是否已被占用"); } if (this.myserialport.state.isOpen) { this.$message.success("串口连接成功"); this.open1 = false this.btnType = "danger"; this.btnText = "关闭串口"; } } else { this.myserialport.openPort(this.form1.port, false, this.callBack); this.$message.success("串口关闭成功"); this.btnType = "primary"; this.btnText = "连接串口"; } }, //授权 async obtainAuthorization() { if ("serial" in navigator) { console.log("The Web Serial API is supported."); if (!this.myserialport) this.myserialport = new MySerialPort(); try { await this.myserialport.handleRequestPort(); this.$message.success("串口授权成功"); this.getPortInfo(this.myserialport.state.ports); } catch (error) { this.$message.warning("未选择新串口授权!"); } } else { this.$message.error( "当前为HTTP模式或者浏览器版本过低,不支持网页连接串口" ); } }, //串口列表初始化 getPortInfo(portList) { this.portsList = []; portList.map((port, index) => { const { usbProductId, usbVendorId } = port.getInfo(); if (usbProductId === undefined || usbVendorId === undefined) { this.portsList.push({ label: "未知设备" + index, value: index }); } else { const usbVendor = USBDevice.filter( (item) => parseInt(item.vendor, 16) === usbVendorId ); let usbProduct = []; if (usbVendor.length === 1) { usbProduct = usbVendor[0].devices.filter( (item) => parseInt(item.devid, 16) === usbProductId ); } this.portsList.push({ label: usbProduct[0].devname, value: index }); } }); }, // 发送 async sendCommon() { if (this.myserialport.state.isOpen) { if (this.form1.sendMsg.length !== 0) { const writeType = this.form1.type; let value = this.form1.sendMsg; let arr = []; if (writeType === 1) { // ASCII for (let i = 0; i < value.length; i++) { arr.push(this.myserialport.a2hex(value[i])); } } else if (writeType === 2) { // HEX if (/^[0-9A-Fa-f]+$/.test(value) && value.length % 2 === 0) { for (let i = 0; i < value.length; i = i + 2) { arr.push(parseInt(value.substring(i, i + 2), 16)); } } else { this.$message.error("格式错误"); return; } } this.myserialport.writeText(arr); } else { this.$message.warning("请输入发送的信息"); } } else { this.$message.warning("串口处于关闭状态,请连接串口"); } }, async getPorts() { await this.myserialport.getPorts(); this.getPortInfo(this.myserialport.state.ports); }, querySearch(queryString, cb) { var restaurants = this.restaurants; var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; // 调用 callback 返回建议列表的数据 cb(results); }, createFilter(queryString) { return (restaurant) => { return ( restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0 ); }; }, loadAll() { return [ { value: "110" }, { value: "300" }, { value: "600" }, { value: "1200" }, { value: "2400" }, { value: "4800" }, { value: "7200" }, { value: "9600" }, { value: "14400" }, { value: "19200" }, { value: "28800" }, { value: "38400" }, { value: "56000" }, { value: "57600" }, { value: "76800" }, { value: "115200" }, { value: "230400" }, { value: "460800" }, ]; }, } }