لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه نویسی توسط موبایل با زبان پایتون مخصوص نوکیا
2007-07-06, 08:46 AM,
ارسال : #1
برنامه نویسی توسط موبایل با زبان
سلام

خوشبختانه زبان پایتون اونقدر زبان باحالیه که همه چیز در موردش تو اینترنت هست.
من مطالبی رو که یاد گرفتم همش در عرض سه روز بود.
و امروز هم برنامه نویسی در گوشی های نوکیا با زبان پایتون.
با خودم گفتم وقتی یک جا بیکار نشستیم و فقط موبایل تو دستمون چه بهتر تو همون زمان بیکاری بشین برنامه هامون رو بنویسیم و کاملشون کنیم!!

دوستان میتونند به سایت انجمن نوکیا برن و زبان پایتون مخصوص موبایل های نوکیا رو دانلود کنن تا بتونن رو گوشی هاشون برنامه نویسی کنن.

<!-- m --><a class="postlink" href="http://www.forum.nokia.com/info/sw.nokia.com/id/ee447e84-2851-471a-8387-3434345f2eb0/Python_for_S60.html">http://www.forum.nokia.com/info/sw.noki ... r_S60.html</a><!-- m -->

متاسفانه سایت نوکیا با آی پی های ایرانی مشکل داره و اجازه دانلود نمیده.
با تغییر آی پی آدرس از سایت نوکیا دانلود کنید.

البته زبون سی پلاس پلاس رو هم داره.

<!-- m --><a class="postlink" href="http://www.forum.nokia.com/main/resources/tools_and_sdks/index.html">http://www.forum.nokia.com/main/resourc ... index.html</a><!-- m -->
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-06, 03:33 PM,
ارسال : #2
پاسخ: برنامه نویسی توسط موبایل با
کدون ورژن رو دانلود کردی ؟
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-07, 11:10 AM,
ارسال : #3
پاسخ: برنامه نویسی توسط موبایل با
سلام

من خیلی وقته که ازش استفاده میکنم.

گوشی شما بسته به نگارش سیستم عاملتون باید دانلود کنی از اینجا:
<!-- m --><a class="postlink" href="http://sourceforge.net/projects/pys60">http://sourceforge.net/projects/pys60</a><!-- m -->
به عنوان مثال گوشی رده N باید از v3 استفاده کند. و uiq از نگارش مخصوص خودش.
پو فایل را باید دانلود کنید: یکی خود پایثون و دیگری

اون را به اسم py60 هم می شناسند. اینجا فروم پرسش و پاسخش است:
<!-- m --><a class="postlink" href="http://discussion.forum.nokia.com/forum/forumdisplay.php?f=102">http://discussion.forum.nokia.com/forum ... .php?f=102</a><!-- m -->

اینجا یکسری برنامه نمو.نه است :

<!-- m --><a class="postlink" href="http://www.mobilenin.com/pys60/menu.htm">http://www.mobilenin.com/pys60/menu.htm</a><!-- m -->

به برنامه texttospeech دقت کنید. جالبه نه؟

<!-- m --><a class="postlink" href="http://www.mobilenin.com">http://www.mobilenin.com</a><!-- m --> هم ویدیو نحوه استفاده و...
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-15, 10:59 AM,
ارسال : #4
پاسخ: برنامه نویسی توسط موبایل با
چیزی که باید دانلود بشه فایل اصلی و اسکریپت آن است.

هنگامی که اسکریپت را نصب کنید به برنامه ها اضافه می شود.

شاخه c:/python , e:/python شاخه هایی هستند که در آن اسکریپتهای از قبل نوشته شده اجرا می شوند.

اگر stick memory دارید e است و خود گوشی c است. اما شما به c دسترسی ندارید (شاید هم گوش من اینطوری بود) یعنی شاخه c:\data دسترسی داریم.

یک اسکریپت برای ویرایش فایلها دقت کنید در مسیر e:\python این فایل را کپی کنید و این فایل فقط فایلهای این شاخه را ویرایش میکند.

با فشردن کلید select می توانید فارسی تایپ کنید
[ltr]
کد :
# -*- coding: utf-8 -*-
"""S60 Wiki"""

import os.path
import os
import re
import shutil
import sys
import time
import key_codes
import appuifw
import e32


DIRECTORY_PATH = "e:/python"
LOGFILE = "fubukilog"


def main():
    logfile = file(os.path.join(DIRECTORY_PATH, LOGFILE), "w")
    sys.stderr = sys.stdout = logfile
    app = Application()
    app.mainloop()
    logfile.close()
    del app


class Application:
    def __init__(self):
        self.view = View(self)
        self.page = None
        self.history = []
        self.openPage("FrontPage")
        self.lock=e32.Ao_lock()

    def mainloop(self):
        self.lock.wait()
        del self.view
        del self.page

    def openPage(self, pagename):
        if self.page:
            self.savePage()
        self.page = Page(pagename)
        self.view.setPage(self.page)

    def openNewPage(self, pagename):
        self.history.append(self.page.name)
        self.openPage(pagename)

    def back(self):
        if len(self.history) > 0:
            pagefile = self.history.pop()
            self.openPage(pagefile)

    def savePage(self):
        newContent = self.view.latestPageContent()
        oldContent = self.page.text()
        if newContent != oldContent:
            self.page.text(newContent)

    def openLink(self, text, position):
        pagename = self.extractPagename(text, position)
        if pagename:
            self.openNewPage(pagename)

    def openFrontPage(self):
        self.openNewPage("FrontPage")


    def extractPagename(self, text, here):
        """return link string at current position"""
        pattern = re.compile(u"\[[^\[]*$")

        m = pattern.search(text, 0, here+1)
        if m == None:
            return None
        left = m.start()

        pattern = re.compile(u"[^\]]+\]")
        m = pattern.search(text, max(here-1,0))
        if m == None:
            return None
        right = m.end()

        if left <= here and here <= right:
            return text[left+1:right-1]
        else:
            return None

    def exit(self):
        try:
            self.savePage()
        finally:
            self.lock.signal()


class View:
    def __init__(self, app):
        self.app = app
        self.textControl = appuifw.Text()
        self.page = None
        self.positionInPage = {}
        appuifw.app.body = self.textControl
        appuifw.app.menu=[(u"List all pages", self.listPages),
              (u"Back", self.app.back),
                          (u"Find", self.findText),
                          (u"FrontPage", self.app.openFrontPage),
              (u"Farsi", self.farsi),
              (u"page down", self.pagedown),
                          (u"Exit", self.app.exit)]
        appuifw.app.exit_key_handler = self.app.exit
        self.textControl.bind(key_codes.EKeySelect, self.farsi)
        self.textControl.bind(key_codes.EKeyDownArrow, self.nextLine)
        self._stringToSearch = u""


    def nextLine(self):
        """add a new line if the cursor position is at the end"""
        if self.textControl.len() == self.textControl.get_pos():
            self.textControl.add(u"\n")
    def pagedown(self):
        self.textControl.set_pos(self.textControl.get_pos()+180)

    def setPage(self, page):
        self.page = page
        self.text(self.page.text())
        self.title(self.page.name)
        self.position(self.positionInPage.get(self.page.name, 0))

    def latestPageContent(self):
        return self.text()

    def text(self, string=None):
        """set or get text content"""
        if string is None:
            return self.textControl.get()
        else:
            self.textControl.set(string)
            self.textControl.set_pos(0)

    def position(self, value=None):
        if value is None:
            return self.textControl.get_pos()
        else:
            self.textControl.set_pos(value)

    def title(self, ustring):
        appuifw.app.title = u"" + ustring

    def listPages(self):
        pagenames = [x.decode('utf-8') for x in os.listdir(DIRECTORY_PATH)]
        try:  
            pagenames.remove(LOGFILE)
        finally:
            index = appuifw.selection_list(choices=pagenames , search_field=1)
            self.app.openNewPage(pagenames[index])

    def openLink(self):
        appuifw.note(u"Jumping...")  # this delay prevents wiki from crashing
        self.positionInPage[self.page.name] = self.position()
        self.app.openLink(self.text(), self.position())

    def findText(self):
        s = appuifw.query(u"Find", "text", self._stringToSearch)
        if s:
           p = self.textControl.get_pos()
           t = self.textControl.get(p)
           start = t.find(s)
           if start>0:
             self.textControl.set_pos(start+p)
           else:
             appuifw.note(u"not found")
           self._stringToSearch = s
        pass

    def insertLink(self):
        self.textControl.add(u"[]")
        self.textControl.set_pos(self.textControl.get_pos()-1)


    def farsi(self):
        pagenames = [(unichr(1570)+u' '+unichr(1575)+u' '+unichr(1576)+u' '+unichr(1662)+u' '+unichr(1578)+u' '+unichr(1579)),(unichr(1580)+u' '+unichr(1581)+u' '+unichr(1582)+u' '+unichr(1670)+u' '+unichr(1583)+u' '+unichr(1584)),(unichr(1585)+u' '+unichr(1586)+u' '+unichr(1688)+u' '+unichr(1587)+u' '+unichr(1588)+u' '+unichr(1589)+u' '+unichr(1590)),(unichr(1591)+u' '+unichr(1592)+u' '+unichr(1593)+u' '+unichr(1594)+u' '+unichr(1601)+u' '+unichr(1602)),(unichr(1603)+u' '+unichr(1711)+u' '+unichr(1604)+u' '+unichr(1605)+u' '+unichr(1606)+u' '+unichr(1607)),(unichr(1608)+u' '+unichr(1609)+u' '+unichr(1571)+u' '+unichr(1572)+u' '+unichr(1573)+u' '+unichr(1574)),(unichr(1548)+u' '+unichr(1563)+u' '+unichr(1567)+u' '+unichr(1600)+u' '+unichr(1577)+u' '+unichr(1652)),(unichr(0x0660)+unichr(0x0661)+unichr(0x0662)+unichr(0x0663)
+unichr(0x0664)+unichr(0x0665)+unichr(0x0666)+unichr(0x0667)+unichr(0x0668)
+unichr(0x0669)), (unichr(0x64e)+u' '+unichr(0x64f)+u' '+unichr(0x650)+u' '+unichr(0x64b)+u' '+unichr(0x64c)+u' '+unichr(0x64d)+u' '+unichr(0x651))]
        index = appuifw.selection_list(choices=pagenames , search_field=1)
    if index==0:
        pagenames = [unichr(1570),unichr(1575),unichr(1576),unichr(1662),unichr(1578),unichr(1579)]
    elif index==1:
        pagenames = [unichr(1580),unichr(1581),unichr(1582),unichr(1670),unichr(1583),unichr(1584)]
    elif index==2:
        pagenames = [unichr(1585),unichr(1586),unichr(1688),unichr(1587),unichr(1588),unichr(1589)
,unichr(1590)]
    elif index==3:
        pagenames = [unichr(1591),unichr(1592),unichr(1593),unichr(1594),unichr(1601),unichr(1602)]
    elif index==4:
        pagenames = [unichr(1603),unichr(1711),unichr(1604),unichr(1605),unichr(1606),unichr(1607)]
    elif index==5:
        pagenames = [unichr(1608),unichr(1609),unichr(1571),unichr(1572),unichr(1573),unichr(1574)]
    elif index==6:
        pagenames = [unichr(1548),unichr(1563),unichr(1567),unichr(1600),unichr(1577),unichr(1652)]
    elif index==7:
        pagenames = [unichr(0x0660),unichr(0x0661),unichr(0x0662),unichr(0x0663),unichr(0x0664)
,unichr(0x0665),unichr(0x0666),unichr(0x0667),unichr(0x0668),unichr(0x0669)]
    elif index==8:
        pagenames = [unichr(0x64e),unichr(0x64f),unichr(0x650),unichr(0x64b),unichr(0x64c),
unichr(0x64d),unichr(0x651)]
    else:
        pagenames = [("error")]
        index = appuifw.selection_list(choices=pagenames , search_field=1)
    self.textControl.add(pagenames[index])




class Page:
    def __init__(self, name):
        self.name = name

    def text(self, string=None):
        """set or get text content of page"""
        p = os.path.join(DIRECTORY_PATH, self.name.encode('utf8'))
        if string is None:
            if not os.path.exists(p):
                file(p,"w").write('')
            return unicode(file(p).read(), 'utf8', 'replace')
        else:
            tmp = p + ".tmp"
            string = string.replace(u"\u2029", u"\r\n")
            file(tmp, "w").write(string.encode('utf8', 'replace'))
            shutil.copyfile(tmp, p)
            os.remove(tmp)


if __name__ == "__main__":
    main()
[/ltr]
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-15, 05:28 PM,
ارسال : #5
پاسخ: برنامه نویسی توسط موبایل با
برای گوشی جاوا و سونی اریکسون نمیشه؟

اینکبار برای همیشه غیر فعال شده است.. از مدیران درخواست میکنم در صورت امکان این کاربر را حذف کنند از تکنوتاکس
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-16, 10:36 AM,
ارسال : #6
پاسخ: برنامه نویسی توسط موبایل با
این محیط اسمش روش هست: py60 فقط برای symbian 60 است.

برای جاوا باید از محیط توسعه j2me استفاده کرد. در ضمن این یک زبان اسکریپتی است یعنی همین فایل بصورت سورس به گوشی انتقال می دهید.
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-16, 07:53 PM,
ارسال : #7
پاسخ: برنامه نویسی توسط موبایل با
و البته با ابزار py2sis به فایل sis تبدیل می شه و نیازی به مفسر هم نخواهد بود .

سایت تخصصی زبان برنامه نویسی پایتون - <!-- m --><a class="postlink" href="http://www.pythoni.ca">http://www.pythoni.ca</a><!-- m -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-17, 11:24 AM,
ارسال : #8
پاسخ: برنامه نویسی توسط موبایل با
البته خوبیش به اسکریپتی بودن آن است چرا که برای هر نگارشی از sym باید جدا کمپایل بشه!
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2007-07-17, 11:35 AM,
ارسال : #9
پاسخ: برنامه نویسی توسط موبایل با
چیزی مانند bash
[ltr]
کد :
import os.path
import os
import re
import shutil
import sys
import sysinfo
import time
import key_codes
import appuifw
import e32

NEW_LINE=u"\n"
TAB=u"\t"
BLUE=255
NORMAL=0


def main():
    app = Application()
    app.mainloop()
    del app


class Application:
    def __init__(self):
        os.chdir('e:/')
    self.shell = Shell(self)
        self.lock=e32.Ao_lock()

    def mainloop(self):
        self.lock.wait()

    def exit(self):
        self.lock.signal()


class Shell:
    def __init__(self, app):
        self.app = app
        self.textControl = appuifw.Text()
        self.endPos=0
        self.posHistory=0
        self.MAX_HISTORY=0
        self.History=[u'']
        self.cwd=u'e:/'
        self.PS1=self.cwd+"$ "
        appuifw.app.body = self.textControl
        appuifw.app.menu=[(u"ls", self.ls),
            (u"Exit", self.app.exit)]
        appuifw.app.exit_key_handler = self.app.exit
        self.textControl.bind(key_codes.EKeySelect, self.docommand)
        self.textControl.bind(key_codes.EKeyDownArrow, self.nextLine)
        self.textControl.bind(key_codes.EKeyUpArrow, self.preLine)
    
    def printf(self, str1=''):
        self.textControl.len()
        self.textControl.add(str1)
        self.endPos=self.textControl.get_pos()
    
    def nextLine(self):
        self.clearLine()
        self.posHistory+=1
        if self.posHistory > self.MAX_HISTORY:
            self.posHistory = self.MAX_HISTORY
        self.textControl.add(self.History[self.posHistory])
        self.textControl.set_pos(self.textControl.len())
    def preLine(self):
        self.clearLine()
        self.posHistory-=1
        if self.posHistory < 0:
            self.posHistory = 0
        self.textControl.add(self.History[self.posHistory])
        self.textControl.set_pos(self.textControl.len())

    def clearLine(self):
        self.textControl.set(self.textControl.get()[:self.endPos])
        self.textControl.set_pos(self.endPos)

    def pushHistory(self, cCommandLine):
        self.MAX_HISTORY+=1
        self.History.append(cCommandLine)

    def docommand(self):
        self.textControl.set_pos(self.textControl.len())
        cCommand = self.getCommand()
        try:
            words = cCommand.split()
            command = getattr(self, words[0])
            args = words[1:]
            command(*args)
        except KeyboardInterrupt:
            self.app.exit()
        except EOFError:
            self.app.exit()
        except Exception, e:
            self.printf(u"\nError: "+e.__class__.__name__+u":"+str(e)+NEW_LINE)
        self.pushHistory(cCommand)
        self.PS1=self.cwd+"$ "
        self.printf(NEW_LINE+self.PS1)
        self.endPos=self.textControl.len()
        self.posHistory=self.MAX_HISTORY
        self.textControl.set_pos(self.endPos)

    def getCommand(self):
        return self.textControl.get()[self.endPos:]

    def setcolor(self, cColor):
        self.textControl.color=cColor
    
    def cd(self, dir):
        new_cwd = dir
        if str(new_cwd)[-1] != '/':
            new_cwd = new_cwd+'/'
        os.chdir(new_cwd)
        self.cwd = (os.getcwd()).decode('utf-8')

    def pwd(self):
        self.printf("\n"+self.cwd)

    def exit(self):
        appuifw.app.set_exit()

    def e(self):
        self.cd(u'e:/')
    def c(self):
        self.cd(u'c:/')
    def d(self):
        self.cd(u'd:/')
    def z(self):
        self.cd(u'z:/')
    def mkdir(self, dir=''):
        os.mkdir(dir)
    def rmdir(self, dir=''):
        os.rmdir(dir)
    def rename(self, f1='',f2=''):
        os.rename(f1,f2)
    def df(self):
        sys.stdout=self.textControl
        self.printf(NEW_LINE+str(sysinfo.free_drivespace()).decode("utf-8"))

    def history(self):
        for i in range(len(self.History)):
            self.printf(NEW_LINE+self.History[i])
    def ram(self):
        self.printf(u"\n free_ram:"+str(sysinfo.free_ram())+u"\n total_Ram:"+ \
            str(sysinfo.total_ram())+u"\n total rom:"+str(sysinfo.total_rom()))

    def clr(self):
        self.textControl.set('')
        self.textControl.set_pos(0)
    def cls(self):
        self.clr()


    def echo(self, str1=""):
        self.printf(NEW_LINE+str1)
    
    def ls(self, dir=''): #error in farsi code
        dhandle = [x.decode('utf-8') for x in os.listdir(dir)]
        self.printf(NEW_LINE)
        for file_info in range(len(dhandle)):
            if os.path.isdir(dhandle[file_info]):
                dhandle[file_info]=u"["+dhandle[file_info]+u"]"
                self.setcolor(BLUE)
            else:
                self.setcolor(NORMAL)
            self.printf(dhandle[file_info]+TAB)
            self.setcolor(NORMAL)
    def cp(self, f1, f2): #error
        self.printf(f1+NEW_LINE+f2)
        e32.file_copy(f2, f1)

if __name__ == "__main__":
    main()
[/ltr]
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2009-03-13, 07:19 PM,
ارسال : #10
پاسخ: برنامه نویسی توسط موبایل با
سلام .من تازه با پاتون اشنا شدم . و راهنمایی کامل(البته به زبان فارسی) در مورد استفاده از اون رو میخوام .اگه ممکن هست کمک کنید...متشکرمabs87net
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان