@@ -98,10 +98,16 @@ class MicroPythonBoard {
98
98
99
99
async write_and_read_until ( cmd , expect , data_consumer ) {
100
100
this . serial . pause ( )
101
+ const chunkSize = 128
102
+ for ( let i = 0 ; i < cmd . length ; i += chunkSize ) {
103
+ const s = cmd . slice ( i , i + chunkSize )
104
+ await this . serial . write ( Buffer . from ( s ) )
105
+ await sleep ( 10 )
106
+ }
101
107
let o
102
- await this . serial . write ( Buffer . from ( cmd ) )
103
- await sleep ( 10 )
104
- if ( expect ) o = await this . read_until ( expect , data_consumer )
108
+ if ( expect ) {
109
+ o = await this . read_until ( expect , data_consumer )
110
+ }
105
111
await this . serial . flush ( )
106
112
await sleep ( 10 )
107
113
this . serial . resume ( )
@@ -129,6 +135,25 @@ class MicroPythonBoard {
129
135
return Promise . resolve ( out )
130
136
}
131
137
138
+ async execfile ( filePath , data_consumer ) {
139
+ data_consumer = data_consumer || function ( ) { }
140
+ if ( filePath ) {
141
+ const content = fs . readFileSync ( path . resolve ( filePath ) )
142
+ await this . enter_raw_repl ( )
143
+ const output = await this . exec_raw ( content . toString ( ) , data_consumer )
144
+ await this . exit_raw_repl ( )
145
+ return Promise . resolve ( output )
146
+ }
147
+ return Promise . reject ( )
148
+ }
149
+
150
+ async run ( code , data_consumer ) {
151
+ data_consumer = data_consumer || function ( ) { }
152
+ await this . enter_raw_repl ( )
153
+ const output = await this . exec_raw ( code || '#' , data_consumer )
154
+ await this . exit_raw_repl ( )
155
+ }
156
+
132
157
async eval ( k ) {
133
158
await this . serial . write ( Buffer . from ( k ) )
134
159
return Promise . resolve ( )
0 commit comments