【问题标题】:Electron + Angular7 How to use serialport.list() in a ComponentElectron + Angular7 如何在组件中使用 serialport.list()
【发布时间】:2018-12-16 18:51:15
【问题描述】:

感谢 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();
  }
}

结果

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

我会专门抓取这两个端口并将它们推送到我的 comPorts 中,这样我就可以创建一个下拉列表,以便用户可以选择要连接的 Arduino。

干杯,

【问题讨论】:

    标签: angular electron node-serialport


    【解决方案1】:

    尝试:

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

    【讨论】:

    • 是的,这很好用!如果在应用程序运行期间插入 USB,可以使用什么方法自动更新端口列表?我必须关闭应用程序并重新打开它当前更新。
    • @ClaytonAllen 我真的不知道你对串口做了什么:)),你的问题是使用函数与箭头函数,当你在回调中使用函数时它不会通过全局 @987654322 @ 所以它在函数中是未定义的,我们使用箭头函数来传递this 并使用它。
    • Fazil 感谢您的帮助。我认为我关于自动更新串行端口列表的问题更适合作为其他地方的问题。
    • @ClaytonAllen 不客气,是的,您可以在另一个新帖子中提出您的问题。
    猜你喜欢
    • 2019-12-03
    • 2019-09-20
    • 2019-08-08
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2019-08-25
    • 2019-04-24
    • 1970-01-01
    相关资源
    最近更新 更多