2008-10-14 9 views
9

Я работаю над проектом автоматизации робота, и я столкнулся с дорожным блоком. Чтобы управлять роботом, нужно подключиться к нему по беспроводной сети через telnet и отправлять команды через протокол tcp/ip. (например, команда «Mabc» перемещает ее вперед в зависимости от скорости левого колеса (a), скорости правого колеса (b) и времени (c)). Я пытаюсь сделать некоторые вычисления в программе на C, а затем отправить сообщение роботу на основе значения вычисления.Использование telnet в программе C

Как отправлять команды через протокол tcp/ip в программе на C?

Спасибо!

Erik

ответ

16

Вы ищете розетки. This is a comprehensive guide to socket programming in C. Telnet также является хорошо определенным протоколом, хотя я не знаю, будет ли этот робот использовать telnet или нет (это дополнительные накладные расходы на обработку для протокола, который не имел бы большого преимущества для программы управления роботом). Telnet подробно освещена RFC 854

+2

Обычно они не реализуют полный протокол telnet, просто отправляя короткие команды ascii в порт 23. – 2008-10-14 22:05:00

6

Expect позволит вам взаимодействовать с внешними программами, но я не знаю о C-порту ожидания. В противном случае вы найдете библиотеку telnet на C или напишите свой собственный, используя программирование сокетов.

0

Я был бы:

  • писать простые скрипты, содержащие телнет interractions, написанные, как здесь документы.
  • с использованием файла .telnetrc в вашем домашнем каталоге для управления аспектами вашего сеанса telnet, например. crmod
  • вызов сценария с использованием системных вызовов.

Таким образом, ваше время на изменение времени, затрачиваемое на изменение ваших перемещений с помощью робота, не будет связано с необходимостью перекомпилировать вашу программу все время.

BTW Звучит весело.

HTH.

веселит,

Роб

2

Expect был разработан, чтобы сделать именно это - проводить беседы с интерактивными программами. Он написан в Tcl, расширяя интерпретатор Tcl различными командами. Tcl очень легко расширить; он был разработан как встроенный язык сценариев прямо из слова go. Основной C API использует конструкции argv-типа для передачи параметров командам Tcl и очень прост в использовании. Лучшим руководством по API C является Ousterhout's original book, и мне потребовался один двухчасовой лабораторный сеанс, чтобы запустить мой первый встроенный интерпретатор Tcl.

В качестве бонуса вы также получаете встроенный Tcl-интерпертер, который вы можете использовать для добавления возможностей сценариев в ваше приложение. Вероятно, вы обнаружите, что в Tcl может быть реализовано совсем немного, если вы чувствуете себя настолько склонным, что, вероятно, сэкономит вам время в целом.

4

Я хотел бы использовать libcurl: http://curl.haxx.se/libcurl/. Он будет делать то, что вы хотите, и обрабатывать все телеты telnet, которые вы действительно не хотите обрабатывать.

Смежные вопросы