質問編集履歴

3

2020/09/16 01:18

投稿

Harris-1227
Harris-1227

スコア0

test CHANGED
File without changes
test CHANGED
@@ -284,7 +284,7 @@
284
284
 
285
285
  Serial.print((int)hoge);
286
286
 
287
- Serial.println("bytes sended");
287
+ Serial.println("bytes sent");
288
288
 
289
289
  ```
290
290
 
@@ -294,7 +294,7 @@
294
294
 
295
295
  sendTime: 93µs
296
296
 
297
- 6bytes sended
297
+ 6bytes sent
298
298
 
299
299
  ```
300
300
 

2

返信内容の追記

2020/09/16 01:18

投稿

Harris-1227
Harris-1227

スコア0

test CHANGED
File without changes
test CHANGED
@@ -261,3 +261,41 @@
261
261
  となっており,こちらはread()が-1を返す(バッファの読み込みが終わる)まで待機するような実装になっていました.
262
262
 
263
263
  JavaのOutputStream.flush()の様な強制的に書き込むようなメソッドがあればよかったのですが…
264
+
265
+
266
+
267
+ 追記です.
268
+
269
+ ESP32側で以下のように送ったバイト数と送信にかかった時間を計測しました.
270
+
271
+ ```Arduino
272
+
273
+ unsigned long Start = micros();
274
+
275
+ size_t hoge = SerialBT.write(ReplyBuffer2, sizeof(ReplyBuffer2) / sizeof(uint8_t));
276
+
277
+ unsigned long Stop = micros();
278
+
279
+ Serial.print(" sendTime: ");
280
+
281
+ Serial.print(Stop - Start);
282
+
283
+ Serial.println(F("µs"));
284
+
285
+ Serial.print((int)hoge);
286
+
287
+ Serial.println("bytes sended");
288
+
289
+ ```
290
+
291
+
292
+
293
+ ```SerialMonitor
294
+
295
+ sendTime: 93µs
296
+
297
+ 6bytes sended
298
+
299
+ ```
300
+
301
+ 送信に約0.1ms程度しかかかっていないため,ESP32側の送信は即座に行われているように見えます.

1

返信の内容を追記

2020/09/16 01:04

投稿

Harris-1227
Harris-1227

スコア0

test CHANGED
File without changes
test CHANGED
@@ -233,3 +233,31 @@
233
233
  Unity 2019.4.6f1
234
234
 
235
235
  ESP32 Arduino Core 1.0.4
236
+
237
+
238
+
239
+ ### 追記(2020/9/16)
240
+
241
+
242
+
243
+ Arduino(ESP32)側でflushしてみましたが変化はありませんでした.
244
+
245
+ ArduinoのSerial.flushは送信シリアルデータの送信が完了するのを待つという仕様になっているようです.ESP32のBluetoothSerial.flush()の実装を見ると,
246
+
247
+
248
+
249
+ ```C++
250
+
251
+ void BluetoothSerial::flush()
252
+
253
+ {
254
+
255
+ while(read() >= 0){}
256
+
257
+ }
258
+
259
+ ```
260
+
261
+ となっており,こちらはread()が-1を返す(バッファの読み込みが終わる)まで待機するような実装になっていました.
262
+
263
+ JavaのOutputStream.flush()の様な強制的に書き込むようなメソッドがあればよかったのですが…