باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
و الا پاک کردن این پیام بیشتر از من وقت میگیره
باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
و الا پاک کردن این پیام بیشتر از من وقت میگیره
ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:36
چه اروری میگیره
شاید بخاطر اینه که تو آرایه 16 تا یی 2 تا مقدار دهی کردی ، خاطرم نیست که c به این موضوع حساسه و ارور میده یا وارنینگ
باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
و الا پاک کردن این پیام بیشتر از من وقت میگیره
ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:36
من نمی دونم چی می خوای بکنی و الگوریتمت چیه
کلی هم توضیح دادی که بی سر و ته هستش
ولی من ندیدم تا حالا کسی اینجوری کار کنه
اگه می خوای رشته قرار بدی اینحوری :کد:Unsigned char data_transfer[16]={ WRITE,REG};
من هم دیگه بیشتر نمی تونم کمک کنمکد:Unsigned char data_transfer[2][16]={"WRITE","REG"};
می خوای سورست رو بزار
سلام
من تست کردم مشکلی نداشت. فقط یه نکته دیگه:
فکر کنم وقتی یه ماکرو تعریف میکنی دیگه نمیتونی اون رو توی تعریف تابع به عنوان آرگومان استفاده کنی.
من این کار رو که کردم ارور داد.
سلام
شما دارین توی یه خونه دوتا فیل جا میدین
تعریف شما داره میگه توی خونه 16 آرایه دیتا، دو تا مقدار بریز...(شما می خواستین بگین یه آرایه با 16 عضو تعریف شود)
بعید می دونم coide هم همجین خطایی رو رد کنه...
اینو امتحان کنید:
الان شما یه آرایه {تقریبا}3 عضوی دارین : دو تا که معلومه و سومی هم آرایه تهیکد:Unsigned char data_transfer[]={ WRITE,REG};
راستی این آزایه یه جورایی دو بعدی ها
از خصلت(صفت) Static برای تعریف آرایه data_transfer استفاده کنید(پشت تعریف ارایه قرار بدید) و کامپایل کنید ببینید چی میشه.
آرایه کجا تعریف شده؟ توی یه تابع؟ اگه آره پس احتمال زیاد اتوماتیک هستش، پس آرایه رو به صورت گلوبال(global) تعریف کنید. یعنی بیرون از تابع Main و ببینید چی میشه.
درسته که خوب و درست سوالش رو نپرسیده ولی جواب شما خییییللیییی عجیبه واسه من.
نه،
اون آریه 16 عنصری هستش و دو خونه اولش به ترتیب WRITE و REG هستش و بقیه 0
اون چیزی هم که شما نوشتین یه آرایه هستش که دو عضو داره. مثل قبل ولی دیگه 16 عضوی نیست. همون طور که گفتم 2 عضو داره. از عضو خالی هم خبری نیست. من فکر میکنم شما مبحث استرینگ ها و کاراکترها رو با ارایه ها قاطی کردید. عیبی نداره. معمولا این مسائل پیش میاد. یه کتاب خوب C پیدا کن و دنبال این چیزایی که گفتم بگرد تا پیداشون کنی و دقیقا بفهمی که جریان چیه. دو بعدی؟
چیزی که من میبینم میگه که "باید عبارتتون یه مقدار ثابت داشته باشه" نه "مقدار ثابت دارد"
- - - Updated - - -
نه این گفته شما کاملا خرابه.
فکر کنم اشتباه شده:
این تعریف یه آرایه با 16 عضوه که دوتای اولش مقدار دهی شده و بقیش رو کامپایلر صفر میذاره.کد:unsigned char data[16]={write,reg};
مقدار دهی یه خونه از آرایه توی برنامه این شکلی میشه.
کد:data[16]=write;در ضمن اگه شما آرایه رو با string مقدار دهی کنی، کامپایلر آخرش رو یه بایت ('0\') اضافه میکنه ولی اگه توی {} تک تک مقدار بدی این کار رو نمیکنه. پس آرایه ای که شما تعریف کردی میشه 2 عضوی.الان شما یه آرایه {تقریبا}3 عضوی دارین : دو تا که معلومه و سومی هم آرایه تهیکد:Unsigned char data_transfer[]={ WRITE,REG};
راستی این آزایه یه جورایی دو بعدی ها
لطفا اگه جایی اشتباه کردم اصلاحش کنید.
سلام
شرمنده از دوستان
روح الامین جان درست گفتن مبحث رشته و عدد رو تو سی و پایتون قاطی کردم...
مشکل ایشون اینه که یه بار اومده write , reg رو به صورت دیفاین تعریف کرده و دوباره اون اونها رو به صورت متغیر تعریف کرده:
void Write(unsigned char ADD,unsigned char REG , unsigned char WRITE,LPC_I2C_TypeDef *I2CX)
شما اگر از دیفاین استفده کرده باشین دیگه نبایستی همون نام رو بصورت متغییر تعریف کنید
سلام
اول از همه اون مقدار داخل کروشه و این ها رو ولش کنید که برای من اصلا اهمیتی نداره
چون اون عدد 16 رو همین طوری گذاشتم
که ارور رو برطرف کنه چون وقتی خالی میزارم جوابب نمیده
در مورد دو بعدی بودن و قرار دادن دابل کوتیشن هم به نظر من اشتباه هست
چون من نمیخواهم اسم رو توی ارایه بزارم میخواهم توی یک ارایه یک بعدی دوتا عدد به صورت دیفاین رو قرار بدم
و من در حال حاظر دارم یک کتابخانه مینویستم و مجبورم که رجیسترهای ماژولم را به صورت دیفاین تعریف کنم که میزان رم اشغالی به حداقل برسه
و کاربر هم به راحتی توانایی تغییر هدر رو داشته باشه
از طرفی به نظر من باید این کار جواب بده و به عنوان ارگومان داخلی تابع بشه یک دیفایین رو قرار داد چون داخل خیلی از کتابخانه ها همچین چیزی وجود داره
و تنها اروری که از من میگیره برای همین ورودی دیتا هست و به بقیه ی ارگومان ها که انها هم داخل هدر به صورت عمومی دیفاین تعریف شده رو درست در نظر میگیره
حالا من چطوری باید یک دیفاین رو به عنوان دیتا به ورودی دستور cmsis وارد کنم؟
خب اگه اون دوتا رو دیفاین کردی پس این جیه؟
که تعریف کردی؟کد: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)
باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
و الا پاک کردن این پیام بیشتر از من وقت میگیره
ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:35
متاسفانه چون گفته های sadeghbakhshi گنگ هستش و هربار هم یه چیز به نظر اشتباه دیگه رو می بیبینم و این تاپیک داره بیخود پازل میشه واسه همه؛ من از تاپیک میکشم کنار(مثل خیلی از تاپیک های دیگه). مگر اینکه یا پروژه شون رو قرار بدن و دقیق توضیح بدن و یا بدون پروژه شون درست بگن مشکلشون چیه.
اسم منو از کجا می دونی؟
لو رفتم؟
حتما بخاطر نام کاربریم هستش.
بايد define رو اين مدلي تعريف كنيد و به عنوان ورودي تابع ارسال كنيد. فك كنم درست بشه اينجوري.امتحان كن
typedef enum
{
WRITE,
REG,
}ID_Type;
اگه شما میخوای دو تا مقداری رو که define کردی به تابع پاس کنی میتونی این طوری عمل کنی.توی فراخوانی تابع هم بنویسیکد:#define WRITE 0xFF #define REG 0xFF void Write(unsigned char ADD, unsigned char a, unsigned char b)
ولی نمیتونی مقادیر define شده رو به عنوان آرگومان توی تعریف تابع استفاده کنی.کد:Write(add,WRITE,REG)
باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
و الا پاک کردن این پیام بیشتر از من وقت میگیره
ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:35
باور کنید خودم هم علاقه ای به پاک کردن پستام ندارم
ولی به اندازه ی خودم باعث بالا اومدن تاپیک تو جستجو ها شدم
و الا پاک کردن این پیام بیشتر از من وقت میگیره
ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:35
ناراحت نیستم. :D
اون کاری رو که گفتم انجام دادید؟ منظورم این حرف بود:
الان دقیقا مشکل شما چیه؟ ارور و اخطارها و همه چیز رو بیان کنید. هنوز اینه:از خصلت(صفت) Static برای تعریف آرایه data_transfer استفاده کنید(پشت تعریف ارایه قرار بدید) و کامپایل کنید ببینید چی میشه.
آرایه کجا تعریف شده؟ توی یه تابع؟ اگه آره پس احتمال زیاد اتوماتیک هستش، پس آرایه رو به صورت گلوبال(global) تعریف کنید. یعنی بیرون از تابع Main و ببینید چی میشه.
نتایج کار رو بگید.کد:error: #28: expression must have a constant value
هنوز چیزهایی که گفتین کمه. توی کدنویسی C حتی بالا و پایین قرار دادن یا چپ و راست و فرم کدنویسیتون و... هم موثر هستش. الان این چیزی که گذاشتین فایل .h شما هستش؟ شما فقط همین .h رو نوشتین؟
کل کدهای فایل main رو بذارید(در صورت لزوم همه شون) و بگید کدوم خط چه ارورهایی میده.
به هر حال هرچی باشه ثمره ی چندسال فعالیت تو دنیای مجازی من هست
ولی نمیتونم اجازه بدم افرادی که برای یادگیری وارد یه همچین فضایی می شوند
درگیر مسائل بازاریابی بشن دچار انتخاب بین بد و بدتر
اینکه جنس چینی رو از کی بخرن
مثل دوران کنکور که الکی جو میدن بیایید کلاس اموزشی های ما شرکت کنید
اخرش هم با هزار زحمت میری دانشگاه کلی هزینه میکنی هیچی به هیچی
ویرایش توسط sadeghbakhshi : 05-09-2015 در ساعت 01:44