angular-serial
Version:
NgxSerial eases the use of the Serial Web API in Angular.
1 lines • 7.5 kB
Source Map (JSON)
{"version":3,"file":"angular-serial.mjs","sources":["../../../projects/angular-serial/src/lib/ngx-serial.ts","../../../projects/angular-serial/src/public-api.ts","../../../projects/angular-serial/src/angular-serial.ts"],"sourcesContent":["import { NONE_TYPE } from \"@angular/compiler\";\n\nexport class NgxSerial {\n\n private port: any;\n private options = { baudRate: 9600, dataBits: 8, parity: 'none', bufferSize: 256, flowControl: 'none' }; //Default\n private writer: any;\n private readFunction: Function;\n private controlCharacter: string = \"\\n\";\n private reader:any;\n private readableStreamClosed:any;\n private writableStreamClosed:any;\n private keepReading:boolean = true;\n \n constructor(readFunction: Function, options?: any, controlCharacter?: any) {\n this.readFunction = readFunction;\n if (options)\n this.options = options;\n if (controlCharacter)\n this.controlCharacter = controlCharacter;\n \n }\n public async sendData(data: string) {\n await this.writer.write(data);\n }\n \n private async readLoop() {\n \n \n while (this.port.readable && this.keepReading ) {\n const textDecoder = new TextDecoderStream();\n this.readableStreamClosed = this.port.readable.pipeTo(textDecoder.writable);\n this.reader = textDecoder.readable\n .pipeThrough(new TransformStream(new LineBreakTransformer(this.controlCharacter)))\n .getReader();\n \n try {\n while (true) {\n const { value, done } = await this.reader.read();\n if (done) {\n break;\n }\n if (value) {\n this.readFunction(value);\n }\n }\n } catch (error) {\n console.error(\"Read Loop error. Have the serial device been disconnected ? \");\n }\n }\n }\n public async close(callback:Function) {\n this.keepReading = false;\n this.reader.cancel();\n await this.readableStreamClosed.catch(() => {});\n this.writer.close();\n await this.writableStreamClosed;\n await this.port.close();\n callback(null);\n }\n \n public async connect(callback:Function) {\n this.keepReading = true;\n if (\"serial\" in navigator) {\n // The Web Serial API is supported by the browser.\n let nav: any = navigator;\n const ports = await nav.serial.getPorts();\n \n try {\n this.port = await nav.serial.requestPort();\n \n } catch (error) {\n console.error(\"Requesting port error: \" + error);\n return;\n }\n \n try {\n await this.port.open(this.options);\n \n \n } catch (error) {\n console.error(\"Opening port error: \" + error);\n return;\n }\n \n const textEncoder = new TextEncoderStream();\n this.writableStreamClosed = textEncoder.readable.pipeTo(this.port.writable);\n this.writer = textEncoder.writable.getWriter();\n \n this.readLoop();\n \n callback(this.port);\n \n } else {\n console.error(\"This browser does NOT support the Web Serial API\");\n }\n \n }\n }\n \n class LineBreakTransformer {\n container: any=\"\";\n private controlCharacter: string;\n \n constructor(controlCharacter: string) {\n this.container = '';\n this.controlCharacter = controlCharacter\n }\n \n transform(chunk:any, controller:any) {\n this.container += chunk;\n const lines = this.container.split(this.controlCharacter);\n this.container = lines.pop();\n lines.forEach((line: any) => controller.enqueue(line));\n }\n \n flush(controller:any) {\n controller.enqueue(this.container);\n }\n }","/*\n * Public API Surface of ngx-serial\n */\n\n/*export * from './lib/ngx-serial.service';\nexport * from './lib/ngx-serial.component';\nexport * from './lib/ngx-serial.module';*/\nexport * from './lib/ngx-serial';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}