Я хочу написать программу Forth для своего Raspberry Pi. Эта программа должна считывать некоторые данные датчиков из существующего файла и отправлять их на веб-сайт, где эти данные хранятся.
Поискав в Интернете, можно было найти множество документации о том, насколько легко и быстро Форт и как вычислять числа Фибоначчи. Но как я могу запросить URL-адрес? Как я могу отправить данные на сайт и обработать результат?
Если нет поддержки сокетов: можно ли запустить внешнюю программу, такую как curl / wget, для выполнения запроса?
Я только что нашел пример на rosettacode. И еще вопрос по этому поводу: stackoverflow.com/questions/49602466/forth-networking-librar y
Предоставляет ли Raspberry Pi какую-либо документацию относительно их реализации Forth? Все дело в том, какие слова Forth они могут предоставить в библиотеке для своего Forth. Доступные библиотеки GForth, вероятно, не помогут вам, если вы не захотите самостоятельно портировать реализацию из этого домена.
Важно упомянуть, какую реализацию Forth вы используете на Raspberry Pi? Поскольку сокеты не являются частью стандарта, сетевые библиотеки и API зависят от реализации.
Вот пример из Rosettacode: rosettacode.org/wiki/HTTP#Forth Он работает с "include unix / socket.fs"
Из вопроса не очевидно, какая реализация Forth используется.
Например, Gforth (доступен на Raspberry Pi)
имеет некоторую поддержку сокетов, а также позволяет запускать внешнюю программу с использованием слова system
. Смотрите мой ответ на аналогичный вопрос: Как мне прочитать необработанный код с веб-сайта в Gforth?
Пример создания дочернего процесса завиток в Gforth:
S" curl https://example.com/" system
В любом случае, кажется, что наиболее перспективным подходом к данной проблеме является разработка привязки к libcurl (если она еще не существует для используемой реализации Forth).
OP работает Forth на Raspberry Pi. Доступна ли ему та же библиотека сокетов, что и Gforth?
@lurker, спасибо - мне очень не хватало того, что в вопросе не упоминается реализация Forth. Теперь я соответствующим образом обновил ответ. В случае использования libcurl нет необходимости в библиотеке сокетов.
Хороший вопрос (на который я не знаю ответа). Для Gforth (который я фактически установил на Raspberry Pi) на их страница, в "библиотеки" он перечисляет "httpd.fs, веб-сервер (недокументированный)" - поэтому я предполагаю, что есть доступ к сокетам.