@@ -24,44 +24,43 @@ Dom.serialForm.submit = (formData) => {
2424
2525let send : ( ( bytest : number [ ] ) => Promise < void > ) | undefined = undefined ;
2626
27- const start = ( serialOptions : SerialOptions , mode : ModeStrategy ) => {
27+ const start = async ( serialOptions : SerialOptions , mode : ModeStrategy ) => {
2828 Dom . clearError ( ) ;
29- serial . requestPort ( ) . then ( ( serialPort : SerialPort ) => {
30- console . log ( 'serialPort' , serialPort ) ;
31- serialPort . open ( serialOptions ) . then ( async ( ) => {
32- Dom . serialForm . setFieldsetDisabled ( true ) ;
33- const writer = serialPort . writable ?. getWriter ( ) ;
34- if ( writer ) {
35- send = async ( bytes : number [ ] ) => {
36- const rawFrame = mode . send ( bytes ) ;
37- await writer . write ( rawFrame ) ;
38- }
39- } else {
40- console . error ( 'Port is not writable!' ) ;
41- }
29+ Dom . serialForm . setFieldsetDisabled ( true ) ;
30+ try {
31+ const serialPort : SerialPort = await serial . requestPort ( ) ;
32+ await serialPort . open ( serialOptions ) ;
4233
43- while ( serialPort . readable ) {
44- const reader : ReadableStreamDefaultReader < Uint8Array > = serialPort . readable . getReader ( ) ;
45- try {
46- while ( true ) {
47- const { value, done } = await reader . read ( ) ;
48- if ( done ) {
49- break ;
50- }
51- mode . receive ( value ) ;
34+ send = async ( bytes : number [ ] ) => {
35+ const rawFrame = mode . send ( bytes ) ;
36+ const writer = serialPort . writable ! . getWriter ( ) ;
37+ await writer . write ( rawFrame ) ;
38+ writer . releaseLock ( ) ;
39+ }
40+
41+ while ( serialPort . readable ) {
42+ const reader : ReadableStreamDefaultReader < Uint8Array > = serialPort . readable . getReader ( ) ;
43+ try {
44+ while ( true ) {
45+ const { value, done } = await reader . read ( ) ;
46+ if ( done ) {
47+ break ;
5248 }
53- } catch ( error ) {
54- reportError ( error ) ;
55- } finally {
56- reader . releaseLock ( ) ;
49+ mode . receive ( value ) ;
5750 }
51+ } catch ( error ) {
52+ reportError ( error ) ;
53+ } finally {
54+ reader . releaseLock ( ) ;
5855 }
59- writer ?. releaseLock ( ) ;
60- send = undefined ;
61- await serialPort . close ( ) ;
62- Dom . sendForm . setFieldsetDisabled ( false ) ;
63- } , reportError ) ;
64- } , console . warn ) ;
56+ }
57+ send = undefined ;
58+ await serialPort . close ( ) ;
59+ } catch ( e : any ) {
60+ Dom . reportError ( e . message || e . toString ( ) ) ;
61+ } finally {
62+ Dom . serialForm . setFieldsetDisabled ( false ) ;
63+ }
6564} ;
6665
6766[ ...FunctionCodes . descriptions . keys ( ) ] . forEach ( ( code : number ) => Dom . addFunctionCodeListOption ( code ) ) ;
0 commit comments