Передача данных

Чтобы отправить данные через интерфейс BLE, сохраните их в буфере TX методом bt.setdata и зафиксируйте для отправки методом bt.send. До вызова bt.send только что сохранённые данные остаются незафиксированными. Вызов bt.send фиксирует данные, и отправляются только зафиксированные данные. Объём зафиксированных данных в буфере можно узнать из свойства bt.txlen (только чтение), а объём незафиксированных - через bt.newtxlen. Свойство bt.txfree возвращает свободное место в буфере, но не учитывает незафиксированные данные, поэтому реальный объём свободного места равен bt.txfree - bt.newtxlen.

Например, так отправляется сообщение «Hello, World!» по нажатию кнопки MD (в этом фрагменте предполагается, что соединение BLE активно, то есть bt.connected = 1 - YES):

sub on_button_pressed
	bt.setdata("Hello,World!")
	bt.send
end sub

Приведённый выше код будет работать, но только если в момент его выполнения в буфере TX уже есть необходимый объём свободного места (иначе данные будут усечены). Поэтому перед отправкой нужно убедиться, что в буфере TX достаточно свободного места. Простое решение с опросом выглядит так:

sub on_button_pressed
	dim s as string="This is a long string waiting to be sent. Send me already!"
	while bt.txfree - bt.newtxlen < len(s) 'we will wait for the necessary amount of free space to become available
		doevents
	wend
	bt.setdata(s)
	bt.send
end sub

И этот способ отправки данных не рекомендуется. Вместо него используйте код со свойством bt.notifysent и событием on_bt_data_sent:

dim s as string
s = "This is a long string waiting to be sent. Send me already!"
sub on_button_pressed
	bt.notifysent(bt.txbuffsize-len(s)) ' causes the on_bt_data_sent event to fire when the TX buffer gets enough free space for the string
end sub
sub on_bt_data_sent
	bt.setdata(s)
	bt.send
end sub

По мере того как беспроводной модуль расширения Wi-Fi/BLE WA2000 отправляет данные из буфера TX, он постепенно удаляет их из буфера. Обратите внимание: опустошение буфера TX не означает, что все данные получены на другом конце канала BLE. Оно лишь означает, что BLE-аппаратура WA2000 уже забрала данные из буфера и как минимум начала их отправку. К сожалению, механизма, который сообщил бы приложению о фактическом получении отправленных данных на другом конце канала BLE, нет.

Удалить все данные из буфера TX можно методом bt.txclear.

Исходный материал Tibbo обновлён 27 июля 2022Оригинал на docs.tibbo.com · Сообщить об ошибке