У меня есть демонстрационное приложение, в котором я хочу читать / получать данные со сканера штрих-кода с помощью подключаемого модуля Bluetooth в Ionic 3. Я хочу, чтобы данные отображались в моем приложении, как только сканер штрих-кода просканирует код.
Мой файл .ts выглядит так:
import { Component } from '@angular/core';
import { BluetoothSerial } from '@ionic-native/bluetooth-serial';
import { AlertController } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
unpairedDevices: any;
pairedDevices: any;
gettingDevices: Boolean;
inputData: string = "";
data: string = "";
constructor(private bluetoothSerial: BluetoothSerial, private alertCtrl: AlertController) {
bluetoothSerial.enable();
}
startScanning() {
this.pairedDevices = null;
this.unpairedDevices = null;
this.gettingDevices = true;
this.bluetoothSerial.discoverUnpaired().then((success) => {
this.unpairedDevices = success;
this.gettingDevices = false;
success.forEach(element => {
});
},
(err) => {
console.info(err);
})
this.bluetoothSerial.list().then((success) => {
this.pairedDevices = success;
},
(err) => {
})
}
success = (data) => alert(data);
fail = (error) => alert(error);
selectDevice(address: any) {
let alert = this.alertCtrl.create({
title: 'Connect',
message: 'Do you want to connect with?',
buttons: [
{
text: 'Cancel',
role: 'cancel',
handler: () => {
console.info('Cancel clicked');
}
},
{
text: 'Connect',
handler: () => {
this.bluetoothSerial.connect(address).subscribe(this.success, this.fail);
this.bluetoothSerial.available().then(data =>{
console.info("Available " + (data));
this.bluetoothSerial.read().then(data =>{
console.info("Read " + (data));
this.data=this.inputData ;
// this.navCtrl.push(WelcomePage);
});
});
}
}
]
});
alert.present();
}
disconnect() {
let alert = this.alertCtrl.create({
title: 'Disconnect?',
message: 'Do you want to Disconnect?',
buttons: [
{
text: 'Cancel',
role: 'cancel',
handler: () => {
console.info('Cancel clicked');
}
},
{
text: 'Disconnect',
handler: () => {
this.bluetoothSerial.disconnect();
}
}
]
});
alert.present();
}
}
и мой файл html выглядит так
<ion-list padding>
<button ion-button block (click) = "startScanning()">scan</button>
<ion-list-header>
Paired Devices
</ion-list-header>
<ion-item *ngFor = "let device of pairedDevices">
{{device.name}}
</ion-item>
<button ion-button block (click) = "disconnect()">Disconnect</button>
<ion-list-header>
availlable Devices
</ion-list-header>
<ion-item *ngFor='let device of unpairedDevices'>
<span (click) = "selectDevice(device.address)">
{{device.name}}
</span>
</ion-item>
<ion-spinner name = "crescent" *ngIf = "gettingDevices"></ion-spinner>
<ion-label stacked>display</ion-label>
<ion-input type = "text" readonly = "" [(ngModel)] = "inputData">{{data}}</ion-input>
</ion-item>
</ion-list>
Мой плагин Bluetooth работает нормально. Сканер штрих-кода подключен, но когда я сканирую штрих-код, данные не отображаются. Не знаю почему.
Вам не нужно использовать этот плагин. Просто подключите его к телефону через Bluetooth, и он будет работать с любым входом.
Нет, данные все еще не отображаются. Я использую этот плагин, потому что хочу открыть Bluetooth прямо из своего приложения.
если мой ответ вас не удовлетворяет. Я имею ввиду, что это нормально. Но это работает для меня.