NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3325 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 20 از 27

موضوع: تبدیل unsigned char به ارایه

  1. #1
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض تبدیل unsigned char به ارایه

    باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
    ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
    و الا پاک کردن این پیام بیشتر از من وقت میگیره
    ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:36

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    کاربر فعال
    تاریخ عضویت
    Jul 2007
    نوشته ها
    320
    تشکر
    48
    تشکر شده 39 بار در 33 پست

    پیش فرض

    چه اروری میگیره
    شاید بخاطر اینه که تو آرایه 16 تا یی 2 تا مقدار دهی کردی ، خاطرم نیست که c به این موضوع حساسه و ارور میده یا وارنینگ

  4. تشکرها از این نوشته :


  5. #3
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
    ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
    و الا پاک کردن این پیام بیشتر از من وقت میگیره
    ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:36

  6. #4
    کاربر فعال
    تاریخ عضویت
    Jul 2007
    نوشته ها
    320
    تشکر
    48
    تشکر شده 39 بار در 33 پست

    پیش فرض

    من نمی دونم چی می خوای بکنی و الگوریتمت چیه
    کلی هم توضیح دادی که بی سر و ته هستش
    ولی من ندیدم تا حالا کسی اینجوری کار کنه
    کد:
    Unsigned char data_transfer[16]={ WRITE,REG};
    اگه می خوای رشته قرار بدی اینحوری :
    کد:
    Unsigned char data_transfer[2][16]={"WRITE","REG"};
    من هم دیگه بیشتر نمی تونم کمک کنم
    می خوای سورست رو بزار

  7. #5
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    سلام
    من تست کردم مشکلی نداشت. فقط یه نکته دیگه:
    فکر کنم وقتی یه ماکرو تعریف میکنی دیگه نمیتونی اون رو توی تعریف تابع به عنوان آرگومان استفاده کنی.
    من این کار رو که کردم ارور داد.

  8. تشکرها از این نوشته :


  9. #6
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sadeghbakhshi نمایش پست ها
    کد:
    #define data 0xff
    الان مشکل من اینکه مقادیر WRITE و REG باید به صورت یک ارایه در بیاد و ارسال بشه
    ولی وقتی توی کیل مینویسم
    کد:
    Unsigned char data_transfer[16]={ WRITE,REG};
    از من ارور میگیره ولی توی coide این دستور جواب میده
    حالا به نظرتون من باید چکار کنم که مقدارم به یک ارایه تبدیل بشه
    توابع کتابخانه های استاندارد هم چک کردم ولی اکثرشون بر عکس این عمل رو انجام میدن
    سلام
    شما دارین توی یه خونه دوتا فیل جا میدین
    تعریف شما داره میگه توی خونه 16 آرایه دیتا، دو تا مقدار بریز...(شما می خواستین بگین یه آرایه با 16 عضو تعریف شود)
    بعید می دونم coide هم همجین خطایی رو رد کنه...
    اینو امتحان کنید:
    کد:
    Unsigned char data_transfer[]={ WRITE,REG};
    الان شما یه آرایه {تقریبا}3 عضوی دارین : دو تا که معلومه و سومی هم آرایه تهی
    راستی این آزایه یه جورایی دو بعدی ها

  10. تشکرها از این نوشته :


  11. #7
    کاربر فعال rozeh آواتار ها
    تاریخ عضویت
    Mar 2013
    نوشته ها
    198
    تشکر
    27
    تشکر شده 176 بار در 104 پست

    پیش فرض

    از خصلت(صفت) Static برای تعریف آرایه data_transfer استفاده کنید(پشت تعریف ارایه قرار بدید) و کامپایل کنید ببینید چی میشه.
    آرایه کجا تعریف شده؟ توی یه تابع؟ اگه آره پس احتمال زیاد اتوماتیک هستش، پس آرایه رو به صورت گلوبال(global) تعریف کنید. یعنی بیرون از تابع Main و ببینید چی میشه.


    نقل قول نوشته اصلی توسط gbg نمایش پست ها
    من نمی دونم چی می خوای بکنی و الگوریتمت چیه
    کلی هم توضیح دادی که بی سر و ته هستش
    ولی من ندیدم تا حالا کسی اینجوری کار کنه
    کد:
    Unsigned char data_transfer[16]={ WRITE,REG};
    اگه می خوای رشته قرار بدی اینحوری :
    کد:
    Unsigned char data_transfer[2][16]={"WRITE","REG"};
    من هم دیگه بیشتر نمی تونم کمک کنم
    می خوای سورست رو بزار
    درسته که خوب و درست سوالش رو نپرسیده ولی جواب شما خییییللیییی عجیبه واسه من.

    نقل قول نوشته اصلی توسط dostajn نمایش پست ها
    سلام
    شما دارین توی یه خونه دوتا فیل جا میدین
    تعریف شما داره میگه توی خونه 16 آرایه دیتا، دو تا مقدار بریز...(شما می خواستین بگین یه آرایه با 16 عضو تعریف شود)
    بعید می دونم coide هم همجین خطایی رو رد کنه...
    اینو امتحان کنید:
    کد:
    Unsigned char data_transfer[]={ WRITE,REG};
    الان شما یه آرایه {تقریبا}3 عضوی دارین : دو تا که معلومه و سومی هم آرایه تهی
    راستی این آزایه یه جورایی دو بعدی ها
    نه،
    اون آریه 16 عنصری هستش و دو خونه اولش به ترتیب WRITE و REG هستش و بقیه 0

    اون چیزی هم که شما نوشتین یه آرایه هستش که دو عضو داره. مثل قبل ولی دیگه 16 عضوی نیست. همون طور که گفتم 2 عضو داره. از عضو خالی هم خبری نیست. من فکر میکنم شما مبحث استرینگ ها و کاراکترها رو با ارایه ها قاطی کردید. عیبی نداره. معمولا این مسائل پیش میاد. یه کتاب خوب C پیدا کن و دنبال این چیزایی که گفتم بگرد تا پیداشون کنی و دقیقا بفهمی که جریان چیه.
    دو بعدی؟

    نقل قول نوشته اصلی توسط sadeghbakhshi نمایش پست ها
    ...
    میگه یک مقدار ثابت دارد
    ...
    چیزی که من میبینم میگه که "باید عبارتتون یه مقدار ثابت داشته باشه" نه "مقدار ثابت دارد"

    - - - Updated - - -

    نقل قول نوشته اصلی توسط gbg نمایش پست ها
    چه اروری میگیره
    شاید بخاطر اینه که تو آرایه 16 تا یی 2 تا مقدار دهی کردی ، خاطرم نیست که c به این موضوع حساسه و ارور میده یا وارنینگ
    نه این گفته شما کاملا خرابه.

  12. تشکرها از این نوشته :


  13. #8
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    نقل قول نوشته اصلی توسط dostajn نمایش پست ها
    سلام
    شما دارین توی یه خونه دوتا فیل جا میدین
    تعریف شما داره میگه توی خونه 16 آرایه دیتا، دو تا مقدار بریز...(شما می خواستین بگین یه آرایه با 16 عضو تعریف شود)
    فکر کنم اشتباه شده:
    کد:
    unsigned char data[16]={write,reg};
    این تعریف یه آرایه با 16 عضوه که دوتای اولش مقدار دهی شده و بقیش رو کامپایلر صفر میذاره.
    مقدار دهی یه خونه از آرایه توی برنامه این شکلی میشه.
    کد:
    data[16]=write;
    کد:
    Unsigned char data_transfer[]={ WRITE,REG};
    الان شما یه آرایه {تقریبا}3 عضوی دارین : دو تا که معلومه و سومی هم آرایه تهی
    راستی این آزایه یه جورایی دو بعدی ها
    در ضمن اگه شما آرایه رو با string مقدار دهی کنی، کامپایلر آخرش رو یه بایت ('0\') اضافه میکنه ولی اگه توی {} تک تک مقدار بدی این کار رو نمیکنه. پس آرایه ای که شما تعریف کردی میشه 2 عضوی.
    لطفا اگه جایی اشتباه کردم اصلاحش کنید.

  14. #9
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    سلام
    شرمنده از دوستان
    روح الامین جان درست گفتن مبحث رشته و عدد رو تو سی و پایتون قاطی کردم...
    مشکل ایشون اینه که یه بار اومده write , reg رو به صورت دیفاین تعریف کرده و دوباره اون اونها رو به صورت متغیر تعریف کرده:
    void Write(unsigned char ADD,unsigned char REG , unsigned char WRITE,LPC_I2C_TypeDef *I2CX)
    شما اگر از دیفاین استفده کرده باشین دیگه نبایستی همون نام رو بصورت متغییر تعریف کنید

  15. تشکرها از این نوشته :


  16. #10
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    سلام
    اول از همه اون مقدار داخل کروشه و این ها رو ولش کنید که برای من اصلا اهمیتی نداره
    چون اون عدد 16 رو همین طوری گذاشتم
    که ارور رو برطرف کنه چون وقتی خالی میزارم جوابب نمیده
    در مورد دو بعدی بودن و قرار دادن دابل کوتیشن هم به نظر من اشتباه هست
    چون من نمیخواهم اسم رو توی ارایه بزارم میخواهم توی یک ارایه یک بعدی دوتا عدد به صورت دیفاین رو قرار بدم
    و من در حال حاظر دارم یک کتابخانه مینویستم و مجبورم که رجیسترهای ماژولم را به صورت دیفاین تعریف کنم که میزان رم اشغالی به حداقل برسه
    و کاربر هم به راحتی توانایی تغییر هدر رو داشته باشه
    از طرفی به نظر من باید این کار جواب بده و به عنوان ارگومان داخلی تابع بشه یک دیفایین رو قرار داد چون داخل خیلی از کتابخانه ها همچین چیزی وجود داره
    و تنها اروری که از من میگیره برای همین ورودی دیتا هست و به بقیه ی ارگومان ها که انها هم داخل هدر به صورت عمومی دیفاین تعریف شده رو درست در نظر میگیره
    حالا من چطوری باید یک دیفاین رو به عنوان دیتا به ورودی دستور cmsis وارد کنم؟

  17. #11
    کاربر فعال
    تاریخ عضویت
    Jul 2007
    نوشته ها
    320
    تشکر
    48
    تشکر شده 39 بار در 33 پست

    پیش فرض

    خب اگه اون دوتا رو دیفاین کردی پس این جیه؟
    کد:
    unsigned char REG , unsigned char WRITE
    که تعریف کردی؟
    من فقط دیدم
    کد:
    #define data 0xff
    رو دیفاین کردی
    دو بعدی و " هم گفتم شاید می خوای رشته تعریف کنی
    اگه جای دیگه WRITE و REG رو دیفاین کردی
    این تعریف تابع
    کد:
    void Write(unsigned char ADD,unsigned char REG , unsigned char WRITE,LPC_I2C_TypeDef *I2CX)
    اشتباه هستش

  18. #12
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
    ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
    و الا پاک کردن این پیام بیشتر از من وقت میگیره
    ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:35

  19. #13
    کاربر فعال rozeh آواتار ها
    تاریخ عضویت
    Mar 2013
    نوشته ها
    198
    تشکر
    27
    تشکر شده 176 بار در 104 پست

    پیش فرض

    متاسفانه چون گفته های sadeghbakhshi گنگ هستش و هربار هم یه چیز به نظر اشتباه دیگه رو می بیبینم و این تاپیک داره بیخود پازل میشه واسه همه؛ من از تاپیک میکشم کنار(مثل خیلی از تاپیک های دیگه). مگر اینکه یا پروژه شون رو قرار بدن و دقیق توضیح بدن و یا بدون پروژه شون درست بگن مشکلشون چیه.

    نقل قول نوشته اصلی توسط dostajn نمایش پست ها
    ...
    روح الامین جان درست گفتن مبحث رشته و عدد رو تو سی و پایتون قاطی کردم...
    ...
    اسم منو از کجا می دونی؟
    لو رفتم؟
    حتما بخاطر نام کاربریم هستش.

  20. تشکرها از این نوشته :


  21. #14
    کاربر علاقه مند
    تاریخ عضویت
    May 2014
    نوشته ها
    46
    تشکر
    40
    تشکر شده 6 بار در 6 پست

    پیش فرض

    بايد define رو اين مدلي تعريف كنيد و به عنوان ورودي تابع ارسال كنيد. فك كنم درست بشه اينجوري.امتحان كن
    typedef enum
    {
    WRITE,
    REG,

    }ID_Type;


  22. تشکرها از این نوشته :


  23. #15
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    اگه شما میخوای دو تا مقداری رو که define کردی به تابع پاس کنی میتونی این طوری عمل کنی.
    کد:
     #define WRITE  0xFF
    #define REG   0xFF
    void Write(unsigned char ADD, unsigned char a, unsigned char b)
    توی فراخوانی تابع هم بنویسی
    کد:
    Write(add,WRITE,REG)
    ولی نمیتونی مقادیر define شده رو به عنوان آرگومان توی تعریف تابع استفاده کنی.

  24. تشکرها از این نوشته :


  25. #16
    کاربر فعال
    تاریخ عضویت
    Dec 2007
    نوشته ها
    113
    تشکر
    92
    تشکر شده 78 بار در 59 پست

    پیش فرض

    نقل قول نوشته اصلی توسط rozeh نمایش پست ها
    متاسفانه چون گفته های sadeghbakhshi گنگ هستش و هربار هم یه چیز به نظر اشتباه دیگه رو می بیبینم و این تاپیک داره بیخود پازل میشه واسه همه؛ من از تاپیک میکشم کنار(مثل خیلی از تاپیک های دیگه). مگر اینکه یا پروژه شون رو قرار بدن و دقیق توضیح بدن و یا بدون پروژه شون درست بگن مشکلشون چیه.



    اسم منو از کجا می دونی؟
    لو رفتم؟
    حتما بخاطر نام کاربریم هستش.
    سلام
    لحن صحبت
    رنگ نوشته
    آواتار
    رشته تحصیلی
    و...
    رو کنم

    البته از اینکه اسپم دادم معذرت می خواهم

  26. #17
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
    ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
    و الا پاک کردن این پیام بیشتر از من وقت میگیره
    ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:35

  27. #18
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
    ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
    و الا پاک کردن این پیام بیشتر از من وقت میگیره
    ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:35

  28. #19
    کاربر فعال rozeh آواتار ها
    تاریخ عضویت
    Mar 2013
    نوشته ها
    198
    تشکر
    27
    تشکر شده 176 بار در 104 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sadeghbakhshi نمایش پست ها
    سلام
    خب روح الامین عزیز ناراحت نشو من پروژه ای ننوشتم که بخواهم این جا قرار بدم
    کلا یدونه ماژول ژایرو هست که چون رجیسترهای زیادی داره من دیفاین تعریف کردم
    بعد اگر بخواهم مقدار زاویه رو بدست بیارم مجبورم یکسری دستورات رو مدام تکرار کنم و مقادیر اون رجیسترها را هم ارسال کنم
    ولی مشکل اصلی من اینکه چون ورودی دیتا در دستورات CMSIS باید به صورت ارایه ای باشه من به مشکل برخوده ام
    همین
    این هم یه نمونه کد
    کد:
    #define    RA_WHO_AM_I        0x75
    #define   SLAVE_ADDRESS   0xD0
    
    
    unsigned char read_i2c(unsigned char BusAddres , unsigned char Reg , unsigned char Ack ){
    Unsigned char data_transfer[]={Reg};
    Unsigned char  data_reciver[7];
    I2C_M_SETUP_Type i2c_data;
    i2c_data.tx_data=data_transfer;
    i2c_data.tx_length=sizeof(data_transfer);
    i2c_data.rx_data=data_reciver;
    i2c_data.rx_length=7;
    i2c_data .sl_addr7bit= BusAddres >>1;
    I2C_MasterTransferData(LPC_I2C1, &i2c_data , I2C_TRANSFER_POLLING);
    }
    
    
    unsigned char Test_I2C()
    {
        unsigned char Data = 0x00;
        Data=read_i2c(MPU6050_ADDRESS, RA_WHO_AM_I, 0);
        if(Data == 0x68)
            return 1;       // Means Comunication With MPU6050 is Corect
        else
            return 0;       // Means ERROR, Stopping
    }
    اگر من کد رو قرار نمیدم بخاطر همین هست که هیچ چیزی توی این دوتا هدر من نیست
    والا وقتی کارم تموم شد و نتیجه گرفتم پروژه رو توی انجمن میزارم
    ناراحت نیستم. :D
    اون کاری رو که گفتم انجام دادید؟ منظورم این حرف بود:


    از خصلت(صفت) Static برای تعریف آرایه data_transfer استفاده کنید(پشت تعریف ارایه قرار بدید) و کامپایل کنید ببینید چی میشه.
    آرایه کجا تعریف شده؟ توی یه تابع؟ اگه آره پس احتمال زیاد اتوماتیک هستش، پس آرایه رو به صورت گلوبال(global) تعریف کنید. یعنی بیرون از تابع Main و ببینید چی میشه.
    الان دقیقا مشکل شما چیه؟ ارور و اخطارها و همه چیز رو بیان کنید. هنوز اینه:

    کد:
    error:  #28: expression must have a constant value
    نتایج کار رو بگید.
    هنوز چیزهایی که گفتین کمه. توی کدنویسی C حتی بالا و پایین قرار دادن یا چپ و راست و فرم کدنویسیتون و... هم موثر هستش. الان این چیزی که گذاشتین فایل .h شما هستش؟ شما فقط همین .h رو نوشتین؟
    کل کدهای فایل main رو بذارید(در صورت لزوم همه شون) و بگید کدوم خط چه ارورهایی میده.

  29. #20
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    به هر حال هرچی باشه ثمره ی چندسال فعالیت تو دنیای مجازی من هست
    ولی نمیتونم اجازه بدم افرادی که برای یادگیری وارد یه همچین فضایی می شوند
    درگیر مسائل بازاریابی بشن دچار انتخاب بین بد و بدتر
    اینکه جنس چینی رو از کی بخرن
    مثل دوران کنکور که الکی جو میدن بیایید کلاس اموزشی های ما شرکت کنید
    اخرش هم با هزار زحمت میری دانشگاه کلی هزینه میکنی هیچی به هیچی
    ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:44

صفحه 1 از 2 12 آخرینآخرین

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

  1. پاسخ: 1
    آخرين نوشته: 26-07-2014, 01:28
  2. نرم افزار lcd char?
    توسط ali norbakhsh در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 19-04-2010, 00:19

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

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