@@ -266,22 +266,17 @@ class MicroPythonBoard {
266
266
async fs_put ( src , dest , data_consumer ) {
267
267
data_consumer = data_consumer || function ( ) { }
268
268
if ( src && dest ) {
269
- const contentBuffer = fs . readFileSync ( path . resolve ( src ) )
270
- let contentString = contentBuffer . toString ( )
271
- contentString = fixLineBreak ( contentString )
272
- const hexArray = contentString . split ( '' ) . map (
273
- c => c . charCodeAt ( 0 ) . toString ( 16 ) . padStart ( 2 , '0' )
274
- )
269
+ const fileContent = fs . readFileSync ( path . resolve ( src ) , 'binary' )
270
+ const contentBuffer = Buffer . from ( fileContent , 'binary' )
275
271
let out = ''
276
272
out += await this . enter_raw_repl ( )
277
- out += await this . exec_raw ( `f=open('${ dest } ','w ')\nw=f.write` )
273
+ out += await this . exec_raw ( `f=open('${ dest } ','wb ')\nw=f.write` )
278
274
const chunkSize = 48
279
- for ( let i = 0 ; i < hexArray . length ; i += chunkSize ) {
280
- let slice = hexArray . slice ( i , i + chunkSize )
281
- let bytes = slice . map ( h => `0x${ h } ` )
282
- let line = `w(bytes([${ bytes . join ( ',' ) } ]))`
275
+ for ( let i = 0 ; i < contentBuffer . length ; i += chunkSize ) {
276
+ let slice = Uint8Array . from ( contentBuffer . subarray ( i , i + chunkSize ) )
277
+ let line = `w(bytes([${ slice } ]))`
283
278
out += await this . exec_raw ( line )
284
- data_consumer ( parseInt ( ( i / hexArray . length ) * 100 ) + '%' )
279
+ data_consumer ( parseInt ( ( i / contentBuffer . length ) * 100 ) + '%' )
285
280
}
286
281
out += await this . exec_raw ( `f.close()` )
287
282
out += await this . exit_raw_repl ( )
@@ -293,20 +288,16 @@ class MicroPythonBoard {
293
288
async fs_save ( content , dest , data_consumer ) {
294
289
data_consumer = data_consumer || function ( ) { }
295
290
if ( content && dest ) {
296
- let contentString = fixLineBreak ( content )
297
- const hexArray = contentString . split ( '' ) . map (
298
- c => c . charCodeAt ( 0 ) . toString ( 16 ) . padStart ( 2 , '0' )
299
- )
291
+ const contentBuffer = Buffer . from ( content , 'utf-8' )
300
292
let out = ''
301
293
out += await this . enter_raw_repl ( )
302
- out += await this . exec_raw ( `f=open('${ dest } ','w ')\nw=f.write` )
294
+ out += await this . exec_raw ( `f=open('${ dest } ','wb ')\nw=f.write` )
303
295
const chunkSize = 48
304
- for ( let i = 0 ; i < hexArray . length ; i += chunkSize ) {
305
- let slice = hexArray . slice ( i , i + chunkSize )
306
- let bytes = slice . map ( h => `0x${ h } ` )
307
- let line = `w(bytes([${ bytes . join ( ',' ) } ]))`
296
+ for ( let i = 0 ; i < contentBuffer . length ; i += chunkSize ) {
297
+ let slice = Uint8Array . from ( contentBuffer . subarray ( i , i + chunkSize ) )
298
+ let line = `w(bytes([${ slice } ]))`
308
299
out += await this . exec_raw ( line )
309
- data_consumer ( parseInt ( ( i / hexArray . length ) * 100 ) + '%' )
300
+ data_consumer ( parseInt ( ( i / contentBuffer . length ) * 100 ) + '%' )
310
301
}
311
302
out += await this . exec_raw ( `f.close()` )
312
303
out += await this . exit_raw_repl ( )
0 commit comments