Перейти к содержимому


Фотография

Сетевая карта


Лучший Ответ NEO , 10 Июль 2018 - 21:05

первый аргумент - это название события, как я помню, даже с фильтром оно возвращается

Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 Оффлайн   BrightYC

BrightYC
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Отправлено 10 Июль 2018 - 20:00

Всем привет.Сразу извиняюсь за 20 тысяч вопросов на форуме,но не у кого спросить.

 

Есть проблема с сетевой картой.Хочу передать пакет,и с этим все хорошо. Принять я его тоже могу,но только как

ивент modem_message. Пример как я делал:

msg,receiverAddress,senderAddress,port,distance,message = event.pull("modem_message")
print(senderAddress,message)

Выхлоп-адрес сетевой платы и 3 "nil"

Как отправляю - component.modem.broadcast(89,_,_,_,_,io.read())

 

Всем за ранее спасибо.


Сообщение отредактировал Alex: 11 Июль 2018 - 15:31
форматирование


#2 Оффлайн   Kartze

Kartze
  • Пользователи
  • Сообщений: 462
  • Уровень сигнала: 38,54%
  • В игре: 314 час. 2 мин.
  • ГородКрасноярск

Награды

              

Отправлено 10 Июль 2018 - 20:21

но только как ивент modem_message
 

на моей памяти иначе и никак

Как отправляю-component.modem.broadcast(89,_,_,_,_,io.read())
 

бродкасту нужны только порт и передаваемые данные, следовательно в твоем примере это должно выглядеть вот так:
component.modem.broadcast(89, io.read())



#3 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 760
  • Уровень сигнала: 4,47%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 10 Июль 2018 - 21:05   Лучший Ответ

первый аргумент - это название события, как я помню, даже с фильтром оно возвращается



#4 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Отправлено 10 Июль 2018 - 21:13

 

на моей памяти иначе и никак

Вернее,я пытаюсь получить данные всего пакета-но он выдаёт только modem_message.Как выдать остальные данные?



#5 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Отправлено 10 Июль 2018 - 21:17

первый аргумент - это название события, как я помню, даже с фильтром оно возвращается

Если быть проще-мне нужен пример как передать весь пакет.С портом,адреса отправителя,данными.
UPD:Однако,это помогло.Не знаю как,но после этого сообщения я сделал все правильно.


Сообщение отредактировал BrightYC: 10 Июль 2018 - 21:18


#6 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 160
  • Уровень сигнала: 62,97%
  • В игре: 513 час. 5 мин.

Награды

                          

Отправлено 10 Июль 2018 - 22:41

-- передача данных, образец
component.modem.broadcast(port, name_key)
--прием данных на эвенте
a = {}
a = event.pull("modem_message")
--ну да дальше работай с массивом, нужные аргументы обрабатывай и все.
--вариант 2 без массива
_, _, _, _, _, sms = event.pull("modem_message")
--тут уже надо методом тыка все подгонять, где сообщение, где чего. Ну и формат передачи данных задавать жеский

  • eu_tomat и vx13 это нравится

#7 Оффлайн   BrightYC

BrightYC
  • Автор темы
  • Пользователи
  • Сообщений: 38
  • Уровень сигнала: 0,04%
  • В игре: 0 час. 19 мин.

Отправлено 11 Июль 2018 - 01:15

-- передача данных, образец
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")

Сообщение отредактировал BrightYC: 11 Июль 2018 - 01:20


#8 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 2 006
  • Уровень сигнала: 156,98%
  • В игре: 1279 час. 4 мин.

Награды

                                               

Отправлено 11 Июль 2018 - 07:17

Всё намного проще
component.modem.broadcast(port,io.read())
message=event.pull("modem_message")

Нет. У Asior правильно (если забыть про то, что вы оба глобальные переменные юзаете). У тебя же в message будет не первая часть сообщения, а название ивента ("modem_message") всегда. Очень сомневаюсь, что именно это нужно.


  • Asior это нравится

#9 Оффлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 760
  • Уровень сигнала: 4,47%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 11 Июль 2018 - 10:11

eventName: string, receiverAddress: string, senderAddress: string, port: number, distance: number, data...


  • eu_tomat это нравится

#10 Оффлайн   serafim

serafim
  • Пользователи
  • Сообщений: 9
  • Уровень сигнала: 7,48%
  • В игре: 60 час. 55 мин.

Награды

                    

Отправлено 11 Июль 2018 - 10:54

Чтобы понять какие данные принимает модем воспользуемся прогой

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]


  • Asior и eu_tomat это нравится




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных