Отговори на тема  [ 68 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща
PY2ME - Python 2 Micro Edition 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PY2ME - Python 2 Micro Edition
Н'бабане Гт'муан'га
аз не съм обяснявал - причини, цели, далавери ... със змията
Аз експериментирам идея ... къв е УЯ, мангалски, негарски ( лъвов или мухарски )
аз не знам - докато не пробвам...

и боли ви УЯ дали аз ще си изгубя времето или не - ако имате идеи -> давайте .... или ми лапайте УЯ

Анадънмо?

Тони - изтрии темата.... Моля !

_________________
main[-1u]={1};


Сря Апр 09, 2025 10:52 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 06, 2018 5:18 pm
Мнения: 1750
Мнение Re: PY2ME - Python 2 Micro Edition
MYXATA написа:
Въпроса, " за чий йух е питон за микроконтролер" още е хот топик ;)

За тия, дето могат да пишат само на питон, но имат амбицията да станат ембедед специалисти
Н'бабане Гт'муан'га написа:
Но самия питон е (според мен) зле замислен език

Най-ефективните езици са тия, на най-ниско ниво - асемблер и машинен език, но там се иска добро познаване на архитектурата и мноооого време. Ползите от езиците на високо ниво са 2 - първо универсалност - един и същи код работи на много архитектури и второ - удобство при писане - с няколко реда описваш структура, която при асемблер може да ти коства 100 реда и нагоре. Но там пък зависиш изцяло от милостта на компилатора - как ще ти изгради програмата на ниско ниво. Допреди 5-6 години имаше даже мода за моделно "програмиране", примерно в матлаб - навързваш едни кубчета с алгоритми и матлаба ти пише кода. Пълен с талаш но работещ. Та в тоя ред на мисли скоро няма да има нужда и от езици на високо ниво, само драсваш схемата на салфетка, подаваш я на чата и му казваш - напиши ми код за ей тая схема да ми светва диода еди как си и да свири Шопен, ако и липсва нещо, на схемата, го добави. Та мисълта ми е че езиците от високо ниво дават предимство на хората, които не отбират много от електроника, или пък гонят време за сметка на качеството. Идеята на Питона според мен е да се опрости синтаксиса на езика, там няма отварящи и затварящи скоби, начало и край на цикъла, добавяш библиотеки без да се налага да ги свързваш вътре в програмата, в началото е бил ОК но сега е кошмар, особенно с тая несъвместимост между версиите - Питон 2 и Питон 3, а сега даже различните версии на Питон 3 са несъвместими. Та така, програмите ще стават все по-големи, съответно нуждата от хардуер ще расте право пропорционално на некадърността на новите инженери.

_________________
“Intelligence is the ability to adapt to change.” Stephen Hawking


Чет Апр 10, 2025 8:20 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 9:14 am
Мнения: 5298
Мнение Re: PY2ME - Python 2 Micro Edition
Bai Ui написа:
Ползите от езиците на високо ниво са 2 - първо универсалност - един и същи код работи на много архитектури и второ - удобство при писане - с няколко реда описваш структура, която при асемблер може да ти коства 100 реда и нагоре.


Е аз точно това казах в предния ми пост. Обаче език от високо ниво, който разчита на интервал като езиков елемент е просто несериозно. Виждал съм подобна идиотщина преди много години - mumps се казваше. Там един интервал на грешното място ти прецакваше цялата програма понеже интервалите също така можеха да бъдат и параметри. Тук не е чак толкова зле но дори фактът че е в същия банд не ми вдъхва никакво доверие

PS. Ето тоя пич работи във вярната посока: https://github.com/mathialo/bython

_________________
'просто' е технически синоним на 'красиво'


Чет Апр 10, 2025 8:31 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: PY2ME - Python 2 Micro Edition
Скриптовете си имат своето място, когато е необходима гъвкавост. Примерно устройство, което на теория може да има десетки функции, но на практика един клиент има нужда само от няколко. Да се поддържат отделни фърмуери за всяка възможна комбинация е кошмар. Един общ фърмуер също може да е мисия невъзможна, още повече ако функциите се добавят или премахват често.
Има такива проекти и аз съм имал, проблемът е че като цяло това са доста малък процент от ембедед. А пък ембедеда е малък процент от програмирането изобщо. Затова поддръжката или по-точно разработката на инструменти, библиотеки на тема скриптове е бизнес с изключително малък пазар. Съответно предлагането е малко и обикновено на недоклатени неща...


Чет Апр 10, 2025 10:17 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: PY2ME - Python 2 Micro Edition
Много си е добър питоня. Е, синтаксиса му е малко различен от С, но се свиква. Повече от 15г. го ползвам паралелно със С-то. Е, понякота се случва в питонския скрипт да напиша //... или в с файл #... :wink:

Не е ли красиво?
Код:
rmc = '$GPRMC,160001.929,A,4242.0621,N,02319.2417,E,0.12,30.77,170310,,,A*XX'
# rmc  е стринг

rmc = rmc.split(',')
# rmc е вече списък/list от стрингове

date = rmc[9]
# date е датата, която е деветия елемент от списъка (170310) във формат ddmmyy

date = date[4:] + date[2:4] + date[0:2]
# датата е във формат yymmdd


Не виждам, обаче как това ще се имплементира за микроконтролер...


Чет Апр 10, 2025 2:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PY2ME - Python 2 Micro Edition
аз пиша ама кой да чете...

Код:
x = "hello"
x.upper()


се компилира до ( PYC ) байткод ( питон Virtual Machine език )
python -m py_compile main.py -> __pycache__ / main.cpython-38.pyc ... подобно на C object файл
Код:
LOAD_FAST     0     # Зарежда обекта 'x' (стринг)
LOAD_METHOD   1     # Зарежда метода 'upper' <- това вече е С имплементацията
CALL_METHOD   0     # Извиква метода


избягва се интерпретацията от MCU на питон кода ... MCU "изпълнява" байткод( питон VM машинен език )
JAVA2ME работеше така ... Линукс / Java ( android ) е "емулация" на байткод ... без интрепетация на скриптове

rmc = rmc.split(',') е същото
Методите на str са хардкоднати във VM и се изпълняват почти колкото директно на C.

_________________
main[-1u]={1};


Чет Апр 10, 2025 6:36 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PY2ME - Python 2 Micro Edition
Цитат:
Не виждам, обаче как това ще се имплементира за микроконтролер...


microPython

Цитат:
1. ESP серията (Espressif)
ESP8266 (напр. NodeMCU, Wemos D1 Mini)

ESP32 (вкл. ESP32-S2, ESP32-S3, ESP32-C3)

ESP32-C6 (поддръжка в по-нови версии)

2. STM32 (STMicroelectronics)
STM32F4 (напр. STM32F405, STM32F407 – Pyboard официално работи на тях)

STM32F7 (напр. STM32F767)

STM32H7 (H743)

STM32L4 (L476 – добър за ниско енергийно потребление)

3. Raspberry Pi Pico (RP2040)
Raspberry Pi Pico (официално поддържан)

Pico W (с WiFi)

Други платки с RP2040 (напр. Adafruit Feather RP2040, Seeed XIAO RP2040)

4. NXP (Kinetis, LPC, i.MX RT)
Kinetis K серия (K64F – използва се в Pyboard D)

LPC серия (LPC1768 – поддържа се от някои портове)

i.MX RT (RT1011, RT1062 – мощни MCU за MicroPython)

5. Nordic (nRF серия)
nRF52832 (напр. Adafruit Feather nRF52840 Express)

nRF52840 (поддържа BLE 5.0 и е популярен за IoT)

6. Silicon Labs (EFM32)
EFM32 серия (напр. EFM32GG – рядко срещан, но има портове)

7. Microchip (SAM серия)
SAMD21 (напр. Arduino Zero, Adafruit Feather M0)

SAMD51 (по-мощен вариант)

PIC32 (по-стари портове)

8. Други поддържани MCU
CC3200 (TI – WiFi микроконтролер)

Xtensa (използва се в ESP32)

RISC-V базирани чипове (напр. ESP32-C3, GD32VF103)


Код:
# Начален RMC низ от GPS модул
rmc = '$GPRMC,160001.929,A,4242.0621,N,02319.2417,E,0.12,30.77,170310,,,A*XX'

# Разделяме низа по запетаи, за да получим списък
rmc = rmc.split(',')

# Взимаме датата (тя е на 9-та позиция в списъка)
data = rmc[9]  # '170310' (във формат ден-месец-година)

# Превръщаме я във формат година-месец-ден
data_convertirana = data[4:] + data[2:4] + data[0:2]  # '100317'

# Извеждаме резултата
print("Оригинална дата:", data)
print("Преобразувана дата:", data_convertirana)

_________________
main[-1u]={1};


Чет Апр 10, 2025 10:10 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 9:14 am
Мнения: 5298
Мнение Re: PY2ME - Python 2 Micro Edition
Е какво се възхищавате толкова?? Всички езици имат функции за разделяне на токени и за преобразуване на стрингове в главни букви.
Гледайте недостатъците, другото всички го имат

_________________
'просто' е технически синоним на 'красиво'


Пет Апр 11, 2025 10:05 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение Re: PY2ME - Python 2 Micro Edition
Без да съм чел всичко в детайли, идеята е за истински скрипт или за прекомпилиран такъв, демек мое ли да изпълниш команс през конзолата е реално време, или просто пишеш на змийски то го компилира и изпълнява ...


Пет Апр 11, 2025 3:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: PY2ME - Python 2 Micro Edition
Н'бабане Гт'муан'га написа:
Е какво се възхищавате толкова?? Всички езици имат функции за разделяне на токени и за преобразуване на стрингове в главни букви.
Гледайте недостатъците, другото всички го имат

Ами препиши сорса от горния пример на С за микроконтролер по твой избор и дай да видим какво се получава. :)

Магьоснико, не давай микропитона за пример, защото той е лош такъв. Как да бръкна в регистрите на ESP32-S3 от микропитона, например? :wink:

В телитските модули с най-висок приоритет е GSM/GPRS стека. Питонските скриптове са с най-нисък приоритет, няма бъркане по регистрите, няма прекъсвания, SPI и I2C интерфейсите са софтуерни, но двата UARTa и двата командни дешифратора са с по 4кВ TX и RX буфери всеки. Много трудно ще се препълни такъв буфер, преди да бъде прочетен. При по-новите модули с USB интерфейс, буферите на този интерфейс са по 32кВ. Променлива тип стринг е до 16КВ, списък до 4000 елемента. Около 1МВ памет за скриптове и толкова RAM, която обаче е споделена и свободната RAM е неизвестна, но тестовете показват около 200кВ RAM в най-лошия случай. Няма за къде да се бърза поради таймингите на командите и спецификите на GSM/GPRS стека. Затова питона е идеален в такава среда.


Пет Апр 11, 2025 5:12 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PY2ME - Python 2 Micro Edition
Цитат:
пишеш на змийски то го компилира и изпълнява


в момента си експериментирам с Python 3 цяло и нагоре ( има разлика само е байткод номерации )
Идеята е .... си пишеш на компа програма/скриптове - Python 3 -
само базови класове ( да кажем на ниво microPython ) ... че става цял питон
Докато си пишеш на компа - почти виждаш какво се случва ( може да има и симулация на периферии )
Като надраскаш нещо - COMPILE-> PYC -> BIN
( bin е имитация на ELF - да подреди линейно кое къде е )
UPLOAD BIN
в MCU няма питон терминал щото няма интерпретатор
има само байткод емулатор ... питон машинен код ....

Зора е че трябва C API за обработка на базовите питон функции - това реално го прави Питон екзето
питон print(...) тряя го принтне кернела

rmc = rmc.split(',') ..... split-а го прави кернела за променливата rmc

Байткода просто илиминира интерпретатора - грижи се основно
да "декодира" аргументи, call func, return result ... и разни шифтове и ротации
не е много "асемблер"( в кавички )

но за сега няма идея - просто експерименти да видя с какво разполагам ...
не го знам питона на интерпретаторно ниво

_________________
main[-1u]={1};


Пет Апр 11, 2025 6:24 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: PY2ME - Python 2 Micro Edition
Desert Leo написа:
Ами препиши сорса от горния пример на С за микроконтролер по твой избор и дай да видим какво се получава. :)



Код:
void foo()
{
   coma_cstr_t input = "$GPRMC,160001.929,A,4242.0621,N,02319.2417,E,0.12,30.77,170310,,,A*XX";
   CSTRING str;
   time t;
   
   if(input.get_element(9, str))
   {
      if(time.sscanf(str.c_str(), "%y%M%D") == 3)
      {
         printf("Оригинална дата:%s", str.c_str());
         printf("Преобразувана дата:%s", time.sprintf("%y%M%D").c_str());
      }
   }
}


Въпрос на библиотеки...

Не се заяждам, просто примерът е неподходящ. В случая имам класове за кома сепаратед, стринг и time, затова и няма проблем. Ако беше нещо друго можеше и да има.


Пет Апр 11, 2025 6:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 3:25 pm
Мнения: 5677
Местоположение: София
Мнение Re: PY2ME - Python 2 Micro Edition
miro_atc написа:
Не се заяждам...

Заяждай се колкото искаш. :) Не ми пречи...
Ми ... грозно изглежда. Кви са тия декларации на променливи, кви са тия if-ове, бре!!! :lol:


Пет Апр 11, 2025 6:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11265
Местоположение: Добрич
Мнение Re: PY2ME - Python 2 Micro Edition
Desert Leo написа:
Кви са тия декларации на променливи


Как какви? Сбъркани ;-)
Ако бях пуснал компилация щях да разбера, че вместо вечеря съм изял други неща...


Пет Апр 11, 2025 8:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PY2ME - Python 2 Micro Edition
string.split(",")
реално е : микроЗмия
в CPython API ( 3.хх ) е още по сложно...

в J2ME ... е нещо подобно - мързи ме да търся пример

BTW: заглавиeтo на топика не значи Питон версия 2
а - PY2ME - Python TO Micro Edition

_________________
main[-1u]={1};


Пет Апр 11, 2025 9:37 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 68 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


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

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни