الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن حد من الاخوان يعرف ما معنى رسالة الخطء هذه

بدأه laithlaithlaith في 17 يونيو 2010 · 14 رد · 1,670 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخوتي الاعزاء كتبت برنامج بلغة بايثون , عمل هذا الرنامج هو بوتون on / off بس المشكلة الي اواجهة عند تشغيل البرنامج تطلع لي رسالة الخطء الصورة المرفقة اسفل . عند الضغ اوكي على الصورة البرنامج يضع خط احمر على الايعاز name [] , ممكن حد من الاخوة الاعزاء يشرلي ايه المشكلة في الكود المرفق اسف

مع الشكر والتقدير

 import socket, e32, appuifw
def choose_service(services):
names = []
channels = []
for name, channel in services.items():
names.append(name)
channels.append(channel)
index = appuifw.popup_menu(names, u"Choose service")
return channels[index]
def connect():
global sock
address, services = socket.bt_discover()
channel = choose_service(services)
sock = socket.socket(socket.AF_BT, socket.SOCK_STREAM)
sock.connect((address, channel))
def receive():
global sock
data = sock.recv(1)
if data == "1":
appuifw.note(u"LED on ", "info")
elif data == "0":
appuifw.note(u"LED off ", "info")
def bt_send_data1():
global sock
sock.send("1")
receive()
def bt_send_data2():
global sock
sock.send("0")
receive()
def exit_key_handler():
print "socket closed"
sock.close()
app_lock.signal()
app_lock = e32.Ao_lock()
appuifw.app.menu = [(u"LED on", bt_send_data1),
(u"LED off", bt_send_data2),
(u"Connect", connect)]
appuifw.app.exit_key_handler = exit_key_handler
app_lock.wait()

post-222011-054103500 1276772611_thumb.j

bottons.py

المرفقات
message.jpg

تم تعديل هذه المشاركة بواسطة laithlaithlaith في 18 يونيو 2010 في 10:03

#3

السلام عليكم

شكرا اخ حسان على المشاركة

الكود مرفق يمكنك تحميله

#4

عزيزي .. حرر مشاركتك و نسق الكود لو سمحت

هناك رز لادراج الكود شكله <> و يمكن ايضا وضع الكود داخل وسم [ code ]

مثلا:

if indent:
    print "see how nice it is to see indentation here"
#5

تم التعديل

#6

انت عارف ان المسافات البادئة فى بايثون عامل اساسى لكود بايثون سليم صح ؟

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#7

شكرا اخ احمد على المشاركة

المسافات كلهة صحيحة بس المشكلة لما انفذ البرنامج يظهرلي خط احمر على name = []

#8

لا ياأخى المسافات مش سليمة

مثلا بعد def لازم لما تدوس انتر تاخد مسافة بادئة زيادة ونفس الشئ ل if و تحديدا بعد اى block

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#9
laithlaithlaith كتب:

شكرا اخ احمد على المشاركة

المسافات كلهة صحيحة بس المشكلة لما انفذ البرنامج يظهرلي خط احمر على name = []

متقول كدة من الاول ..

كما قال احمد يجب ان تكون هناك مسافات في البداية هي اللتي تحدد نطاق الكود .. على هذا النمط:

def choose_service(services):
	names = []
	channels = []

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 18 يونيو 2010 في 20:26

#10

شكرا جزيلا اخ احمد واخ حسان

تم تعديل الكود بس بالحقيقة ضهرت لي مشكلة اخرى في السطر print "socket closed" تظهر لي هذه الرسالة ممكن اعرف ايه المشكلة

369908720.jpg

#11

ورينا كيف اصبح الكود بعد تعديل المسافات .. يبدو ان المسافات لا تزال غير مضبطة جيدا

#12
import socket, e32, appuifw
def choose_service(services):
        names = []
        channels = []
for name, channel in services.items():
        names.append(name)
channels.append(channel)
index = appuifw.popup_menu(names, u"Choose service")
return channels[index]
def connect():
    global sock
address, services = socket.bt_discover()
channel = choose_service(services)
sock = socket.socket(socket.AF_BT, socket.SOCK_STREAM)
sock.connect((address, channel))
def receive():
    global sock
data = sock.recv(1)
if data == "1":
   appuifw.note(u"LED on ", "info")
elif data == "0":
     appuifw.note(u"LED off ", "info")
def bt_send_data1():
    global sock
sock.send("1")
receive()
def bt_send_data2():
    global sock
sock.send("0")
receive()
def exit_key_handler():
   print "socket closed"
sock.close()
app_lock.signal()
app_lock = e32.Ao_lock()
appuifw.app.menu = [(u"LED on", bt_send_data1),
(u"LED off", bt_send_data2),
(u"Connect", connect)]
appuifw.app.exit_key_handler = exit_key_handler
app_lock.wait()

hasan_aljudy كتب:

ورينا كيف اصبح الكود بعد تعديل المسافات .. يبدو ان المسافات لا تزال غير مضبطة جيدا

هذا هوة الكود بعد التعديل

المشكلة الان اخ احسان لما اوصل الكود print "socket closed" تظهر لي رسالة خطء

اني اشكر كثيرا

#13

وهذه رسالة الخطء

198309711.jpg

#14

اخي العزيز الموضوع بكل بساطة، ان مستوى الـ indentation هو اللذي يحدد نطاق الكود   مثلا في السي، الكود اللي داخل الفنكشن لازم يكون محاط باقواس معقوفة { هكذا }   اما في البايثون، الكود اللي داخل الفنكشن يجب ان يكون indented بشكل صحيح   و واضح ان الكود هذا مش من صنعك :)   من اين اخذته؟ ارجع الى المصدر الاصلي و خذه من جديد و لكن مع الاحتفاظ بالمسافات البادئة.

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 20 يونيو 2010 في 00:00

#15

السلام عليكم

اشكرك اخ حسان على المشاركة

صحيح هذا الكود مو انا الي عملتوا, بس انا اريد ابدء فكرت مشروعي عن طريق هذا الكود لان الفكرة قريبة جدا على مشروعي وهي بلوتوث ريموت كنترول . انا حبيت انفذ هذا الكود على موبايلي لكي اجري عليه عملية تطوير.

الان اواجه مشكلة واحدة في الكود عند app_lock.wait() تظهر لي رسالة الخطء على موبايلي

NameError: name 'app_lock' is not defined

ممكن توضحلي الخط اخ احسان ولك جزيل الشكر والتقدير

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…