1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
1

TCP эхо-сервер на STM32F4Discovery (embedded Lua)

28.01.2015, 17:56. Показов 2169. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Пытаюсь за стартовать TCP эхо-сервер на STM32F4Discovery. Это micro python (не нашел раздела про micro python - пишу здесь).

Скрипт такой
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#try:
import usocket as socket
#except:
#import socket
print("TCP/IP echo server")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ai = socket.getaddrinfo("192.168.0.10", 7)
print("Bind address info:", ai)
addr = ai[0][4]
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(addr)
s.listen(1)
print("Listening")
res = s.accept()
client_s = res[0]
client_addr = res[1]
print("Client address:", client_addr)
print("Client socket:", client_s)
while True:
    recv_buf = client_s.recv(128)
    client_s.send(bytes(recv_buf, "ascii"))
client_s.close()
Получаю такую ошибку:
Traceback (most recent call last):
File "main.py", line 6, in <module>
OSError: no available NIC
Вывод на экран:
TCP echo-server
/rom/tcp_server.lua:3: module 'net' not found:
no field package.preload['net']
no file '/mmc/net.lua'
no file '/mmc/net.lc'
no file '/wo/net.lua'
no file '/wo/net.lc'
no file '/rom/net.lua'
no file '/rom/net.lc'
no file '/semi/net.lua'
no file '/semi/net.lc'
stack traceback:
[C]: in function 'require'
/rom/tcp_server.lua:3: in main chunk
[C]: in function 'dofile'
stdin:1: in main chunk
[C]: ?
Т.е. нужно файл net.lua и/или net.lс поместить в папку ./romfs, но в Git-проекте (https://github.com/elua/elua) файлы net.lua и net.lc отсутствуют.

Настройки проекта:
-- STM32F4DISCOVERY build configuration

return {
cpu = 'stm32f407vg',
components = {
sercon = { uart = "cdc", speed = 115200 },
romfs = true,
cdc = { buf_size = 128 },
advanced_shell = true,
term = { lines = 25, cols = 80 },
tcpip = { ip = "192.168.0.10", netmask = "255.255.255.0", gw = "192.168.0.1", dns = "192.168.0.2" },
dhcp = false,
dns = true,
linenoise = { shell_lines = 10, lua_lines = 50 },
stm32f4_enc = true,
rpc = { uart = 0, speed = 115200 },
adc = { buf_size = 2 },
xmodem = true,
cints = true,
luaints = true
},
config = {
egc = { mode = "alloc" },
vtmr = { num = 4, freq = 10 },
ram = { internal_rams = 2 },
clocks = { external = 8000000, cpu = 120000000 }
},
modules = {
generic = { 'all', "-i2c", "-net" },
platform = 'all',
},
}
Дефайн 'BUILD_UIP' подключен. Как разрешается такая ошибка?


И вот несколько вопросов:
1) Что такое 'NIC'?
2) Не означает ли эта ошибка, что сеть для этой борды не поддерживается?
3) Вот описание функций net-модуля http://www.eluaproject.net/doc... l#overview
В функции recv(...) не понятно куда помещаются полученные данные. Мож кто подскажет - куда?

Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2015, 17:56
Ответы с готовыми решениями:

Tcp эхо сервер изменить чат
как можно изменить чат в tcp эхо сервере на с++, как сделать чтобы при получении ответа сервер...

TCP-эхо клиент-сервер (WinSock)
Здравствуйте! Подскажите, пожалуйста, почему TCP-эхо клиент-сервер неправильно работает? Сервер...

Эхо сервер без Qt, Boost и тп (TCP/UDP)
Добрый день! Стоит задача - реализовать эхо сервер (клиент-серверное приложение), которое будет...

Комментарии к коду эхо-клиент/эхо-сервер
Ребятки ,нужна очень ваша помощь !!! кому не тяжело напишите пожалуйста коментарии к кодам...

7
484 / 331 / 32
Регистрация: 15.08.2011
Сообщений: 1,071
28.01.2015, 21:09 2
Лучший ответ Сообщение было отмечено raxp как решение

Решение

Цитата Сообщение от RRR_RRR_RRR Посмотреть сообщение
1) Что такое 'NIC'?
Network inteface card. Сетевые карточки так называют.
Цитата Сообщение от RRR_RRR_RRR Посмотреть сообщение
2) Не означает ли эта ошибка, что сеть для этой борды не поддерживается?
Скорее всего так и есть.
1
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
29.01.2015, 08:31 3
Нет на плате ти_си_пи http://www.st.com/web/catalog/... /PF252419#
Цитата Сообщение от RRR_RRR_RRR Посмотреть сообщение
micro python
можно узнать где Вы для данной платы нашли?
0
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
29.01.2015, 09:20  [ТС] 4
Витальич, Вы правы, на самой борде нет ethernet модуля.
Eсть expansion борда http://www.element14.com/commu... ion-boards
И example для нее http://www.element14.com/commu... 4-bboardse
А micro python - это http://www.micropython.org + https://github.com/micropython/micropython
0
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
09.02.2015, 16:54  [ТС] 5
Добрый день!

Пытаюсь запустить TCP эхо-сервер на STM32F4Discovery + eLua (http://www.eluaproject.net)

Скрипт (теги Python поскольку для Lua нет тегов):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
print("TCP echo-server")
 
local net = require("net")
 
socket = net.socket(net.SOCK_STREAM)
 
remote_socket, remoteip, err = net.accept( 7 )
 
if (err == net.ERR_OK) then
    print("Accepted connection from " .. remoteip)
else
    print ("Error: " .. err)
end
 
while true
  do
    res, err = net.recv( remote_socket, "*|" )
    str = ""
    for i = 0, res
      do
        str = str + "A"
      end
 
    if (err == net.ERR_OK) then
      res, err = net.send( sock, str )
    end
 
    if (err == net.ERR_OK) then
      print("Send " .. res .. " bytes")
    else
      print ("Error: " .. err)
    end
  end
Вывод на экран:
TCP echo-server
/rom/tcp_server.lua:3: module 'net' not found:
no field package.preload['net']
no file '/mmc/net.lua'
no file '/mmc/net.lc'
no file '/wo/net.lua'
no file '/wo/net.lc'
no file '/rom/net.lua'
no file '/rom/net.lc'
no file '/semi/net.lua'
no file '/semi/net.lc'
stack traceback:
[C]: in function 'require'
/rom/tcp_server.lua:3: in main chunk
[C]: in function 'dofile'
stdin:1: in main chunk
[C]: ?
Т.е. нужно файл net.lua и/или net.lс поместить в папку ./romfs, но в Git-проекте (https://github.com/elua/elua) файлы net.lua и net.lc отсутствуют.

Настройки проекта:
-- STM32F4DISCOVERY build configuration

return {
cpu = 'stm32f407vg',
components = {
sercon = { uart = "cdc", speed = 115200 },
romfs = true,
cdc = { buf_size = 128 },
advanced_shell = true,
term = { lines = 25, cols = 80 },
tcpip = { ip = "192.168.0.10", netmask = "255.255.255.0", gw = "192.168.0.1", dns = "192.168.0.2" },
dhcp = false,
dns = true,
linenoise = { shell_lines = 10, lua_lines = 50 },
stm32f4_enc = true,
rpc = { uart = 0, speed = 115200 },
adc = { buf_size = 2 },
xmodem = true,
cints = true,
luaints = true
},
config = {
egc = { mode = "alloc" },
vtmr = { num = 4, freq = 10 },
ram = { internal_rams = 2 },
clocks = { external = 8000000, cpu = 120000000 }
},
modules = {
generic = { 'all', "-i2c", "-net" },
platform = 'all',
},
}
Дефайн 'BUILD_UIP' подключен. Как разрешается такая ошибка?


И вот еще вопрос "вдогонку":
Вот описание функций net-модуля http://www.eluaproject.net/doc... l#overview
В функции recv(...) не понятно куда помещаются полученные данные. Мож кто подскажет - куда?

Спасибо.

 Комментарий модератора 
Правила форума:

5.5. Запрещено размещать тему в нескольких подразделах одного раздела одновременно (кросспостинг), а также дублировать тему в одном разделе.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
09.02.2015, 19:39 6
TC, вопросы переименования тем в адекватные и корректировки названий - это прерогратива модератора, хватит прыгать выше головы. А третье создание дубля - есть прямое игнорирование правил форума.
0
1 / 1 / 1
Регистрация: 28.02.2013
Сообщений: 93
09.02.2015, 21:05  [ТС] 7
raxp, я попросил бы Вас не грубить, а попробовать разобраться в ситуации.
Вот несколько вопросов, на которые прошу ответить:
1) Почему нельзя послать Вам ЛС, чтобы прояснить Ваши определенные действия - перенос тем, слияние и т.д.? Из-за этого приходится отвлекать другого модератора.
2) Почему переносом тем и последующим их слиянием занимаются разные модераторы, в результате чего возникают коллизии подобные сегодняшней?
3) Зачем переносить тему про embedded Python из раздела "Python" в раздел "Микроконтроллеры"? То же про embedded Lua.
4) Почему при переносе не проверяется наличие в разделе тем с таким же названием?
5) К чему было писать предыдущий пост, если тема уже исчерпана?

Теперь поясню свои действия, связанные с "дублированием" тем.
Изначальная тема про embedded Python была в разделе "Python", и я просмотрел момент, когда она была перенесена в раздел "Микроконтроллеры".
Вторую тему про embedded Lua я назвал также (возможно это моя ошибка, но размещать тему в разделе и указывать в заголовке, что она именно для этого раздела - по-моему глупо), но задал там другой вопрос и разместил в разделе "Lua".
После этого она была зачем-то перенесена в раздел "Микроконтроллеры".
Затем увидев 2 темы с одинаковым названием Вы, уважаемый raxp, слили их в одну, но с существенной ошибкой - был потерян текст Lua-скрипта.
Я это увидел, но не смог до Вас достучаться (об этом я сообщил модератору 'Памирыч'), чтобы попросить исправить эту ошибку. 'Памирыч' "не увидел криминала" в кривом слиянии, а я счел этот момент критичным и решил все же восстановить последнюю тему в разделе "Микроконтроллеры", но уже с другим названием.
После этого вы ее удалили и исправили неверное слияние двух первых тем.

И последний вопрос:
6) Где я "прыгнул выше головы"? Я исправлял Ваш косяк, уважаемый модератор.

 Комментарий модератора 
Правила форума:

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


Добавлено через 13 минут
Как написать Вам лично?
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
09.02.2015, 21:06 8
Вам как раз не грубили, а указали на нарушение вами же правил форума, если вас не устраивают правила форума - напишите в предложения о правилах форума или покиньте форум.

1- потому что моя ЛС не отхожее место для жалоб и решения вопросов, находящихся исключительно в компетенции модератора раздела, а не пользователя, для жалоб есть кнопка пожаловаться, учитесь ею пользоваться.
2- это вообще не в вашей компетенции и вы не вправе вмешиваться согласно п.6.5 правил с которыми вы согласились при регистрации на форуме.
3- потому что вы занимаетесь кросспостингом одной и той же темы с одним и тем же содержанием в разных подразделах форума, кросспостинг - это нарушение правил форума. И тема касается работы с микроконтроллером.
4- проверяется и объединяется, при особом рецидиве удаляется.
5- дабы вы понимали причины и свои ошибки.
0
09.02.2015, 21:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2015, 21:06
Помогаю со студенческими работами здесь

Параллельный эхо-сервер. UDP сервер для передачи произвольного файла
Добрый вечер! Передо мной стоит такая задача: На базе шаблона параллельного эхо-сервера,...

VS c++ sockets (errors), Пример реализации TCP эхо-сервера
начал узучать сокеты в с++ , нашёл пример клиент серверного приложения. но возникают ошибки ,не...

Java.lang.IllegalArgumentException в нативных функциях (embedded Java, MicroEJ, STM32F4Discovery)
Добрый день! Пытаюсь связать embedded Java и C посредством нативных функций. Идея в...

Эхо-сервер
Доброго времени суток! Пишу эхо-сервер и возникла проблема с созданием вектора из массивов...

Эхо-сервер
Написать эхо-сервер. Тип входных данных - Целое число. Формат ответа - Сумма всех полученных...

Lua Socket TCP/IP скрипт зависает
Использую чпу для резки лазером. Язык расширения у неё Lua. Соединение по Ethernet. Команды лазер...

Параллельный эхо-сервер
На базе шаблона параллельного эхо-сервера, использующего модель “один клиент – один процесс”, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru