MineOS/Applications/fileSender.lua
2016-03-06 20:42:55 +03:00

77 lines
1.6 KiB
Lua

local event = require("event")
local modemConnection = require("modemConnection")
local component = require("component")
local ecs = require("ECSAPI")
local ECSAPI = {}
function ECSAPI.checkFileExists(path)
if fs.exists(path) then
return true
else
ecs.error("Файл \"" .. path .. "\" не существует.")
return false
end
end
function ECSAPI.sendData()
end
function ECSAPI.sendFile(path, address, port)
component.modem.open(port)
local fileSize = fs.size(path)
local maxPacketSize = component.modem.maxPacketSize() - 16
local countOfPacketsToSend = math.ceil(fileSize / maxPacketSize)
local file = io.open(path, "rb")
for i = 1, countOfPacketsToSend do
local percent = math.floor(i / countOfPacketsToSend * 100)
ecs.progressWindow("auto", "auto", 40, percent, "Отправка файла: " .. i * maxPacketSize .. "/" .. fileSize .. " байт")
component.modem.send(address, port, file:read(maxPacketSize))
end
file:close()
component.modem.close(port)
end
function ECSAPI.receiveFile(fromAddress, fromPort, pathToSave)
component.modem.open(fromPort)
fs.makeDirectory(fs.path(pathToSave))
local file = io.open(pathToSave, "wb")
while true do
local eventData = { event.pull("modem_message") }
if eventData[3] == fromAddress and eventData[4] == fromPort then
file:write(eventData[6])
end
end
file:close()
component.modem.close(fromPort)
end
modemConnection.sendPersonalData()
modemConnection.search()
ECSAPI.sendFile("lib/image.lua", modemConnection.remoteAddress, 228)
ECSAPI.receiveFile(modemConnection.remoteAddress, 228, "testFileToReceive.lua")