Enigma II شرح تصميم بلكن للأنقما 2

الحالة
مغلق و غير مفتوح للمزيد من الردود.

mfaraj57

مسؤول فريق الدريم بوكس (رحمه الله)
إنضم
24 أوت 2007
المشاركات
10.037
مستوى التفاعل
49.813

banner1j.gif

هنا سوف يتم عرض المناقشات بخصوص برمجة enigma2 plugin
بالاضافه الى عرض اي تقدم او انجاز حتى الوصول الى برمجة Plugin كامل ومفيد
الموضوع مفتوح للمشاركه والنقاش والاضافه

الفهرس:

المقدمه

المستلزمات وتنصيب الدروس التعليميه- شرح إنشاء enigma2 plugin

الدروس التعليميه: فهرس الدروس التعليميه



مقدمه:

المتطلبات الاساسيه لبرمجة E2 plugins

معرفه اساسيات لغة Python

من هنا ننزل python لنظام ويندوز وهي مجانيه ولا تحتاج الا تسجيل

http://www.python.org
/
وينصح باستخدام الاصدار 2.6

python تعمل على نظام لينكس ايضا لمن يشاء

وهناك الكثير من الكتب الالكترونيه لتعليم python
فقط بواسطة غوغل lean python programming
تحصل على مئات المواقع التي تعلم python

الدروس والمقدمات بحاجه الى شرح اكثر ولكن قبل ان نبدأ بالشرح درسا درسا نطلب من الاخوه المهتمين البدء بدراسة لغة python

ومن هنا تكون البدايه

http://wiki.python.org/moin/BeginnersGuide/Programmers


معرفة عامه بنظام الانيجما2 وكيف تعمل


الادوات اللازمه:
اي برنامج text editor مثل notepad++
برنامج ftp لنقل الملفات بين الدريمبوكس والحاسوب
وفي الحقيقه ان برنامج dcc يوفر جوا مريحا للنعامل مع الدريمبوكس ك text editor وكبرنامج ftp


اين يوضع البلغن في الدريمبوكس
توضع ملفات البلغن عادة في المسار
user/lib/enigma2/python/plugins/extensions

97138200.jpg

البلغن يضم عدة ملفات اساسيه واهم ملف هو Plugin.py وهو الملف الرئيسي الذي يتم التفرع منه


 
user.aspx


fawassol.gif


89009186.png


89009186.png



المستلزمات وتنصيب الدروس التعليميه- شرح إنشاء enigma2 plugin


هذا البرنامج التعليمي هو مخصص لمساعدة المستخدمين المتقدمين في البرمجة python


ligne1.gif


تنصيب البرامج التعليميه
وهي عباره عن 11 بلاكن بسيطه توضح المهارات الاساسيه لكتابة اي بلاكن
البلاكنات من كتابة ايمانويل

ligne1.gif

نقوم بتنصيب من المرفقات enigma2-plugin-ihadtutorial_0.5_mipsel

ligne1.gif


0001ag.png


0002a.png


0003ao.png


0004a.png


0005au.png


ligne1.gif


قبل التغيير

13856438.jpg


lm2j.jpg

بعد الثغيير

l11jh.jpg


lm22.jpg

ligne1.gif


الدرس الثاني إنشاء رسالة تظهر على الشاشة

ندخل lesson_2

81241322.png


نغير فى السطر 31 نغير hello world بما نشاء


17408774.jpg


m22j.jpg


متابعة الشرح بالتباع الصور

47383822.png


63925443.jpg


m33z.jpg


الآن يمكن متابعة الدروس الى الأخير...

l11.png


m1111.jpg


m11l.jpg
 

المرفقات

  • enigma2-plugin-ihadtutorial_0.5_mipsel(2).rar
    1,2 MB · المشاهدات: 383
سنبدأ بشرح الدروس التي وردت في مشاركة الاخ TELE

هذه الدروس الني سنشرحها واحدا واحدا لنجمعها بعد الانتهاء منها في موضوع واحد



Table of contents:

Introduction

"Our Small Test“ - pure print example without Gui (OSD)

lesson "01 Hallo World" – simple window (Screen)

lesson "02 Hallo World Message" – Screen with message

lesson "03 Call My Msg" - Screen with message Yes/No

lesson "04 My Menulist" – Screen with menulist

lesson "05 My Shell Prombt" – Screen with menulist and shell commands, outpute on Screen Console

lesson "06 Message Input" – Screens with character input, output lesson "07 View a picture" - Screen with picture

lesson "08 Download a picture" - Download a picture and show on Screen

lesson "09 dynamic Text" - Change a textlabel of the Screens

lesson "10 Set Auto Sleep" – Screen to config of the dreambox's starting behavior

lesson "11 Start other plugin" – Screen to Start picture player​

مقدمه:

لغة pyton هي لغة تدعى object oriented program ولا داعي للخوض بالتفاصيل وما معنى هذا المصطلح ولكن للتبسيط نقول ان هناك كودات جاهزه تستعملها البلغنز
ولا داعي عند كتابة البلغن ان نكتبها لانها ستأخذ وقتا وجهدا لذلك وجدت مكتبه تحتوي على هذه الكودات الجاهزه وما علينا الا نستعملها بسطر نضيفه الى البرنامج ومن امثلة ذلك screens,labels,messagebox الا اخره
هذه المكتبه للكودات الجاهزه(Objects) موجوده في الدريم بوكس في المسار


90116221.jpg



Telnet: وسيله مهمه للمساعده في فحص البلغنز ومن المعلوم ان اي تغيير في كود البلغن لا يسري المفعول الا بعد عمل restart enigma
وهذه الكود من خلال telnet يعمل restart enigma2 ويربط الانيجما مع التلينت وتشاهد رسائل عديده تظهر في نافذة التلينت خلال هذه العمليه

الكود المستخدم هو


كود:
root@dm8000:~# init 4; sleep 4; enigma2

لفحص البلغن نشغله من الدريم فتظهر رسائل في التلينت توصف عمل البلغن واية اخطاء
وهذا مثل من التلينت عند اختيار our small test plugin
من قائمة plugins browser

كود:
...
hdd IDLE!
[IDLE] 251.999181986 120 True
action -> WizardActions ok
<<<<<<<<<< Hello world! >>>>>>>>>>
[EPGC] start cleanloop
[EPGC] stop cleanloop

لانهاء عملية الربط نسنخدم
كود:
[Ctrl c]
هذا الكود يظهر في نافذة التيلنت عند انتهاء عملية الربط
كود:
...
- (10) gRC
waiting for gRC thread shutdown
gRC thread has finished
- (9) gLCDDC
- (9) GFBDC
- (9) Font Render Class
- (8) graphics acceleration manager
- (1) Background File Eraser
reached rl -1
close frontend 0
root@dm8000:~#

لاعادة الربط الكود
كود:
root@dm8000:~# init 4; sleep 4; init 3

انتهى
الدرس القادم

برمجة Our small test plugin

 
الدرس الثاتي

Our small test plugin


هدف هذا الدرس هو تكوين بلاكن Plugin ووضعه في قائمة Plugins browser

54641881.jpg



نفتح Notepad++ او اي text editor مناسب او python gui
وافضل Notepad++

ونكتب به الكود التالي


61115881.jpg


يتكون source code للبلاكن من التقسيمات الرئيسيه التاليه

import statement

وهذه تقوم بتوظيف ووتعريف كود جاهز موجود في مكتبة البلاكن
from Plugins.Plugin import PluginDescriptor
وفي هذه الحالة نستدعي مل يطلق عليه plugindescriptor object وهو ضروري لكل بلاكن
و Plugindescritor object موجود في الملف
/usr/lib/enigma2/python/Plugins/Plugin.py

main function

وهذا هو الكود الذي يبدأ تنفيذه اولا غالبا

كود:
def main(session, **kwargs):
print "\n<<<<<<<<<< Hello world! >>>>>>>>>>\n"
هذه الكود سوف يكتب جملة Hello world على شاشة او على اىء شىء اخر نختاره وفي الكود الاعلى لم نحدد شاشة الاخراج لذلك لن نرى شيئا عندما ننفذ البلاكن
ولن ادخل بالتفاصيل الان للمحافظه على سهولة الموضوع وسيأتي لاحقا


plugindescriptor object

وهذا ما يهمنا من هذا الدرس وهذا ما تقرأه الانيجما لتحدد اسم البلاكن وموقعه ووصفه و الايقونه المصاحبه له

84434194.jpg


بعد الانتهاء من كتابة البلاكن ونحفظه باسم plugin.py ننقله الى الدريمبوكس في المسار

usr/lib/enigma2/python/Plugins/Extensions/Oursmalltest

ونضيف له ملف اخر فارغ تحت اسم
init__.py_


76092788.jpg


ونعيد تشغيل الانيجما restart enigma2 ليظهر البلاكن في قائمة البلاكنات plugin
browser

يتبع
الدرس الثالث

01 Hallo World

69366894.jpg
 
الدرس الثالث 01 Hallo World

في الدرس السابق وضحنا كيف انشاء بلاكن ووضعه في قائمة plugin borwser
بدون ان يؤدي اي فعل محسوس عن اختياره من قائمة البلاكنات

في الدرس الحالي سنبني على ما سبق بالاضافه الى كيفية ظهور شاشه screen ونكتب فيها Hallo world


43147029.jpg


screen الشاشه:

لاي screen هناك خصائص لا بد من تحديدها مثل
-موقعها position ويتحدد احداثيات الرأس العلوي الايسر left,top
-حجمها size ويتحدد بالعرض والطول width,height
- العنوان title
-ActionMap وهي تحدد استجابة الشاشه screen لازرار الريموت مثل زر cancel لغلق الشاشه او Ok لتعيين مهمه معينه او غلق الشاشه


هذه الخصائص الرئيسيه ل screen

label :
في معظم الاحيان لا يؤدي وجود شاشه فارغه عملا مفيدا لذلك لا بد من اضافة ما نسميه component الى الشاشه ومن امثلة ذلك ما نسميه label
وهنا نضع النص الذي نريده وفي مثالنا Hello world
وlabel له خصائص ايضا منها موقعه في الشاشه Position وحجمه size واسمه Name و محتواه text

ونبدأ بدراسة كود تنفيذ البلاكن hallo world


72659257.jpg

50057453.jpg



import statements

from Screens.Screen import Screen
from Components.Label import Label
from Components.ActionMap import ActionMap
from Plugins.Plugin import PluginDescriptor

وهذه كودات جاهزه نستخدمها في البلاكن ولا يعمل بدونها وكل جمله تدل على الملف المستورد منه الكود
مثلا

from Screens.Screen import Screen
مستورد من الملف
usr/lib/enigma2/python/screens/screen.py

screen creater-class انشاء الشاشه

وهذا هو كود stantard لانشاء الشاشه بخصائصها ومكوناتها ولانشاء شاشه screen في اي بلكن نستطيع نسخ هذا الكود ولصقه في البلاكن الذي نريد بدون ان نكتبه كاملا مع تغيير مواصفات الخصائص كما نريدها من موقع الشاشه وحجمها ومكوناتها

main function
سبق شرحها بالدرس الاول ومن هنا نظهر الشاشه السابقه بالكود

(session.open(HalloWorldMsg

Plugindesciptor
سبق شرحه في الدرس الاول

ملاحظات:
في هذه المرحله لا داعي لفهم الكود تماما وكل كلمه فيه مثل self و session فهذه من مفردات python keyword والذي الم باساسيات python سيعرفها حتما وعلى كل حال لا داعي للقلق بشأنها وستصبح بديهيات في نهاية الدروس

السورس كود لهذا البلاكن بالمرفقات

يتبع
الدرس الرابع

03 Call My Msg

47930358.jpg
 

المرفقات

  • plugin.rar
    660 بايت · المشاهدات: 102
الدرس الرابع: بلاكن لاظهار رساله نصيهscreen with message
المثال الثاني:02 Hallo World Message

استعمال البلاكن:

عند استعمال مفتاح "ok" من الريموت تظهر رساله نصيهi

99248259.jpg


:source code

import statement

from Screens.MessageBox import MessageBox

55909967.jpg



كود اظهار الرساله النصيه

21446814.jpg


وبقية السورس كود سبق شرحه





يتبع
الدرس الخامس
المثال الثالث

03 Call My Msg

11194583.jpg
]





 

المرفقات

  • plugin.rar
    718 بايت · المشاهدات: 47
الدرس الخامس: A Screen with message Yes/No
المثال الثالث : 03 Call My Msg

استخدام البلاكن

71095355.jpg


source code

27677367.jpg



الدرس السادس:Screen with menulist
المثال الرابع:04 My Menulist

86464062.jpg
 

المرفقات

  • plugin.rar
    828 بايت · المشاهدات: 31
الدرس السادس:Screen with menulist
المثال الرابع:04 My Menulist


القوائم Menu تستعمل كثيرا في البلاكنات وعملية اضافتها بواسطة الكود سهله
فقط متابعة تسلسل الكود بتمعن تستطيع انشاء قائمه تؤدي اي غرض تريده

لتحقيق اكبر فائده يجب ان يدرس البلاكنن اولا وكيفية تنفيذه على الدريمبوكس
ثما الشروع في كتابة الكود والاستعانه بالكود المشروح هنا


للتذكير فقط ان فهم الكود كاملا يتطلب خبره برمجيه سابقه في اي لغه

استعمال البلاكن:

البلاكن يظهر قائمه وعند اختيار اي عنصر منها تظهر رساله

78910470.jpg


source code:
importstatement:

57231254.jpg


menulist creater code:

11724426.jpg

17249331.jpg






يتبع
الدرس السابع:Screen with menulist and shell commands , output on Screen Console

المثال الخامس:05 My Shell Prombt

47045215.jpg

99150073.jpg
 

المرفقات

  • plugin.rar
    895 بايت · المشاهدات: 54
الدرس السابع:Screen with menulist and shell commands , output on Screen Console

المثال الخامس:05 My Shell Prombt

استعمال البلاكن:

البلاكن هذا لتوضيح انشاء قوائم menu واداء وظائف مفيده منها Netstat

82574398.jpg


28992255.jpg


source code:
import statement

72771430.jpg


function menu action

46252746.jpg


مثال اخر
Tunisiasat Enigma2 Tools version 0.1

يتبع
الدرس الثامن:Screens with character input, output
المثال السادس Message Input 06
99779421.jpg







 

المرفقات

  • plugin.rar
    905 بايت · المشاهدات: 46
الدرس الثامن:Screens with character input, output
المثال السادس:Message Input06

الهدف: انشاء بلاكن يطلب من المستخدم ادخال نص

استعمال البلاكن:
2dt4sax.jpg


مكونات البلاكن:
2lifps8.jpg


source code


import statement

ighjc0.jpg





main code
2zsxrg5.jpg


يتبع
الدرس التاسع:Screen with picture
المثال السابع:07 View a picture
34617v7.jpg

 

المرفقات

  • plugin.rar
    823 بايت · المشاهدات: 68
الحالة
مغلق و غير مفتوح للمزيد من الردود.
أعلى