اطلاعیه

Collapse
No announcement yet.

مشکلی عجیب با متغیر single در بیسکام

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

    مشکلی عجیب با متغیر single در بیسکام

    سلام
    خوبین
    داشتم رو یه برنامه ای کار میکردم که مشکل زیر رو پیدا کردم
    وقتی یه متغیر از جنس string تعریف میکنیم
    باید بشه حدود 43 رقم توش عدد ریخت
    ولی من بیشتر از 8 تا نمیتونم بریزم و ارور nan رو نشون میده :eek: :cry:
    به نظرتون مشکل از کجاست ؟
    فایل برنامه و شبیه سازی رو ببینید
    برنامه کلا 5 خطه
    و شبیه سازی هم تو پرو تیوسه جالب اینجاست که همین جواب تو عمل هم عین ایننه یعنی مشکل از محیط پروتیو نیست :eek:
    فایل های پیوست شده
    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

    #2
    پاسخ : مشکلی عجیب با متغیر string در بیسکام

    با سلام
    شما STRING رو چند تایی تعریف می کنید

    با این سه تا ور برید شاید مشکل از این ها باشه
    $hwstack = 64
    $swstack = 64
    $framesize = 64
    هر سه تارو همین مقدار فعلا بزارید اگه نشد بیشتر شون کنید شاید مشکل از فضا داده باشه!

    دیدگاه


      #3
      پاسخ : مشکلی عجیب با متغیر string در بیسکام

      این که Single هست STRING نیست که!

      دیدگاه


        #4
        پاسخ : مشکلی عجیب با متغیر string در بیسکام

        دوست عزیز
        این فرکانسی که شما نوشتید که داخل میکرو تولید نمیشه باید از یک کریستال خارجی به انضمام خازن 22PF استفاده کنید تا نرخ ارسال اطلاعات خطاش صفر بشه
        فیوزبیت هم باید برای کریستال خارجی تنظیم کنید!
        در ضمن شما پورت سریال رو هم که کانفیگ نکردید!

        دیدگاه


          #5
          پاسخ : مشکلی عجیب با متغیر string در بیسکام

          داداش ببین
          مشکل از فرکانس و این چیز ها نیست
          شما روی میکرو کلیک کنید
          میبینید یه فرکانسی اون پاینین نوشتم اون فرکامس همون فرکانس 11059200 هستش
          من بار ها مدر راه انداختم فرکانس کاری درسته
          سر برگ تاپیک رو اصلاح کردم متغیر string برای رشته هستش و لی من قصد دارم عدد با تعداد رقم های بالا
          ذخیره کنم


          فایل های پیوست شده
          [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

          دیدگاه


            #6
            پاسخ : مشکلی عجیب با متغیر single در بیسکام

            اقا مجتبی

            نوشته اصلی توسط mojtaba_led
            دوست عزیز
            این فرکانسی که شما نوشتید که داخل میکرو تولید نمیشه باید از یک کریستال خارجی به انضمام خازن 22PF استفاده کنید تا نرخ ارسال اطلاعات خطاش صفر بشه
            فیوزبیت هم باید برای کریستال خارجی تنظیم کنید!
            در ضمن شما پورت سریال رو هم که کانفیگ نکردید!
            از لحاظ فنی بازم مشکلی میبینید ؟
            کلمه ی حامد درست ارسال میشه
            ولی اون عدد نه خیر
            اگر یه کمی هم مشکل فرکانسی بود حتی یک کیلو هرتز
            این نوشته حامد درست نمی افتاد
            پس مشکل کجاست :angry: :angry:



            من سالهاست با این حالت پورت سریال رو راه انداختم از لحاض سریال مشکلی نیست اصلا اگه ال سی دی هم بزارین همینه
            [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

            دیدگاه


              #7
              پاسخ : مشکلی عجیب با متغیر single در بیسکام

              بله
              حق باشماست من رو ببخشید
              دوباره ندونسته یک چیزی پرندوم آخه من تا حالا نمیدونستم که پرتئوس اینقدر دیگه هوشمنده :biggrin:
              راستی میشه بگید چجوری سر برگ رو تغییر دادید من یک جایی می خوام این کار رو انجام بدم اما نمی دونم چجوری ، تایپیک مال خودم هستش

              دیدگاه


                #8
                پاسخ : مشکلی عجیب با متغیر single در بیسکام

                اولین پست رو ویرایش کنید
                جلوی کادر موضوع رو میبینید ؟
                نوشته
                پاسخ : مشکلی عجیب با متغیر single در بیسکام
                البته تو تا پیک شما نه
                "پاسخ:"
                هست نه موضوع شما اینه :mrgreen:
                اون رو تغیر بدید ذخیره کنید
                عنوان دیده شده در انجمن تغیر خواهد کرد ولی پاسخ های داده شده به عنوان قبلی داده شده است و فکر کنم تغیر نمیکنه :job:
                [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                دیدگاه


                  #9
                  پاسخ : مشکلی عجیب با متغیر single در بیسکام

                  http://www.eca.ir/forum2/index.php?topic=14852.0
                  دقیقا مشکل من تو همین تاپیک
                  بدون پاسخ مونده :cry:
                  اون اقا اومده رقم Final = 555555555
                  رو داده اگه 2 تا 5 هم بیشتر میزاشت می شد مشکل بنده :cry2: :angry:
                  [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                  دیدگاه


                    #10
                    پاسخ : مشکلی عجیب با متغیر single در بیسکام

                    آقا حل شد
                    ببنید باید از متغیری از نوع Double استفاده کنید بنابرایننوع متغیر رو از SINGLE به Double تغییر بدهید :

                    $regfile = "m32def.dat"
                    $crystal = 11059200



                    $swstack = 256
                    $hwstack = 256
                    $framesize = 256
                    $baud = 9600

                    Dim Nam As Double





                    Nam = 12345682454441524.3

                    Do
                    Print "hamed"

                    Print Nam
                    Wait 1
                    Loop

                    دیدگاه


                      #11
                      پاسخ : مشکلی عجیب با متغیر single در بیسکام



                      اقا شما اینو تست کردی ؟ :eek:
                      کار نمیکنه :eek:
                      عددی که من داردم یه عدد دیگه میکنه ممیز میندازه
                      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                      دیدگاه


                        #12
                        پاسخ : مشکلی عجیب با متغیر single در بیسکام

                        بله تست کردم جواب داد البته عدد رو به صورت نماد علمی e نشون میده
                        مثلا مقدار بالا رو به صورت زیر نشون میده
                        12.3456824544415243E15
                        خوب این همون عدد هست دیگه !

                        دیدگاه


                          #13
                          پاسخ : مشکلی عجیب با متغیر single در بیسکام

                          :mrgreen: اخه به دردم نمیخوره این من میخوام تو ماشین حساب استفاده کنم
                          من یه چیزایی مبهم یادم هستش
                          که جلوی این نوع متغیر ها یه دستوری بود مینوشتی که تعداد رقم ممیز رو خودت انتخاب میکردی
                          [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                          دیدگاه


                            #14
                            پاسخ : مشکلی عجیب با متغیر single در بیسکام

                            نکته مهم:
                            تعداد ارقام قابل ذخیره در این دو فرم عددی ثابته و شما نمیتونی اون تعدادی رو که دلت میخواد توش قرار بدی. برای متغیر از نوع single این تعداد 7 تا 8 رقم و برای double 15 تا 16 رقمه. بنا براین عددی مثل 123456789 وقتی در یک single قرار میگیره در موقع چاپ عدد 1.2345678e8 رو تحویل میده. 7 تا 8 رقم با معنی و یک توان حداکثر مقدار 38.
                            حالا ببین مشکلت کجاست!

                            دیدگاه


                              #15
                              پاسخ : مشکلی عجیب با متغیر single در بیسکام

                              آقا یه راه حل اما عملکردش مثل ماشین حساب های 8 رقمی میشه:


                              $regfile = "m32def.dat"
                              $crystal = 11059200



                              $swstack = 256
                              $hwstack = 256
                              $framesize = 256
                              $baud = 9600

                              Dim Nam As Single , Nam1 As Double , L As Integer
                              Dim A As String * 10




                              Nam1 = 123456789
                              A = Str(nam1)
                              L = Len(a)





                              Do
                              Print "hamed"
                              If L < 12 Then
                              Nam = Val(a)
                              Print Nam
                              Else
                              Print Nam1
                              End If
                              Wait 1
                              Loop


                              دیدگاه

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