ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









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









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2018/07/24
    20
    4

    مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    سلام دوستان
    میخواستم تو پروژه SD کارت با کتابخونه خود آردوینو بیام نام یک دایرکتوری رو یه مقدار متغییر بذارم بعد داخل اون دایرکتوری یه دایرکتوری دیگه با نام متغیر بسازم
    برایساخت دایرکتوری باید از دستور زیر استفاده کنیم
    SD.mkdir("dirName")
    مشکل اول که چجوری متغییر رو داخل "" تعریف کنم؟!متغییر بره تو ""فکر میکنه که مقدار ثابته!!!!!!!!
    مشکل دوم
    من اومدم بیخیال "" شدم گفتم نذارمش و یه دایرکتوری دیگه تو دایرکتوری اول بسازم به این صورت

    SD.mkdir(dirName/dirName2)
    اینجا ایراد گرفت چرا دوتا متغیر String رو تقسیم بر هم میکنی!!!!!!درصورتی برای ادرس دهی از / استفاده میکنن.
    کسی راه حلشو میدونه بگه بدجور توش گیر کردم ممنون


  2. #2
    2017/06/13
    210
    131

    پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    نقل قول نوشته اصلی توسط MrERFAN

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام دوستان
    میخواستم تو پروژه SD کارت با کتابخونه خود آردوینو بیام نام یک دایرکتوری رو یه مقدار متغییر بذارم بعد داخل اون دایرکتوری یه دایرکتوری دیگه با نام متغیر بسازم
    برایساخت دایرکتوری باید از دستور زیر استفاده کنیم
    SD.mkdir("dirName")
    مشکل اول که چجوری متغییر رو داخل "" تعریف کنم؟!متغییر بره تو ""فکر میکنه که مقدار ثابته!!!!!!!!
    مشکل دوم
    من اومدم بیخیال "" شدم گفتم نذارمش و یه دایرکتوری دیگه تو دایرکتوری اول بسازم به این صورت

    SD.mkdir(dirName/dirName2)
    اینجا ایراد گرفت چرا دوتا متغیر String رو تقسیم بر هم میکنی!!!!!!درصورتی برای ادرس دهی از / استفاده میکنن.
    کسی راه حلشو میدونه بگه بدجور توش گیر کردم ممنون


    سلام
    درمورد سوال اول، شما در واقع دارید با رشته ها کار میکنید. تعریف متغیری رشته ها به شکل آرایه ای از char هستش که خونه آخر رشته متنی به یک کاراکتر خالی '0\' ختم میشه. مثلا رشته ای به اسم str به شکل زیر تعریف میشه و با تابع sprint که توی کتابخونه <stdio.h> هست میشه تو طول برنامه بهش مقدار داد:

    char str[20];
    sprintf(str, "hello!");

    البته میشه موقع تعریف رشته هم به شکل زیر بهش مقدار اولیه داد:

    char str[20] = "hello!"

    با این دو روش که گفتم به صورت خودکار رشته تنظیم میشه و شما کافیه به شکل زیر اونو به تابعی که میخوایید بدید:

    SD.mkdir(str);

    اما در مورد سوال دوم هم بگم که خوب معلومه نباید همچین کاری بشه! شما در واقع دارید آدرس خونه اول دوتا رشته رو برهم تقسیم میکنید که خوب از نظر کامپایلر هم این کار اشتباهه! شما باید تحقیق کنید ببینید چطور میشه دوتا رشته رو با هم ترکیب کرد و بینشون کاراکتر '/' که مد نظر هست قرار داد. من روشش رو یادم رفته ولی شما میتونید با یک سرچ ساده توی اینترنت روشش رو پیدا کنید
  3. #3
    2018/07/24
    20
    4

    Question پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام
    درمورد سوال اول، شما در واقع دارید با رشته ها کار میکنید. تعریف متغیری رشته ها به شکل آرایه ای از char هستش که خونه آخر رشته متنی به یک کاراکتر خالی '0\' ختم میشه. مثلا رشته ای به اسم str به شکل زیر تعریف میشه و با تابع sprint که توی کتابخونه <stdio.h> هست میشه تو طول برنامه بهش مقدار داد:

    char str[20];
    sprintf(str, "hello!");

    البته میشه موقع تعریف رشته هم به شکل زیر بهش مقدار اولیه داد:

    char str[20] = "hello!"

    با این دو روش که گفتم به صورت خودکار رشته تنظیم میشه و شما کافیه به شکل زیر اونو به تابعی که میخوایید بدید:

    SD.mkdir(str);

    اما در مورد سوال دوم هم بگم که خوب معلومه نباید همچین کاری بشه! شما در واقع دارید آدرس خونه اول دوتا رشته رو برهم تقسیم میکنید که خوب از نظر کامپایلر هم این کار اشتباهه! شما باید تحقیق کنید ببینید چطور میشه دوتا رشته رو با هم ترکیب کرد و بینشون کاراکتر '/' که مد نظر هست قرار داد. من روشش رو یادم رفته ولی شما میتونید با یک سرچ ساده توی اینترنت روشش رو پیدا کنید
    سلام دوست عزیز دستت دردنکنه فهمیدم چی به چی شدش
    لپ کلام اینه که باید از آرایه کارکتری استفاده کنیم.
    تو نت دنبال یه مثال گشتم به کد زیر رسیدم
    #include <SD.h>
    #include "RTClib.h"
    #include <Wire.h>
    #include <string.h>
    RTC_DS1307 RTC;
    char FileName[] = "P00-0000.txt";
    char FolderName[] = "0000-00";
    File PicFile;

    void setup()
    {
    Serial.begin(115200);
    Wire.begin(); //Important for RTClib.h
    RTC.begin();
    if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    // RTC.adjust(DateTime(__DATE__, __TIME__));
    return;
    }
    Serial.print("Initializing SD card...");
    // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
    // Note that even if it's not used as the CS pin, the hardware SS pin
    // (10 on most Arduino boards, 53 on the Mega) must be left as an output
    // or the SD library functions will not work.
    pinMode(53, OUTPUT);
    if (!SD.begin(53)) {
    Serial.println("initialization failed!");
    return;
    }
    Serial.println("initialization done.");
    }

    void loop()
    {
    GetFolder();
    CreateFolderName();
    delay(3000);
    GetFileName();
    CreateFile();
    delay(3000);
    }

    void GetFolderName(){
    DateTime now = RTC.now();
    FolderName[0] = (now.year()/1000)%10 + '0'; //To get 1st digit from year()
    FolderName[1] = (now.year()/100)%10 + '0'; //To get 2nd digit from year()
    FolderName[2] = (now.year()/10)%10 + '0'; //To get 3rd digit from year()
    FolderName[3] = now.year()%10 + '0'; //To get 4th digit from year()
    FolderName[5] = now.month()/10 + '0'; //To get 1st digit from month()
    FolderName[6] = now.month()%10 + '0'; //To get 2nd digit from month()
    Serial.println(FolderName);
    }

    void CreateFolder(){
    if (SD.exists(FolderName)) {
    Serial.println("exists.");
    }
    else {
    Serial.println("doesn't exist.");
    Serial.println("Creating new file");
    Serial.println(FolderName);
    SD.mkdir(FolderName);
    }
    }

    void GetFileName(){
    DateTime now = RTC.now();
    FileName[1] = now.day()/10 + '0'; //To get 1st digit from day()
    FileName[2] = now.day()%10 + '0'; //To get 2nd digit from day()
    FileName[4] = now.hour()/10 + '0'; //To get 1st digit from day()
    FileName[5] = now.hour()%10 + '0'; //To get 2nd digit from day()
    FileName[6] = now.minute()/10 + '0'; //To get 1st digit from day()
    FileName[7] = now.minute()%10 + '0'; //To get 2nd digit from day()
    Serial.println(FileName);
    }

    void CreateFile(){
    if (SD.exists(/FolderName/FileName)) { //<<-Not sure about the syntax needed here
    Serial.println("Exists.");
    }
    else {
    Serial.println("doesn't exist.");
    Serial.println("Creating new file");
    Serial.println(FileName);
    PicFile = SD.open(/FolderName/FileName, FILE_WRITE); //<<-Not sure about the syntax needed here
    PicFile.close();
    }
    }


    خط 6 و خط 69 تا 74 رو میشه به فارسی توضیح بدید چه اتفاقی میفته؟
    دقیق متوجه نشدم
    خیلی ممنون
  4. #4
    2017/06/13
    210
    131

    پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    نقل قول نوشته اصلی توسط MrERFAN

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    خط 6 و خط 69 تا 74 رو میشه به فارسی توضیح بدید چه اتفاقی میفته؟
    دقیق متوجه نشدم
    خیلی ممنون
    خوب خط 6 که مشخصه چیه. یه رشته مشخص کرده و مقدار اولیه بهش داده تا کامپایلر با توجه به اون مقدار اولیه خودش سایز آرایه رو مشخص کنه.
    اما در مورد خطوط 69 تا 74. ببینید ظاهرا پروژه قابلیت استفاده از ساعت و تاریخ رو داره؛ برای مثال تابع ()now.day تاریخ روز رو به صورت عددی برمیگردونه. حال با توجه به کارکرد برنامه باید ارقام عدد برگشتی از هم تفکیک بشن. یعنی برای مثال اگر تابع مقدار 23 رو برگردوند، باید مقدار 2 و 3 از هم تفکیک بشن. خوب برای جدا کردن رقم دهگان اومده و مقدار بازگشتی رو بر 10 تقسیم کرده. برای مثال اگر ما 23 رو بر 10 تقسیم کنیم جواب میشه 2.3 اما از اونجایی که نمیتونیم اعداد اعشاری داشته باشیم، برنامه مقدار 2 رو برمیگردونه و ارقام بعد از اعشار رو از بین میبره. پس تا اینجا رقم دهگان رو که تو مثال من 2 بود رو بدست آوردیم. برای رقم یکان هم از عملگر باقی مانده تقسیم که علامتش به شکل % هستش استفاده کرده که این کار هم رقم یکان که توی مثال من 3 بود رو برمیگردونه.
    خوب تا اینجای کار ما ارقام رو به صورت تفکیک شده داریم. اما ما احتیاج داریم هر کدوم از ارقام رو به یک خونه از رشته متنی نسبت بدیم. همونطور که میدونید رشته ها از کد ASCII استفاده میکنن. بخاطر همین باید کد اسکی مربوط به ارقام رو بدست بیاریم. راه حل این مورد هم اینه که رقم بدست اومده رو با کد اسکی عدد صفر، یعنی مقدار '0' جمع کنیم تا کد اسکی عدد مورد نظر رو به ما بده. مثلا بنویسیم (2 + '0') تا کد اسکی 2 یا همون '2' رو به ما بده
  5. #5
    2018/02/22
    1,096
    689

    پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    چه مثال خوبی هست همه کار داخلش انجام شده
    خط ۶ و ۷ به متغیر نام فولدر و نام فایل مقدار اولیه میده تا از زباله بودن مولفه آرایه مطمئن باشه .

    دو تا تابع ساخته یکی برای ایجاد نام فولدر که میاد از rtc ۴ رقم سال رو در آرایه ذخیره می*کنه .
    تابع دوم نام فایل رو با عدد روز ، ساعت و دقیقه در آرایه نام فایل ذخیره می*کنه .
    که با این دو آرایه در مرحله بعد فولدر و فایل رو میسازه
  6. #6
    2018/07/24
    20
    4

    پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    واقعا ممنونم
  7. #7
    2018/07/24
    20
    4

    پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    داشتم فکر میکردم دیدم چرا بیام این حجم زیاد کد رو به کار ببرم یه راه ساده تر به ذهنم رسید.

    char FolderNameYear[5];
    String dateDS;

    اومدم یه رشته تعریف کردم و هر مقداری بخوام توش میریزم به راحتی با =+ میشه به رشته کارکتر اضافه کرد.
    بعد به جای خط 69 تا 74 میام یه خط کد مینویسم

    dateDS.toCharArray(FolderNameYear, 5);

    این تابع میاد رشته رو تو آرایه کارکتری قرار میده
    دوتا مقدار هم میگیره که مقدار اولمون نام آرایه کارکتری و مقدار دوم طول آرایه
    البته تو کار کردن باهاش باید عدد طول آرایه رو یکی بیشتر از مقدار واقعی حساب کنی تا درست کار کنه
    چراش رو نمیدونم ولی رشته من 4 کارکتری بود ولی برای درست کار کردن تابع آرایه 5 تایی استفاده کردم
  8. #8
    2018/07/14
    9
    1

    پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    نقل قول نوشته اصلی توسط MrERFAN

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    داشتم فکر میکردم دیدم چرا بیام این حجم زیاد کد رو به کار ببرم یه راه ساده تر به ذهنم رسید.

    char FolderNameYear[5];
    String dateDS;

    اومدم یه رشته تعریف کردم و هر مقداری بخوام توش میریزم به راحتی با =+ میشه به رشته کارکتر اضافه کرد.
    بعد به جای خط 69 تا 74 میام یه خط کد مینویسم

    dateDS.toCharArray(FolderNameYear, 5);

    این تابع میاد رشته رو تو آرایه کارکتری قرار میده
    دوتا مقدار هم میگیره که مقدار اولمون نام آرایه کارکتری و مقدار دوم طول آرایه
    البته تو کار کردن باهاش باید عدد طول آرایه رو یکی بیشتر از مقدار واقعی حساب کنی تا درست کار کنه
    چراش رو نمیدونم ولی رشته من 4 کارکتری بود ولی برای درست کار کردن تابع آرایه 5 تایی استفاده کردم
    سلام دوست عزیز
    این تابع مربوط به کدوم کتابخانه اردوینو میشه ؟؟
  9. #9
    2018/02/22
    1,096
    689

    پاسخ : مشکل در ایجاد دایرکتوری تو در تو با نام متغییر برای SD card

    نقل قول نوشته اصلی توسط Shimadzu

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام دوست عزیز
    این تابع مربوط به کدوم کتابخانه اردوینو میشه ؟؟
    درود . کتابخانه خود آردو

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

نمایش نتایج: از 1 به 9 از 9

موضوعات مشابه

  1. پاسخ: 0
    آخرين نوشته: 2018/08/08, 16:50
  2. مشکل با قسمت تغذیه برای sd card ؟
    توسط ajapyy در انجمن NXP
    پاسخ: 11
    آخرين نوشته: 2016/07/13, 09:05
  3. پیدا کردن دایرکتوری در برنامه FATFS؟
    توسط ajapyy در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 0
    آخرين نوشته: 2016/07/07, 21:12
  4. مشکل با sd card
    توسط mostafaserial در انجمن میکروکنترلرهای AVR
    پاسخ: 0
    آخرين نوشته: 2015/07/30, 09:39
  5. مشکل در ایجاد کد باینری برای بوت لودر
    توسط scout در انجمن پروسسورهای ARM
    پاسخ: 3
    آخرين نوشته: 2014/04/09, 10:14

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •