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

TSR mail или элементарная почта с пересылкой файлов

Рекомендуемые сообщения

А как сделать, чтобы эта штука сигнализировала пользователю о том, что новое сообщение получено и записано в файл?

После h:close можно написать computer.beep.

Ох ты, набежали тут, примеров накидали ) я вообще-то с LeshaInc разговаривал ))Ну ладно, попробуйте event.listen повесить без OpenOS, и на этом закроем тему.

Тут либо делать поток thread, либо через подмену, либо посмотрев реализацию event.listen.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

После h:close можно написать computer.beep.

Не вариант. Одиночный бип я могу и не услышать. Нужно чтобы хотя-бы раз в пару секунд бипать начал.

Тут либо делать поток thread, либо через подмену, либо посмотрев реализацию event.listen.

Как вариант, внутри обработчика входящих от модема можно повесить новый обработчик по таймеру

local beep=event.timer(1, function() computer.beep(440) end, math.huge)

а снаружи, добавить еще один, который будет слушать клавиатуру и по нажатию на клавишу делать

if beep then event.cancel(beep) end

 

upd:

Итак, совместные усилия превратились в код нового, хорошего и правильного tsrmail.lua

local port = 9

if _tsrmail then
  io.write('tsrmail already loaded @ port ',_tsrmail)
else
  local beep, cp, ev = false, require("computer"), require("event")
  require("component").modem.open(port)

  local function listener(...)
    local e={...}
    if e[4] == port then
      local h = io.open('@','a')	
      h:write('--', os.date(), ' from:', e[3], ' port:', e[4], '\n')
      h:write(table.concat(e,'\n',6))
      h:close()	
      if not beep then 
        beep=ev.timer(2, function() cp.beep(440) end, math.huge)
      end 
    end
  end

  local function unbeep()
    if beep then 
      ev.cancel(beep)
      beep=false 
    end
  end

  ev.listen("key_down", unbeep)
  ev.listen("modem_message", listener)

  io.write('tsrmail loaded @ port ', port)
  _G._tsrmail=port
end

Спасибо всем оппонентам, кто высказывался по делу:

Zer0Galaxy за, -можно повесить слушателя на событие

LeshaInc за, -покажу на примере

Fingercomp за, -события будут продолжать обрабатываться даже после завершения программы

Zer0Galaxy за, -можно еще порт и дистанцию прилепить

NEO за, -лучше io используй

И всем остальным за общее комментирование и множественные примеры.

Изменено пользователем swg2you

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...