Написание кода
Ниже приведён весь ваш первый проект целиком. Его можно просто скопировать в файл main.tbs.
Внимания потребует только строка, начинающаяся с net.ip. Нужно назначить устройству подходящий IP-адрес, «совместимый» с вашим сегментом сети. На практике это означает, что первые три числа IP-адреса совпадают с IP-адресом вашего ПК, а четвёртое отличается. Например, если IP-адрес вашего ПК 192.168.1.40, можно попробовать задать устройству Tibbo адрес 192.168.1.41. Конечно, сначала убедитесь, что этот адрес не занят: попробуйте выполнить ping - если ответа нет, адрес, скорее всего, свободен.
Возможно, вы задумались о DHCP: разве это не безопасный и удобный способ получить действительный и свободный IP-адрес? Разве не обычное, если не повсеместное, дело - когда сетевое устройство получает IP-адрес при загрузке?
Устройства Tibbo устроены иначе: они загружаются с IP-адресом по умолчанию 1.0.0.1. Ваша программа может напрямую настроить этот адрес через свойство net.ip. Если приложению нужен DHCP, Tibbo предлагает библиотеку DHCP, которую легко встроить в проекты.
Обратите внимание: правильный IP-адрес не обязателен для работы перекрёстной отладки. Даже если оставить адрес по умолчанию 1.0.0.1, TIDE получит доступ к вашему устройству Tibbo. Однако при использовании симулятора TiOS нужно выбрать подходящий IP-адрес, не зависящий от IP-адреса ПК-хоста.
include "global.tbh"
sub on_sys_init()
net.ip="192.168.1.222" '<—- set the correct IP
sock.rxbuffrq(1)
sock.txbuffrq(1)
sys.buffalloc
sock.protocol=PL_SOCK_PROTOCOL_TCP
sock.localportlist="1000"
sock.inconmode=PL_SOCK_INCONMODE_ANY_IP_ANY_PORT
sock.reconmode=PL_SOCK_RECONMODE_3
end sub
sub on_sock_data_arrival()
dim s as string
s=sock.getdata(sock.txfree)
sock.setdata(s)
sock.send
end sub
sub on_sock_event(newstate as enum pl_sock_state,newstatesimple as enum pl_sock_state_simple)
if newstatesimple=PL_SSTS_EST then
sock.setdata("HELLO WORLD!")
sock.send
end if
end sub
Обратите внимание, какой маленькой получилась ваша первая программа на Tibbo BASIC! В этом сила Tibbo BASIC (и C): сложные задачи решаются в считаные строки кода.
Несколько замечаний к этому коду:
- Обработчик события on_sys_init подготавливает один прослушивающий TCP-сокет.
- Обработчик события on_sock_data_arrival берёт всё, что принял TCP-сокет, и отправляет обратно.
- Обработчик события on_sock_event для эхо-приложения не нужен; его добавили, потому что хотелось где-нибудь увидеть хрестоматийное «HELLO WORLD!». Эта строка отправляется при каждом установлении TCP-соединения.