Перейти к публикации
Форум - ComputerCraft
Asummonster

"Блютуз" на модеме

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

Всем привет!

В этой теме я расскажу о своей программе "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

Изменено пользователем AlexCC
  • Like 5

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


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

И зачем? Както странно сделано... Я лучше дискетой воспользуюсь.

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


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

В реале тоже так делаешь?

 

Ага, я так винду ставил :D

 

2227921.jpg

 

  • Like 5

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


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

Я сначала прочитал название темы "Блюз" на модеме из OpenComputers :smile3:

  • Like 1

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


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

Её функции возможно переделать так, что бы название файла, порта вбивать в программе? Да и вообще что бы при вызове функции это всё срабатывало и не нужно было в терминале вбивать?  

 

(Очень хочу, но не позволяет барьер написания)

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


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

Её функции возможно переделать так, что бы название файла, порта вбивать в программе? Да и вообще что бы при вызове функции это всё срабатывало и не нужно было в терминале вбивать?  

 

(Очень хочу, но не позволяет барьер написания)

Вопрос не совсем понятен. О какой программе и функции идет речь? Можно пример?

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


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

Вопрос не совсем понятен. О какой программе и функции идет речь? Можно пример?

@@Zer0Galaxy Для передачи файла нужно на первом и втором компе ввести в терминал 

Bluetooth -get tralala 888 (1-й комп) и Bluetooth -send tralala 888 (2-й комп). 

И выходит, что функции передают и принимают файл только после ввода команды. Возможно ли сделать так, что бы не нужно было вводить эти строки в терминал, а просто запустить функцию, и она уже передаст файл.

(Переделать функции таким образом, чтобы внутри них менять этот порт, название файла и при запуске функции уже шла передача и приём файла без ввода команд , те просто убрать необходимость в ручном вводе, и всё это делала сама функция)

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

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


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

Думаю на основе либы Zn можно сделать что-то такое.

Нода Zn висит в памяти в фоновом режиме и после небольшой модификации может так же фоново принимать файлы.

Тогда не потребуется ничего запускать на принимающем компьютере (главное чтобы был в зоне действия сети), а можно будет просто вызвать команду для отправки на посылающем компьютере.

Кнопочку там тыкнуть какую-то, или send в терминале набрать.

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

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


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

Почему не использовать бы более свежие штуки, например ftp-client ftp-server?

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

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


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

Почему не использовать бы более свежие штуки, например ftp-client ftp-server?

Потому что мне нужнен запуск отдачи и приёма файла по запуску функции.

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×