#android #flutter #dart #bluetooth #dart-pub
#Android #флаттер #dart #bluetooth #dart-pub
Вопрос:
В моем коде я использую библиотеку flutter_bluetooth_serial для связи с микроконтроллером.
Как я могу дождаться поступления всех байтов, прежде чем перейти к следующему шагу моей функции?
static download_file() {
send_data(Costanti.cmd_download_1, 1028); // here I send the command via bluetooth
// 1028 are the number of bytes I expect as answer
//--- WAIT THE ARRIVE OF ALL BYTES BEFORE PROCCED---------//
// manipulation of 1028 bytes
});
Функция с помощью I отправляет данные
static void send_data(List<int> charCodes, int byte_to_read){
Uint8List bytes = Uint8List.fromList(charCodes);
Costanti.dati_arrivati = new List<int>(); //------>> array where I accumulate incoming bytes
Costanti.connection.output.add(bytes); // Sending data
}
Функция, в которой я считываю входящие байты
static stream_read(){
Costanti.connection.input.listen((datiLetti) {
// print("${datiLetti.length}");
for(int i=0; i< datiLetti.length; i ){
Costanti.dati_arrivati.add(datiLetti[i])
}
}).onDone((){
toast_message("Device no longer connected");
});
}
Комментарии:
1.
//------>> array where I accumulate incoming bytes
? Не понимаю. Я бы подумал о arraay, в котором вы бы подготовили несколько байтов перед их отправкой.2. Мы не видим, чтобы вы вызывали stream_read().
3.
int byte_to_read
Вы не используете этот параметр. Далее я не понимаю, будут ли какие-либо байты для чтения для функции отправки.4. Costanti.connection.input.listen в strem_read () всегда прослушивается. Как только прибудет байт, он будет доступен с переменной «datiLetti».