@@ -18,7 +18,7 @@ ctx.addEventListener("message", (event) => {
18
18
19
19
let buffer = "" ;
20
20
let discardFirstLine = true ;
21
- const separator = "\n" ;
21
+ const separator = "\r?\ n" ;
22
22
const delimiter = "[, \t]+" ; // Serial Plotter protocol supports Comma, Space & Tab characters as delimiters
23
23
var separatorRegex = new RegExp ( `(${ separator } )` , "g" ) ;
24
24
var delimiterRegex = new RegExp ( delimiter , "g" ) ;
@@ -33,10 +33,10 @@ export const parseSerialMessages = (
33
33
// so we need to discard it and start aggregating from the first encountered separator
34
34
let joinMessages = messages . join ( "" ) ;
35
35
if ( discardFirstLine ) {
36
- const firstSeparatorIndex = joinMessages . indexOf ( separator ) ;
37
- if ( firstSeparatorIndex > - 1 ) {
36
+ const separatorMatch = separatorRegex . exec ( joinMessages ) ;
37
+ if ( separatorMatch && separatorMatch . index > - 1 ) {
38
38
joinMessages = joinMessages . substring (
39
- firstSeparatorIndex + separator . length
39
+ separatorMatch . index + separatorMatch [ 0 ] . length
40
40
) ;
41
41
discardFirstLine = false ;
42
42
} else {
@@ -55,7 +55,7 @@ export const parseSerialMessages = (
55
55
// remove the previous buffer
56
56
buffer = "" ;
57
57
// check if the last message contains the delimiter, if not, it's an incomplete string that needs to be added to the buffer
58
- if ( messagesAndBuffer [ messagesAndBuffer . length - 1 ] !== separator ) {
58
+ if ( ! separatorRegex . test ( messagesAndBuffer [ messagesAndBuffer . length - 1 ] ) ) {
59
59
buffer = messagesAndBuffer [ messagesAndBuffer . length - 1 ] ;
60
60
messagesAndBuffer . splice ( - 1 ) ;
61
61
}
@@ -65,16 +65,15 @@ export const parseSerialMessages = (
65
65
66
66
// for each line, explode variables
67
67
messagesAndBuffer
68
- . filter ( ( message ) => message !== separator )
68
+ . filter ( ( message ) => ! separatorRegex . test ( message ) )
69
69
. forEach ( ( message ) => {
70
70
const parsedLine : { [ key : string ] : number } = { } ;
71
-
71
+
72
+ // Part Separator symbols i.e. Space, Tab & Comma are fully supported
72
73
// SerialPlotter protocol specifies 3 message formats. The following 2 formats are supported
73
74
// Value only format: <value1> <value2> <value3>
74
75
// Label-Value format: name1:<value1>,name2:<value2>,name3:<value3>
75
76
76
- // Part Separator symbols i.e. Space, Tab & Comma are fully supported
77
-
78
77
// if we find a colon, we assume the latter is being used
79
78
let tokens : string [ ] = [ ] ;
80
79
if ( message . indexOf ( ":" ) > 0 ) {
0 commit comments