Skip to content

Commit 01eb723

Browse files
authored
Merge pull request #10 from thorikawa/delimiter
Add delimiter property for incoming data.
2 parents b350e07 + ac10d91 commit 01eb723

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

example/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ device
1919
bluetooth.connect(address, channel, function(err, connection){
2020
if(err) return console.error(err);
2121

22+
connection.delimiter = Buffer.from('\n', 'utf8');
2223
connection.on('data', (buffer) => {
2324
console.log('received message:', buffer.toString());
2425
});

index.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,23 @@ function Connection(port, address){
1818
const self = this;
1919
this.port = port;
2020
this.address = address;
21+
this.buffer = new Buffer(0);
2122
const read = function () {
2223
process.nextTick(function() {
2324
if (self.isOpen()) {
24-
self.port.read(function(err, data){
25+
self.port.read(function(err, chunk){
2526
if(err) return self.emit('error', err);
26-
self.emit('data', data);
27+
if (self.delimiter) {
28+
let data = Buffer.concat([self.buffer, chunk]);
29+
let position;
30+
while ((position = data.indexOf(self.delimiter)) !== -1) {
31+
self.emit('data', data.slice(0, position));
32+
data = data.slice(position + self.delimiter.length);
33+
}
34+
self.buffer = data;
35+
} else {
36+
self.emit('data', chunk);
37+
}
2738
read();
2839
});
2940
}

0 commit comments

Comments
 (0)