(RobotC)
Рассмотроим пример передачи данных по сети между двумя контроллерами. Потребуется написать две программы: передатчик и приемник сообщений. Отправляющая программа передает значение датчика расстояния в принимающую программу со скоростью 10 отсчетов в секунду. Программа-приемник обрабатывает значения со скоростью 20 отсчетов в секунду. Поскольку сообщения обрабатываются более быстрыми темпами, чем они передаются, часть очереди сообщений будет пустой. Программа-получатель использует метод bQueuedMsgAvailable(), чтобы увидеть, когда появилось новое сообщение. Если сообщения нет, то она ничего не передает. Если есть сообщение, данные доступны в массиве messageParm[], а затем удаляются при помощи функции ClearMessage().
Программа-передатчик
# pragma config ( Sensor , S1 , Sonar , sensorSONAR )
task main () { // основная зачада
int x1 , x2 , x3;
x2 =0;
x3 =0;
while ( true ) {
x1 = SensorValue [ Sonar ]; // запись значения датчика в переменную
sendMessageWithParms (x1 ,x2 ,x3 ); // отправка сообщения
wait1Msec (100); // задержка времени перед отправкой следующего сообщения
}
}
Программа-приемник
task main () { // основная зачада
while ( true ) {
if ( bQueuedMsgAvailable () ) { // если пришло новое сообщение
eraseDisplay (); // очистить экран
nxtDisplayCenteredTextLine (3,"%d", messageParm [0]); // вывод сообщения на экран
ClearMessage (); // удаление сообщения
}
wait1Msec (50); // задержка времени перед обработкой следующего сообщения
}
}
Отметим, что в отправляющей программе x2 и х3 - фиктивные переменные. В данном конкретном случае только одно из трех доступных целых чисел необходимо. Мы установили два других параметра в ноль и игнорируем их.
(NXT-G)
На языке NXT-G программа-передатчик не требует дополнительных параметров. Можно передавать только то значение, которое планируется использовать в дальнейшем.
Программа-приемник может выглядеть следующим образом.
Для вывода сообщения на экран оно переводится в текстовый формат, поскольку изначально передавалось число - значение расстояния с датчика.