اطلاعیه

Collapse
No announcement yet.

برنامه برای خواندن اطلاعات از کارت تلفن

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

    مشکل شما کجاست؟
    الگوریتم کلی برنامه تان را بنویسید

    دیدگاه


      #17
      پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

      1- فراخوانی تابع RESET
      در این تابع اول کلاک را صفر کرده، 20 میلی ثانیه صبر میکند و بعد پایه ریست 1 شده، 20 میلی ثانیه صبر میکند و بعد کلاک 1 شده 20 میلی ثانیه صبر میکند و بعد کلاک 0 شده 20 میلی ثانیه صبر میکند و بعد ریست 0 می شود و 20 میلی ثانیه صبر میکند. از تابع خارج می شود.


      ==========( کد کشور سازنده از طریق خواندن 32 بیت اول محاسبه میشود : )======================

      2- آیا K<8 است؟ اگر بله برو به مرحله 3 و اگر نه برو به مرحله 14
      3- مقدار آرایه ی 4 خونه ای ARRAY_A را صفر کن.
      4- آیا J<4 است؟ اگر بله برو به مرحله 5 و اگر نه برو به مرحله 12
      5- کلاک را 1 کن.
      6- 20 میلی ثانیه صبر کن.
      7- کلاک را 0 کن.
      8- 20 میلی ثانیه صبر کن.
      9- مقدار I/O را از پورت ورودی مربوط بخوان ( PINB.0 ) و در پورت A بریز ( PORTA.0 )
      10- مقدار PORTA.0 را XOR کن با 1 و در آرایه [ ARRAY_S [J قرار بده.
      11- برو به مرحله 4
      12- مقدار 10 دهی آرایه ی ARRAY_A را با فرمول زیر حساب کن و در متغیر RESULT بریز:
      REZULT=ARRAY_A[0]+ARRAY_A[1]*2+ARRAY_A[2]*4+ARRAY_A[3]*8

      13- مقدار RESULT را روی LCD چاپ کن و برو به مرحله 2
      14- 2 ثانیه صبر کن و بعد LCD رو پاک کن.

      ==========( سریال کارت از طریق خواندن 32 بیت دوم محاسبه میشود : )======================

      15- تمامی مراحل از 14-2 مجدداً برای محاسبه ی سریال کارت استفاده میگردد.

      ==========( اعتبار کارت از طریق خواندن 40 بیت بعدی محاسبه میشود (5 بایت 9 و 10 و 11 و 12 و 13 ) )======================

      16- مقدار متغیر b را صفر کن.(b تعداد 1 های بایت 9 را مشخص می کند)

      ============( خواندن بایت 9 )=================

      17- آیا I<8 است؟ اگر بله برو به مرحله بعد و اگر نه برو به مرحله 25
      18- کلاک را 1 کن .
      19- 20 میلی ثانیه صبر کن.
      20- کلاک را 0 کن.
      21- 20 میلی ثانیه صبر کن.
      22- I/O را بخوان و با 1 XOR کن و اگر حاصل برابر 1 شد به b یک واحد اضافه کن.
      23- 20 میلی ثانیه صبر کن.
      24- به I یک واحد بیفزا و به مرحله 17 برو.

      ===========(خواندن بایت 10)==================

      25- متغیر d را صفر کن. (d تعداد 1 های بایت 10 را مشخص می کند)
      26- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از d استفاده میکنی.

      ===========(خواندن بایت 11)==================

      27- متغیر e را صفر کن.(e تعداد 1 های بایت 11 را مشخص می کند)
      28- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از e استفاده میکنی.

      ===========(خواندن بایت 12)==================

      29- متغیر f را صفر کن.(f تعداد 1 های بایت 12 را مشخص می کند)
      30- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از f استفاده میکنی.

      ===========(خواندن بایت 13)==================

      31- متغیر g را صفر کن.(g تعداد 1 های بایت 13 را مشخص می کند)
      32- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از g استفاده میکنی.

      ================================================== =====
      33- حال تعداد 1های بایت 13 را که همان g است در 5 ضرب کن + تعداد 1های بایت 12 را که همان f است در 40 ضرب کن + تعداد 1های بایت 11 را که همان e است در 320 ضرب کن + تعداد 1های بایت 10 را که همان d است در 2560 ضرب کن + تعداد 1های بایت 9 را که همان b است در 20480 ضرب کن
      و حاصل را در sum بریز و sum را چاپ کن.

      ================================================== =====
      34- پایان

      ************************************************** *******************************************

      امیدوارم الگوریتمم گویا بوده باشه.
      ظاهرش فکر میکنم درسته اما چرا جواب درست نمیده جای سوال داره. :angry:
      که امیدوارم شما متوجه اشکالش بشوید. :agree:








      دیدگاه


        #18
        پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

        نوشته اصلی توسط desert
        1- فراخوانی تابع RESET
        در این تابع اول کلاک را صفر کرده، 20 میلی ثانیه صبر میکند و بعد پایه ریست 1 شده، 20 میلی ثانیه صبر میکند و بعد کلاک 1 شده 20 میلی ثانیه صبر میکند و بعد کلاک 0 شده 20 میلی ثانیه صبر میکند و بعد ریست 0 می شود و 20 میلی ثانیه صبر میکند. از تابع خارج می شود.


        ==========( کد کشور سازنده از طریق خواندن 32 بیت اول محاسبه میشود : )======================

        2- آیا K<8 است؟ اگر بله برو به مرحله 3 و اگر نه برو به مرحله 14
        3- مقدار آرایه ی 4 خونه ای ARRAY_A را صفر کن.
        4- آیا J<4 است؟ اگر بله برو به مرحله 5 و اگر نه برو به مرحله 12
        5- کلاک را 1 کن.
        6- 20 میلی ثانیه صبر کن.
        7- کلاک را 0 کن.
        8- 20 میلی ثانیه صبر کن.
        9- مقدار I/O را از پورت ورودی مربوط بخوان ( PINB.0 ) و در پورت A بریز ( PORTA.0 )
        10- مقدار PORTA.0 را XOR کن با 1 و در آرایه [ ARRAY_S [J قرار بده.
        11- برو به مرحله 4
        12- مقدار 10 دهی آرایه ی ARRAY_A را با فرمول زیر حساب کن و در متغیر RESULT بریز:
        REZULT=ARRAY_A[0]+ARRAY_A[1]*2+ARRAY_A[2]*4+ARRAY_A[3]*8

        13- مقدار RESULT را روی LCD چاپ کن و برو به مرحله 2
        14- 2 ثانیه صبر کن و بعد LCD رو پاک کن.

        ==========( سریال کارت از طریق خواندن 32 بیت دوم محاسبه میشود : )======================

        15- تمامی مراحل از 14-2 مجدداً برای محاسبه ی سریال کارت استفاده میگردد.

        ==========( اعتبار کارت از طریق خواندن 40 بیت بعدی محاسبه میشود (5 بایت 9 و 10 و 11 و 12 و 13 ) )======================

        16- مقدار متغیر b را صفر کن.(b تعداد 1 های بایت 9 را مشخص می کند)

        ============( خواندن بایت 9 )=================

        17- آیا I<8 است؟ اگر بله برو به مرحله بعد و اگر نه برو به مرحله 25
        18- کلاک را 1 کن .
        19- 20 میلی ثانیه صبر کن.
        20- کلاک را 0 کن.
        21- 20 میلی ثانیه صبر کن.
        22- I/O را بخوان و با 1 XOR کن و اگر حاصل برابر 1 شد به b یک واحد اضافه کن.
        23- 20 میلی ثانیه صبر کن.
        24- به I یک واحد بیفزا و به مرحله 17 برو.

        ===========(خواندن بایت 10)==================

        25- متغیر d را صفر کن. (d تعداد 1 های بایت 10 را مشخص می کند)
        26- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از d استفاده میکنی.

        ===========(خواندن بایت 11)==================

        27- متغیر e را صفر کن.(e تعداد 1 های بایت 11 را مشخص می کند)
        28- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از e استفاده میکنی.

        ===========(خواندن بایت 12)==================

        29- متغیر f را صفر کن.(f تعداد 1 های بایت 12 را مشخص می کند)
        30- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از f استفاده میکنی.

        ===========(خواندن بایت 13)==================

        31- متغیر g را صفر کن.(g تعداد 1 های بایت 13 را مشخص می کند)
        32- تمامی مراحل از 17 تا 24 را تکرار کن با این تفاوت که به جای b از g استفاده میکنی.

        ================================================== =====
        33- حال تعداد 1های بایت 13 را که همان g است در 5 ضرب کن + تعداد 1های بایت 12 را که همان f است در 40 ضرب کن + تعداد 1های بایت 11 را که همان e است در 320 ضرب کن + تعداد 1های بایت 10 را که همان d است در 2560 ضرب کن + تعداد 1های بایت 9 را که همان b است در 20480 ضرب کن
        و حاصل را در sum بریز و sum را چاپ کن.

        ================================================== =====
        34- پایان

        ************************************************** *******************************************

        امیدوارم الگوریتمم گویا بوده باشه.
        ظاهرش فکر میکنم درسته اما چرا جواب درست نمیده جای سوال داره. :angry:
        که امیدوارم شما متوجه اشکالش بشوید. :agree:








        اولین مشکل این است که بعد از ریست , بیت اول باید از i/o خوانده شود یعنی بعد از پایین امدن پایه ریست بیت اول روی خروجی کارت قرار میگیره
        اینگونه که پیداست بعد از ریست شما یک کلاک به کارت می دهید و بیت اول را میخوانید
        مشکل دیگری که می تواند باشد کحاسبه بایت های کارت است به این مفهوم که اولین بایت باید بایت 0 باشد که تا بایت 7 مربوط به کد کشور و سریال است و 5 بایت بعدی مربوط به اعتبار کارت است
        شما بایت های کارت را چگونه محاسبه میکنید ؟
        شما برنامه smartlab را اجراکنید از قسمت view پنجره memory dump را باز کنید بایت هایی که با رنگ سبز متمایز شده اند بایت های مربوط به اعتبار هستند
        شما می توانید در قسمت lab پایه های کارت را بطور دستی کنترل کنید و نتیجه کلاک و ریست ها را روی خروجی کارت ببینید
        در قسمت راهنمای برنامه چگونگی اتصال پایه های کارت به پورت موازی نشان داده شده است

        اگر مشکل همچنان پا برجا بود بهتر است برای ازمایش در برنامه تان محتویات کارت را بصورت بایت به بایت روی lcd تمایش بدهید و با بایت هایی که در برنامه smartlab می بینید مقایسه کنید
        اینگونه مشکل به زودی مشخص خواهد شد

        دیدگاه


          #19
          پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

          سلام.
          عددی رو که به عنوان کشور سازنده کارت مشخص میشه رو از کجا میشه فهمید که چه کشوریه؟
          یعنی عدد رو چطور به حروف میشه تبدیل کرد تا بفهمیم کشور سازنده چیه؟
          فرض کنید عدد 85FC0B0E چه کشوری میشه؟ یا عدد 9966....؟
          ممنونم

          دیدگاه


            #20
            پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

            نوشته اصلی توسط desert
            سلام.
            عددی رو که به عنوان کشور سازنده کارت مشخص میشه رو از کجا میشه فهمید که چه کشوریه؟
            یعنی عدد رو چطور به حروف میشه تبدیل کرد تا بفهمیم کشور سازنده چیه؟
            فرض کنید عدد 85FC0B0E چه کشوری میشه؟ یا عدد 9966....؟
            ممنونم
            من فکر نمیکنم رابطه ای بین این اعداد و نام کشور ها باشه

            دیدگاه


              #21
              پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

              پس چطوری میفهمن که این کارت چون عدد کشورش فلان چیز شده ، مربوط به کشور فلان است؟ oo:

              دیدگاه


                #22
                پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

                سلام

                به لینک زیر هم یه سری بزنید :

                http://www.serasidis.gr/circuits/telecard_reader/telecardreader.htm

                دیدگاه


                  #23
                  پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

                  سلام. ممنونم.
                  قبلاً این سایتو زیرو رو کرده بودم. توضیح خاصی درباره اینکه چطور با استفاده از عددی که از 4 بایت اول حافظه کارت بدست می آریم، میشه اسم کشورو فهمید، نداده.
                  شاید هر کشوری برای خودش عدد خاصی رو در مخابرات داشته باشه oo:
                  حالا چطور میشه فهمید، عدد مربوطه مال کدوم کشوره؟

                  دیدگاه


                    #24
                    پاسخ : برنامه برای خواندن اطلاعات از کارت تلفن

                    سلام
                    ببین مهندس به سایت زیر یه سر بزن دقیقا همون پروژه ای که می خوای داره یه فایل آموزشی pdf هم داره بخونش مشکلت حل میشه انشاالله
                    www.iseee.ir

                    دیدگاه

                    لطفا صبر کنید...
                    X