-
Notifications
You must be signed in to change notification settings - Fork 0
/
serial.js
58 lines (45 loc) · 1.39 KB
/
serial.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
var serial = {};
(function() {
"use strict";
serial.getPorts = function() {
return navigator.usb.getDevices().then(devices => {
return devices.map(device => new serial.Port(device));
});
};
serial.requestPort = function() {
const filters = [ { "vendorId": 0x04b4, "productId": 0x5500 } ];
return navigator.usb.requestDevice({ "filters": filters }).then(
device => new serial.Port(device)
);
}
serial.Port = function(device) {
this.device_ = device;
};
serial.Port.prototype.connect = function() {
return this.device_.open()
.then(() => {
return this.device_.selectConfiguration(1);
})
.then(() => this.device_.claimInterface(0));
};
serial.Port.prototype.disconnect = function() {
return this.device_.close();
};
serial.Port.prototype.send = function(data) {
return this.device_.transferOut(2, data);
};
serial.Port.prototype.receive = function() {
return this.device_.transferIn(1, 8);
}
serial.Port.prototype.byteArrayToString = function(byteArray) {
var payload = "";
for(var index = 0; index < byteArray.byteLength; index++) {
payload += "0x" + byteArray.getUint8(index).toString(16) + " ";
if((index+1)%8 == 0) payload += "\n";
}
return payload;
}
serial.Port.prototype.onReceiveError = function(err) {
console.error(err);
};
})();