WebUSB читает данные с последовательного порта не отвечает - PullRequest
0 голосов
/ 01 июня 2019

Я использую WEBUSB для чтения данных с весов.Устройство возвращается с status: stall, когда данные передаются на контрольную передачу.

Последовательный порт от весовой машины был подключен к преобразователю RS232 USB в последовательный порт (BAFO BF-810 с IC PL2303)и USB подключен к компьютеру.Считывание данных с той же микросхемы PL2303 работало до того, как я не понял, почему возникла эта проблема.


  vendorRead(value, index) {
    return this.device.controlTransferIn({
      requestType: 'class',
      request: 0x01,
      recipient: 'device',
      value: value,
      index: index
    }, 1).then(buffer => buffer[0]);
  }

  vendorWrite(value, index) {
    return this.device.controlTransferOut({
      requestType: 'class',
      request: 0x01,
      recipient: 'device',
      value: value,
      index: index
    });
  }

  setBaudRate() {
    return this.device.controlTransferIn({
      requestType: 'class',
      request: 0x21,
      recipient: 'interface',
      value: 0,
      index: 0
    }, 7).then((data) => {
      console.log(data)
      const parameters = data.data.buffer;
      parameters[4] = 0;
      parameters[5] = 0;
      parameters[6] = 0;
      return this.device.controlTransferOut({
        requestType: 'class',
        request: 0x20,
        recipient: 'interface', 
        value: 0,
        index: 0
      }, parameters)
    }).then(() => this.vendorWrite(0x0, 0x0)) // no flow control
    .then(() => this.vendorWrite(8, 0)) // reset upstream data pipes
    .then(() => this.vendorWrite(9, 0));
  }

  initialize(device, range) {
    this.device = device;
    this.range = range;
    this.active = true;
    this.device.open()
    .then(() => this.device.selectConfiguration(1))
    .then(() => {
      return this.device.claimInterface(0)
    })
    .then(() => this.vendorRead(0x8484, 0))
    .then(() => this.vendorWrite(0x0404, 0))
    .then(() => this.vendorRead(0x8484, 0))
    .then(() => this.vendorRead(0x8383, 0))
    .then(() => this.vendorRead(0x8484, 0))
    .then(() => this.vendorWrite(0x0404, 1))
    .then(() => this.vendorRead(0x8484, 0))
    .then(() => this.vendorRead(0x8383, 0))
    .then(() => this.vendorWrite(0, 1))
    .then(() => this.vendorWrite(1, 0))
    .then(() => this.vendorWrite(2, 0x44))
    .then(() => this.setBaudRate())
    .then(() => this.readData())
    .catch(err => {
      console.log(err);
    });
    return this.readingChanged;
  }

Застрял здесь за последнюю неделю.Любая помощь будет оценена .Заранее спасибо.

...