Easyelectronics.ru

Электроника для всех
Текущее время: 13 ноя 2019, 08:03

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: О том как нажить себе головную боль.
СообщениеДобавлено: 03 апр 2018, 01:32 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1109
Привет!

Короче попросили тут меня зафигачить опрос подсети RS485 c MR3020, типа есть несколько таких устройств, да и вообще они в магазах лежать и стоят дешевле Raspberry.
Так как раньше с этим железом я работал, и знаю про вроде бы все танцы с бубном то отказываться не стал. Тем более что роутер с прикрученным к нему CyberWRT уже довольно долго пашет у меня дома в качестве принтсервера в кладовке :) (ну некуда было больше принтер воткнуть :) )

Надеялся я как ребенок на легкий расклад: Python он и в африке Python, думал сейчас как замучу копи паст и все запашет...
Лирическое отступление:
Оригинальный девайс для опроса сети довольно неплохо пашет на Raspberry Pi3b и мне ее даже жалко иногда, так как кроме Питоновского скрипта на сетке из устройсв на RS485 и прикрученной поверх Апача вебморды статистики и MySQL нет там больше нифига. По сути дела Распуха радуется жизни и нихрена не делает.

Ну да ладно.
Первым делом решил проверить будет ли это все дело пахать с FTDI, цепанул хаб поставил дрова, нашел в куче флешек 128 меговую (ее точно хватит) ну и расширил область на флешку.
Поставил: python и дрова Ftdi.
Запустил своего мелкого демона перехватчика на RS485 и начал пробовать:
Первая команда из под оболочки на MR3020:
Код:
>  echo -e :0103fc"\r" >/dev/ttyUSB0

ответ от первого устройства не заставил себя ждать и я получил данные на демоне

Настроение резко улучшилось, полученные данные говорят о том, что дрова FTDI правильные и поддержка RS485 пашет нормально (RE\DE правильно переключаются) , а это значит, что родной UART устройства можно оставить в покое.

Дальше даю команду:
Код:
> cat /dev/ttyUSB0

и получаю первый прикол при приеме данных летит мусор, а затем и вовсе порт блокируется Демон начинает верещять, что на линии устройтво заблокировало линию (давит лог "0") - чертыхнулся, полез распаивать GPIO в MR3020 (дабы замутить переключатель RE/DE) к тому моменту гребенка TX\RX\GND\V3.3 уже была распаяна на штатное место.
Все сделал, пришлось вычишать в настройках MR3020 чтоб скорость порта опустить до 9600, и запретить сливать на внутренний UART лог системной инфы.
Пробую запускаться и переключать GPIO -

Код:
echo 7 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio7/direction

echo 1 >  /sys/class/gpio/gpio7/value
echo 0 >  /sys/class/gpio/gpio7/value

- жизнь прекрасна... все работает, в двойне приятно что по умолчанию при включении на 7 выводе лог "0" т.е. MAX487 будет в режиме приема.

Ладно думаю где наша не пропадала, сейчас закину тестовый скрипт под Питона, и попробую опять с FTDI

Код:
#!/usr/bin/python
import time
import serial

ser = serial.Serial('/dev/ttyUSB0',9600)
ser.flushInput()

while 1:
   data=ser.readline()
   dev_number = int(data[1:3],16)
   command = int(data[3:5],16)
   if (len(data)<10):
      print "Comand line detected " + data
   else:
      Z1 = int(data[5:11],16)
                print Z1
        data=""


В Питоне не оказалось библиотеке PySerial

Начал злится (то что должно было занять 1 час времени уже заняло пол дня)

Бросил все к чертям, собачим так как ко всем приколам еще и связь WinSCP не устанавливается с MR3020 (хотя с распбери они нормально общаются) причем SFTP на TP-Link поднят - я его вижу....

P\S просто выпускаю пар, забавно когда из мелкой фигни и желании банально сэкономить время такая чепуха начинается :) все идет к тому, что надо просто на Visual Studio ставить тулчейн для Линукс и писать все на С.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О том как нажить себе головную боль.
СообщениеДобавлено: 03 апр 2018, 07:24 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2465
Откуда: Китай, Пекин
питон - это такая гадость... аля VBA только в юникс мирке.

просто берите LUA, он уже в составе OpenWRT/LEDE и делайте со своим MR3020 все, что захочется. отладка правда будет не такой приятной, но результат того стОит.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О том как нажить себе головную боль.
СообщениеДобавлено: 03 апр 2018, 13:23 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3302
А причем тут Питон? И чем луа больше поможет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О том как нажить себе головную боль.
СообщениеДобавлено: 03 апр 2018, 13:59 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2465
Откуда: Китай, Пекин
А причем тут Питон? И чем луа больше поможет?

ещё отсюда
Код:
rserial=io.open("/dev/ttyS0",'r')
lines = ""
repeat
    local line=rserial:read(1)
    if string.sub(line, 0, 3) == "OED" then  --OED is here the stream ending. This can vary
            EOD = true
            rserial:close()
    elseif line then
            lines = lines .. line
    end
until EOD == true
print (lines)


openWRT фактически вся построена на LUA

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О том как нажить себе головную боль.
СообщениеДобавлено: 03 апр 2018, 15:01 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3302
Во первых на луа только часть юзерспейса, системные вещи на сях.
Во вторых "и получаю первый прикол при приеме данных летит мусор, а затем и вовсе порт блокируется Демон начинает верещять, что на линии устройтво заблокировало линию" каким боком полечиться заменой питона на луа?
Далее "В Питоне не оказалось библиотеке PySerial" и как из этого следует, что питон гадость, а луа няша?
У меня на двух используемых платах наоборот, питон со всеми плюшками есть, а луа нет.
Могу я заявлять, что луа гадость, а питон форева?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О том как нажить себе головную боль.
СообщениеДобавлено: 03 апр 2018, 16:13 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 2465
Откуда: Китай, Пекин
топикстартер лепит проект в контексте CyberWRT, ничего лучше чем LUA, в этом случае не может быть.

Цитата:
системные вещи на сях.

можно подумать в питоне это не так.
=====================
выбор LUA на платформе OpenWRT не случаен. у разработчиков перед глазами были оба варианта.
а поскольку основная нагрузка ложится на фундамент, тот самый, который на сях, и оба эти скриптовых языка всего лишь прослойка, то выбор был за более тонкой и функциональной прослойкой.

вот там где по ресурсам ограничения нет - да, запускай что хочешь. хоть JAVA.

Цитата:
У меня на двух

если на этом железе начнутся проблемы с производительностью, но по прежнему будет нужен именно скриптовый язык, первое что предстоит сделать попробовать перейти на LUA

именно поэтому NodeMCU успешен и развивается..
а MicroPython на ESP8266 - удел фриков, хотя Python комьюнити, куда как более многочисленное, но ... вот так.

и кстати поинтересовался... при этом MicroPython - такй обрубок... мдя.
=====================

лично у меня, к примеру, SCALA предпочитаемый язык.
но я совершенно не горюю в связи с тем, что его нельзя запихнуть в OpenWRT.
каждому инструменту свое место.

_________________
unirail.org


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О том как нажить себе головную боль.
СообщениеДобавлено: 03 апр 2018, 18:09 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3302
Я согласен, что каждому инструменту свое место, но вот качества инструмента местом не определяются.
Таки да, питон тоже обертка вокруг ядерных вызовов, сишных драйверов.
Но тут есть тонкий момент, на малинке запилили драйверы, позволяющие с периферией работать из питона и без рутовых прав.
Не со всей, но с любимой хомяками GPIO точно можно.
Потому тянуть скрипт работающий на малинке на другую борду без всякого анализа, а как оно работает, неразумно.
Но опять таки, питон от этого не лучше и не хуже.
И на моих бордах если будет затык по производительности, то луа точно не поможет.
Быстрее ядерного модуля она не сработает.

То есть для данного конкретного случая возможно ЛУА более подходящий инструмент,
но не потому, что ПИТОН гуано, а ЛУА конфекта, а только потому,
что для данной платформы была сделана работа, которую в случае малинки проделали для питона.
То есть сделали удобные обертки над ядерными модулями.

Вообще излишняя категоричность в оценке инструмента это для салона Веры Павловны :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О том как нажить себе головную боль.
СообщениеДобавлено: 04 апр 2018, 00:07 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1109
Ого какая дискуссия :) развернулась

Пока чтобы от меня на время отвязались сделал костыль из 2х скриптов на Bash. Один опрашивает данные и построчно дописывает их в конец файла. Второй открывает файл, читает с начала данные и передает их серваку, а прочитанный кусок вырезает из файла.
Реализация так себе (сделано как временное решение для тестирования)...
p\s Завтра сэмплы плат на почте заберу на них и будем тестироват


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB