- 0
Войдите, чтобы подписаться
Подписчики
0
Как сделать так чтобы запустить 2 повтора while одно временно без ошибки, чтобы в 1-м было io.read(), а во 2-м event.pull?
Спросил
Oleshe
Спросил
Oleshe
Я сижу и надумал сделать себе что то типа смс, но, когда запускаю сравнение с even.pull даже с задержкой 2, оно не даёт пользывателю написать сообщение, выглядит это примерно так: запрашиваем от сервера свободный порт, получает его и сравнивает цифра, ставит отметку на тот порт который ему прислал сервер, открывает его, после ждёт сообщения(even.pull) и ждёт сообщения для отправки(io.read) если сообщение отправлено то оно посылает порт для получателя и само сообщение, сервер отправляет сообщение по порту на планшет (или ПК) но указанный порт, если мы введём exit то мы отправим что ранее записанный порт программой свободен сервер отметит, и мы закрываем порт, если сообщение приходит, то мы выводим его на экран.
Также может прислать просто пустое сообщение.
извините что так много но я очь много времени потратил ;-;
event = require('event')
cmp = require('component')
os = require('os')
modem = cmp.modem
print('удачность соединения:')
print(modem.open(1))
two = false
thre = false
four = false
five = false
beep = cmp.computer.beep()
function prog()
while boo == false do
_, _, _, _, _, sus = event.pull("modem_message")
print(sus)
if sus == 'sms_chek' then
if two == false then
modem.broadcast(16, '2')
print('послано 2')
two = true
else
os.sleep(0.5)
if thre == false then
modem.broadcast(16, '3')
print('послано 3')
thre = true
else
os.sleep(0.5)
if four == false then
modem.broadcast(16, '4')
print('послано 4')
four = true
else
os.sleep(0.5)
if five == false then
modem.broadcast(16, '5')
print('послано 5')
five = true
else
print('ОШИБКА, НЕТ МЕСТ <SMS>')
end
end
end
end
end
if sus == 'sms_exit' then
_, _, _, _, _, oi = event.pull("modem_message")
if oi == '2' then
two = false
else if oi == '3' then
thre = fasle
end
end
if oi == '4' then
four = false
else if oi == '5' then
five = false
end
end
end
if sus == 'sms_messege' then
_, _, _, _, _, s = event.pull("modem_message")
os.sleep(1)
_, _, _, _, _, sms = event.pull("modem_message")
if s == '' then
print('чуть не произошла ошибка')
else
print('oправленно: ' .. sms .. ' ' .. 'на порт: ' .. s)
portsms = tonumber(s)
smska = sms
modem.broadcast(portsms, 'SMS')
os.sleep(1)
modem.broadcast(portsms, sms)
end
end
end
end
boo = false
function shell ()
while exit == false do
as = io.read()
if as == 'exit' then exit = true
end
end
end
shell()
prog()
ето код сервера
реально много получается
код: планшета:
local cmp = require('component')
local modem = cmp.modem
local event = require('event')
local exit = false
print(modem.open(16))
local a = 0
modem.open(16)
sms = ''
while sms == '' do
modem.broadcast(1, 'sms_chek')
print('попытка соединения с сервером')
_, _, _, _, _, sms = event.pull("modem_message")
if sms == '2' then
modem.close(16)
modem.open(2)
port = '2'
print('порт: 2')
print(modem.open(2))
else if sms == '3' then
modem.close(16)
modem.open(3)
port = '3'
print('порт: 3')
print(modem.open(3))
else if sms == '4' then
modem.close(16)
modem.open(4)
port = '4'
print('порт: 4')
print(modem.open(4))
else if sms == '5' then
modem.close(16)
modem.open(5)
port = '5'
print('порт: 5')
print(modem.open(5))
end
end
end
end
end
smsRAM = false
RAM = ''
function send ()
while exit == false do
_, _, _, _, _, sms = event.pull(2, "modem_message")
if sms == '' then
else if sms == 'SMS' then
print('получен смс:')
_, _, _, _, _, sms = event.pull(2, "modem_message")
RAM = sms
smsRAM = true
print(sms)
end
end
local sa = io.read()
if sa == 'exit' then
exit = true
modem.broadcast(1, 'sms_exit')
modem.broadcast(1, port)
cmp.computer.beep()
else
modem.broadcast(1, 'sms_messege')
os.sleep(1)
modem.broadcast(1, sa)
local sa =io.read()
modem.broadcast(1, sa)
print('отправлено')
end
if sa == '' then
if smsRAM == true then
print(RAM)
smsRAM = false
end
end
end
end
send()
еше раз извините что много, прост хочется решить проблему
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах