angular - Electron + Angular7 如何在组件中使用 serialport.list()

标签 angular electron node-serialport

感谢 stackoverflow 上的另一个成员,我能够在 Electron 应用程序中使用 SerialPort。现在讨论下一个问题。

我在 Angular 中有一个组件,我希望有一个下拉列表来选择要连接的串行端口。但我想弄清楚 serialport.list() 是如何工作的。

app.component.ts

import { Component, OnInit } from '@angular/core';
import { } from 'electron';
import * as Serialport from 'serialport';
import { SerialService } from './serial.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  title = 'electron-angular-serialport';
  comPorts = [];

  constructor(private serial: SerialService) {
    let isElectron: boolean = window && window['process'] && window['process'].type;

    if (isElectron) {
      let serialport: typeof Serialport = window['require']('serialport');
      let app: Electron.App = window['require']('electron').remote;
      console.log(serialport, app, window['process']);
    }
  }

  ngOnInit() {
    this.getPorts();
    console.log(this.comPorts);
  }

  // getPorts() {
  //   this.serial.serialPort.list(function (err, ports) {
  //     ports.forEach(function(port) {
  //       this.comPorts.push(port);
  //     });
  //   });
  // }

  getPorts() {
    this.comPorts = this.serial.serialPort.list();
  }
}

结果

enter image description here

如果您查看注释代码块,您会注意到我试图将每个端口推送到 comPorts。但这给出了一个错误,指出 comPorts 是 未定义 .这很奇怪,因为我认为范围不会在这里丢失。

我会专门捕获这两个端口和将它们放入我的 comPorts 中,以便我可以创建一个下拉列表,以便用户可以选择要连接的 Arduino。

干杯,

最佳答案

尝试:

getPorts() {
     this.serial.serialPort.list((err, ports) => {
       ports.forEach(port => {
         this.comPorts.push(port);
       });
     });
   }

关于angular - Electron + Angular7 如何在组件中使用 serialport.list(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805415/

相关文章:

proxy - Electron 代理

javascript - 节点串行端口新串行端口选项的文档在哪里?

node.js - electron-rebuild 如何控制重建的 node_module_version ?

node.js - 使用 Node.js 获取 XBee 的 MAC 地址

angular - 如何在 Ag-Grid 中隐藏排序顺序指示器?

angular - 自定义组件绑定(bind): No value accessor for ''

javascript - ngIf 仅用于 _this_ 元素,无论如何都显示 child

c++ - Uncaught Error : error 1114 in electron

selenium - 如何在 Mac 上打包 chromedriver.exe

javascript - Angular 2动态表单如何根据另一个字段的值显示/隐藏一个字段