Chebuya 415 Опубликовано: 10 июля, 2018 (изменено) Всем привет.Сразу извиняюсь за 20 тысяч вопросов на форуме,но не у кого спросить. Есть проблема с сетевой картой.Хочу передать пакет,и с этим все хорошо. Принять я его тоже могу,но только как ивент modem_message. Пример как я делал: msg,receiverAddress,senderAddress,port,distance,message = event.pull("modem_message") print(senderAddress,message) Выхлоп-адрес сетевой платы и 3 "nil" Как отправляю - component.modem.broadcast(89,_,_,_,_,io.read()) Всем за ранее спасибо. Изменено 11 июля, 2018 пользователем Alex форматирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim 272 Опубликовано: 11 июля, 2018 Чтобы понять какие данные принимает модем воспользуемся прогой local port = 1 --порт модема local event = require("event") local com = require ("component") local modem = com.modem local number = 0 modem.open(port) while true do number = number + 1 print("жду сообщение...") local e = {event.pull('modem_message')} print("сообщение "..number.."\n") for a, b in ipairs(e) do print(a.." "..tostring(b)) end print(" ") end Обычно принимает в таком виде 1 событие modem_message 2 адрес принимающей платы 3 адрес передающей платы 4 порт модема 5 растояние между платами 6 принятое сообщение Отправить данные для теста с ПК или планшета можно так local port = 1 --порт модема local com = require ("component") local modem = com.modem print("введите сообщение:") while true do modem.broadcast(port,io.read()) end Использовать полученную информацию, например так local event = require("event") local com = require ("component") local modem = com.modem modem.open(1) --порт модема local e = {event.pull('modem_message')} print(e[6]) В таком виде сообщение будет в шестой строке e[6] 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Гость Kartze Опубликовано: 10 июля, 2018 но только как ивент modem_message на моей памяти иначе и никак Как отправляю-component.modem.broadcast(89,_,_,_,_,io.read()) бродкасту нужны только порт и передаваемые данные, следовательно в твоем примере это должно выглядеть вот так:component.modem.broadcast(89, io.read()) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 10 июля, 2018 первый аргумент - это название события, как я помню, даже с фильтром оно возвращается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор вопроса 415 Опубликовано: 10 июля, 2018 на моей памяти иначе и никак Вернее,я пытаюсь получить данные всего пакета-но он выдаёт только modem_message.Как выдать остальные данные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор вопроса 415 Опубликовано: 10 июля, 2018 (изменено) первый аргумент - это название события, как я помню, даже с фильтром оно возвращается Если быть проще-мне нужен пример как передать весь пакет.С портом,адреса отправителя,данными. UPD:Однако,это помогло.Не знаю как,но после этого сообщения я сделал все правильно. Изменено 10 июля, 2018 пользователем BrightYC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 586 Опубликовано: 10 июля, 2018 -- передача данных, образец component.modem.broadcast(port, name_key) --прием данных на эвенте a = {} a = event.pull("modem_message") --ну да дальше работай с массивом, нужные аргументы обрабатывай и все. --вариант 2 без массива _, _, _, _, _, sms = event.pull("modem_message") --тут уже надо методом тыка все подгонять, где сообщение, где чего. Ну и формат передачи данных задавать жеский 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор вопроса 415 Опубликовано: 10 июля, 2018 (изменено) -- передача данных, образец component.modem.broadcast(port, name_key) --прием данных на эвенте a = {} a = event.pull("modem_message") --ну да дальше работай с массивом, нужные аргументы обрабатывай и все. --вариант 2 без массива _, _, _, _, _, sms = event.pull("modem_message") --тут уже надо методом тыка все подгонять, где сообщение, где чего. Ну и формат передачи данных задавать жеский Всё намного проще component.modem.broadcast(port,io.read()) message=event.pull("modem_message") Изменено 10 июля, 2018 пользователем BrightYC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 11 июля, 2018 Всё намного проще component.modem.broadcast(port,io.read()) message=event.pull("modem_message") Нет. У @Asior правильно (если забыть про то, что вы оба глобальные переменные юзаете). У тебя же в message будет не первая часть сообщения, а название ивента ("modem_message") всегда. Очень сомневаюсь, что именно это нужно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 11 июля, 2018 eventName: string, receiverAddress: string, senderAddress: string, port: number, distance: number, data... 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Всем привет.Сразу извиняюсь за 20 тысяч вопросов на форуме,но не у кого спросить.
Есть проблема с сетевой картой.Хочу передать пакет,и с этим все хорошо. Принять я его тоже могу,но только как
ивент modem_message. Пример как я делал:
Выхлоп-адрес сетевой платы и 3 "nil"
Как отправляю - component.modem.broadcast(89,_,_,_,_,io.read())
Всем за ранее спасибо.
Изменено пользователем Alexформатирование
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах