اطلاعیه

Collapse
No announcement yet.

مشکل با رشته string در آردوینو

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

    مشکل با رشته string در آردوینو

    سلام
    بنده تازه کار با آردوینو اونو رو شروع کردم
    دوسه روزه درگیر این معما شدم
    لطفا اساتید من رو راهنمایی کنید.
    عکس رو پیوست میکنم و توضیحش اینه که میخام رشته ای متشکل از تاریخ و ساعت بصورت 22-30-19-23-9-1400 درست کنم تا هم برای نامگذاری فایلها به مشکل بر نخورم و هم داخل فایل بصورت لاگ استفاده کنم.
    حالا فعلا به نامگذاری و لاگ نرسیدم و فقط میخام یه متغیر رشته آماده کنم تا بتونم در هر جای برنامه که خاستم ازش استفاده کنم
    ولی فعلا بمشکل بر خوردم و همونطور که در عکس معلومه او رشته تا یه جایی خوب عمل میکنه ولی از یه نقطه به بعد حتی رشته قبلش که درست بوده رو خراب میکنه
    جدیدترین ویرایش توسط mehdi29665; ۰۸:۳۷ ۱۴۰۰/۰۹/۲۳.

    #2
    پاسخ : مشکل با رشته string در آردوینو

    نوشته اصلی توسط mehdi29665 نمایش پست ها
    سلام
    بنده تازه کار با آردوینو اونو رو شروع کردم
    دوسه روزه درگیر این معما شدم
    لطفا اساتید من رو راهنمایی کنید.
    عکس رو پیوست میکنم و توضیحش اینه که میخام رشته ای متشکل از تاریخ و ساعت بصورت 22-30-19-23-9-1400 درست کنم تا هم برای نامگذاری فایلها به مشکل بر نخورم و هم داخل فایل بصورت لاگ استفاده کنم.
    حالا فعلا به نامگذاری و لاگ نرسیدم و فقط میخام یه متغیر رشته آماده کنم تا بتونم در هر جای برنامه که خاستم ازش استفاده کنم
    ولی فعلا بمشکل بر خوردم و همونطور که در عکس معلومه او رشته تا یه جایی خوب عمل میکنه ولی از یه نقطه به بعد حتی رشته قبلش که درست بوده رو خراب میکنه
    البته الان به یه موضوعی پی بردم
    وقتی پروسه تولید رشته رو داخل فایل جداگانه ای انجام دادم (یعنی فقط بیاد ساعت و تاریخ رو داخل متغیر رشته قرار بده) برنامه بدرستی کار میکنه
    ولی داخل برنامه من خراب میشه
    DateTime now = rtc.now();
    datestring = String(now.year(), DEC);
    datestring += '-' ;
    datestring += String(now.month(), DEC);
    datestring += '-' ;
    datestring += String(now.day(), DEC);
    datestring += '-' ;
    datestring += String(now.hour());
    datestring += '-' ;
    datestring += String(now.minute());
    datestring += '-' ;
    datestring += String(now.second());;

    Serial.println(datestring);



    اینم نمونه کد که بطور مجزا اجرا کردم و همه چی خوب بوده

    البته برنامه اصلی میاد و با ماژول دیتا لاگر ارتباط میگیره و لیست فایلهای داخلش رو نمایش میده و همچنین کل برنامه حدود 85 درصد از فضای حافظه متغیرها رو اشغال میکنه و بنده شک به مختل شدن محل ذخیره متغیرها دارم
    چیزی شبیه به استیک سخت افزاری و نرم افزاری که باید تنظیم بشه و نمیدونم برای آردوینو از کجا تنظیم میشه

    دیدگاه


      #3
      پاسخ : مشکل با رشته string در آردوینو

      اساتید کسی نمیتونه منو راهنمایی کنه.
      همچنان مشکل دارم و هر چه پروژه بزرگتر میشه ایراداتش هم بیشتر
      الان حتی وقتی که مقداری رو داخل یک متغیر رشته میریزم برنامه به مشکل بر میخوره.
      کلیات پروژه اینه
      1-ارتباط با ماژول اس دی(دیتا لاگر) و خواندن و نوشتن فایل و همچنین ارتباط با آی سی ساعت داخل ماژول
      2- ارتباط با ماژول سیم 800 و تنظیمات برای دریافت و ارسال پیام
      3-خواندن دو پایه ورودی
      در حقیقت شبیه یک سیستم دزدگیر که در صورت تحریک شدن هم تاریخ و زمان داخل فایلی ثبت بشه و هم ارسال پیامک داشته باشه
      با اینکه هم حافظه فلش 40 درصد خالیه و هم حافظه رم 20 درصد خالیه ولی رفتار برنامه طوریه که انگار حافظه پشته کم میاره و اطلاعات رو قاطی میکنه
      و برای آردوینو جایی برای تنظیم این پشته ها پیدا نکردم .لطفا منو راهنمایی کنید.

      دیدگاه


        #4
        پاسخ : مشکل با رشته string در آردوینو

        نوشته اصلی توسط mehdi29665 نمایش پست ها
        اساتید کسی نمیتونه منو راهنمایی کنه.
        همچنان مشکل دارم و هر چه پروژه بزرگتر میشه ایراداتش هم بیشتر
        الان حتی وقتی که مقداری رو داخل یک متغیر رشته میریزم برنامه به مشکل بر میخوره.
        کلیات پروژه اینه
        1-ارتباط با ماژول اس دی(دیتا لاگر) و خواندن و نوشتن فایل و همچنین ارتباط با آی سی ساعت داخل ماژول
        2- ارتباط با ماژول سیم 800 و تنظیمات برای دریافت و ارسال پیام
        3-خواندن دو پایه ورودی
        در حقیقت شبیه یک سیستم دزدگیر که در صورت تحریک شدن هم تاریخ و زمان داخل فایلی ثبت بشه و هم ارسال پیامک داشته باشه
        با اینکه هم حافظه فلش 40 درصد خالیه و هم حافظه رم 20 درصد خالیه ولی رفتار برنامه طوریه که انگار حافظه پشته کم میاره و اطلاعات رو قاطی میکنه
        و برای آردوینو جایی برای تنظیم این پشته ها پیدا نکردم .لطفا منو راهنمایی کنید.
        سلام
        بهتره برید اساسی در مورد نوع داده string تحقیق کنید. این نوع داده در واقع یک کلاس هست و به خاطر همین میتونه توی برنامه اثرات پیش بینی نشده ای بذاره اگر درست باهاش رفتار نکنید. بهتره به کارکردن باهاش مسلط باشید و بدونید دقیقا دارید چکار میکنید که به مشکلات حافظه بر نخورید. فکر میکنم این پروژه یکم برای شما سنگین بوده. شما اول باید دانش پایه خودتون رو قوی تر کنید.

        دیدگاه


          #5
          پاسخ : مشکل با رشته string در آردوینو

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

          دیدگاه


            #6
            پاسخ : مشکل با رشته string در آردوینو

            نوشته اصلی توسط mehdi29665 نمایش پست ها
            سلام
            بنده تازه کار با آردوینو اونو رو شروع کردم
            دوسه روزه درگیر این معما شدم
            لطفا اساتید من رو راهنمایی کنید.
            عکس رو پیوست میکنم و توضیحش اینه که میخام رشته ای متشکل از تاریخ و ساعت بصورت 22-30-19-23-9-1400 درست کنم تا هم برای نامگذاری فایلها به مشکل بر نخورم و هم داخل فایل بصورت لاگ استفاده کنم.
            حالا فعلا به نامگذاری و لاگ نرسیدم و فقط میخام یه متغیر رشته آماده کنم تا بتونم در هر جای برنامه که خاستم ازش استفاده کنم
            ولی فعلا بمشکل بر خوردم و همونطور که در عکس معلومه او رشته تا یه جایی خوب عمل میکنه ولی از یه نقطه به بعد حتی رشته قبلش که درست بوده رو خراب میکنه
            بنظرم در برنامه مشکل حافظه پیدا میکنید
            درنظر داشته باشید وقتی طول یک رشته رو خیلی زیاد میکنید مقدار زیادی از حافظه رم اشغال میشه واگر از یه حدی بگذره ورم کم بیاره برنامه درست عمل نمیکنه وقاطی میکنه
            در برنامه شما چندین بار یک رشته رو تغییر وبا دستور =+ اون رو افزایش دادید که شده یک رشته طولانی.دقت کنید رشته در اصل یک آرایه char است که حروف کنار هم قرار گرفته
            سعی کنید تا میتونید طول رشته رو کم کنید یا از متغیرهای عددی استفاده کنید.
            در راهنمای آردینو طولی که هر شته از رم اشغال میکنه یا در واقع طول یک رشته نوشته شده که مثلا نوع int چقدر حافظه میگیره یا نوع long و...
            نوع string به علتی که بالا نوشتم مقدار زیادی ممکنه اشغال کنه

            دیدگاه

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