Asummonster 592 Опубликовано: 13 июня, 2015 (изменено) Всем привет! В этой теме я расскажу о своей программе "Bluetooth" на плате проводной или беспроводной сети. Что же она делает? Всё очень просто=) Отправляет файлы через модем. Рассмотрим её получше. Я на планшете открываю файл с произвольным именем.Пишу в него всякую ерунду: http://joxi.ru/gmv6e07IDRy4ma Сохраняю его и пишу bluetooth: http://joxi.ru/DmB1EQxhlYd0rP Мне надо отправить этот файл. Я подхожу к компьютеру и пишу : "bluetooth -get testTheBlue.lua 25" http://joxi.ru/823nja5FYl64mO Теперь выполняю команду на планшете: "bluetooth -send testTheBlue.lua 25" http://joxi.ru/RmzKg0zcDKW42O Нажимаю Enter! Компьютер получил код с планшета и вышел из программы: http://joxi.ru/gmv6e07IDRx4ma Запускаю программу и... ура! Вот,что написал компьютер: http://joxi.ru/xAeNen5hKqpPry Вот код: com=require("component") if com.isAvailable("modem") then modem=com.modem else error("Нет модема!") end event=require("event") term=require("term") fs=require("filesystem") args={...} func=args[1] fileNAME=args[2] PORT=tonumber(args[3]) ENDOFGETTHEFILE=true if func==nil or fileNAME==nil or PORT==nil then print("Использование: -get <filename> <port> для получения файла\n -send <filename> <port> для отправки") end function sendFile(filename, port) modem.open(port) for line in io.lines(filename) do modem.broadcast(port, line) end modem.broadcast(port, "ENDOFTHECURRENTLYFILE") modem.close(port) end function getFile(filename, port) modem.open(port) getted=io.open(filename, "w") while ENDOFGETTHEFILE do _, _, _, _, _, LINE = event.pull("modem_message") if LINE=="ENDOFTHECURRENTLYFILE" then getted:flush() getted:close() ENDOFGETTHEFILE=false else print(LINE) getted:write(LINE.."\n") end end end if func=="-get" then if fs.exists(fileNAME) then print("Данный файл уже существует! Задайте другое имя!"); error() else getFile(fileNAME, PORT) end elseif func=="-send" then if not fs.exists(fileNAME) then print("Такой файл не найден!"); error() else sendFile(fileNAME, PORT) end end Изменено 25 июля, 2015 пользователем AlexCC 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 13 июня, 2015 Ура, табуляция! 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
HuKuTa 0 Опубликовано: 6 февраля, 2016 И зачем? Както странно сделано... Я лучше дискетой воспользуюсь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 6 февраля, 2016 Дискетой? При наличии сети? В реале тоже так делаешь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SDV 784 Опубликовано: 6 февраля, 2016 В реале тоже так делаешь? Ага, я так винду ставил 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 6 февраля, 2016 Я сначала прочитал название темы "Блюз" на модеме из OpenComputers 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Miroshka 5 Опубликовано: 27 ноября, 2017 Её функции возможно переделать так, что бы название файла, порта вбивать в программе? Да и вообще что бы при вызове функции это всё срабатывало и не нужно было в терминале вбивать? (Очень хочу, но не позволяет барьер написания) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 27 ноября, 2017 Её функции возможно переделать так, что бы название файла, порта вбивать в программе? Да и вообще что бы при вызове функции это всё срабатывало и не нужно было в терминале вбивать? (Очень хочу, но не позволяет барьер написания) Вопрос не совсем понятен. О какой программе и функции идет речь? Можно пример? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Miroshka 5 Опубликовано: 27 ноября, 2017 (изменено) Вопрос не совсем понятен. О какой программе и функции идет речь? Можно пример? @@Zer0Galaxy Для передачи файла нужно на первом и втором компе ввести в терминал Bluetooth -get tralala 888 (1-й комп) и Bluetooth -send tralala 888 (2-й комп). И выходит, что функции передают и принимают файл только после ввода команды. Возможно ли сделать так, что бы не нужно было вводить эти строки в терминал, а просто запустить функцию, и она уже передаст файл. (Переделать функции таким образом, чтобы внутри них менять этот порт, название файла и при запуске функции уже шла передача и приём файла без ввода команд , те просто убрать необходимость в ручном вводе, и всё это делала сама функция) Изменено 27 ноября, 2017 пользователем Miroshka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 28 ноября, 2017 (изменено) Думаю на основе либы Zn можно сделать что-то такое. Нода Zn висит в памяти в фоновом режиме и после небольшой модификации может так же фоново принимать файлы. Тогда не потребуется ничего запускать на принимающем компьютере (главное чтобы был в зоне действия сети), а можно будет просто вызвать команду для отправки на посылающем компьютере. Кнопочку там тыкнуть какую-то, или send в терминале набрать. Изменено 28 ноября, 2017 пользователем Totoro Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Seryoga 184 Опубликовано: 28 ноября, 2017 (изменено) Почему не использовать бы более свежие штуки, например ftp-client ftp-server? Изменено 28 ноября, 2017 пользователем Seryoga Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Miroshka 5 Опубликовано: 28 ноября, 2017 Почему не использовать бы более свежие штуки, например ftp-client ftp-server? Потому что мне нужнен запуск отдачи и приёма файла по запуску функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах