Передача данных
Чтобы отправить данные через интерфейс 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.