نوشته اصلی توسط flightsazan
نمایش پست ها
اطلاعیه
Collapse
No announcement yet.
جداسازی اعداد از متن در C یا c++ برای میکرو AVR
Collapse
X
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
استفاده از while های مختلف و یا حتی تو در تو از لحاظ برنامه نویسی ایرادی ندارد.
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
سلام مهندس جان تو کد ویژن وقتی %f هست هیچکاری اتفاق نمی افته حتی خطا هم نمی گیره.
دلیل: ادغام دو پست برای جلوگیری از اسپم
راستی سوالی دارم:
همزمان تو نرم افزار دوتا while باشه با اجرا شدن اولی دومی از کار می افته این راحلش چیه ایا باید از اینتراپت خارجی استفاده کرد
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
باسلام.
اون puts صرفا جهت تست بود و وجودش اصلا مهم نیست، شما صرفا از بخش sscanf استفاده کنید تا عدد اعشاری در متغیر دیتا ذخیره بشه.
بعد از اون میتونید هر بلایی سر دیتا بیارید.این هم یه نمونه تابع که میتونید به راحتی ازش استفاده کنید(البته فایل stdio.h حتما اینکلود بشه و تابع حتما بالای برنامه معرفی بشه)کد:[CPP] int extract(char raw_data){ float data; sscanf(raw_data,"%*s%f%*s",&data); return data; } [/CPP]
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
فرصت شد کدتتون رو تست کردم فقط puts رو تو ترمینالم نشون می ده و ssanf رو نشون نمی ده:
دلیل: ادغام دو پست برای جلوگیری از اسپمکد:[FONT=Yekan]puts(raw_data); [/FONT][FONT=Yekan] sscanf(raw_data,"%*s%f%*s",&data);[/FONT]
یعنی خروجی فقط اینه:
کد:"SS 120.23454g"
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
ممنون
سلام عادت کردم به این نرم افزار منهای ایراداتش واقعا محیط عالی داره
ممنون
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
باسلام.
خب برادر من تقصیر خودته دیگه!این کدویژن در حالتی که خریداری بشه هم کامپایلر استاندارد و جالبی نیست چه برسه نسخه های کرک.
من به شما پیشنهاد میکنم از avr-gcc استفاده کنید ،این کامپایلر بااستاندارد های c مطابقت کامل داره همچنین داکیومنت استاندارد خودشو داره که بروز هم هست:http://savannah.nongnu.org/projects/avr-libc/
به شخصه pdf داکیومنت رو پرینت کردم همیشه هم کنار دستمه ،انگلیسی سطح بالایی هم نداره میشه راحت خوندش.
برای درک کار با رجیستر ها هم بهتره آموزش های مهندس کی نژاد رو استفاده کنید با اختلاف کامل ترین و بهترین آموزش AVR هست.البته بهتره register summary چند تا از میکرو های پر کاربرد مثل مگا 32 ،مگا 8،مگا 16 ،تاینی 13 رو هم پرینت بگیرید تا بهشون راحت دسترسی داشته باشید.
درکل اگه برای کار ساده ای مثل جدا کردن عدد از رشته نشه از امکانات استاندارد c استفاده کرد حتما مشکلات بدتری هم بوجود خواهد اومد!
- تشکرها 1
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
لینک کتابخانه:
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
سلام خدمت دوستان کلی مطلب بالا گفته شد برام با کمال احترام قبلا پاسخ دادم خدمتتون بنابراین لیست می نمایم:
1- دوست گرامی گرین عزیز من قبلا تصویر لازم رو قرار دادم خروجی ترازو با پورت rs232 همون هست که گذاشتم در حالت صفر و ماگزیمم که 3 کیلو رو می تونه اندازه بگیره فرمتش همون هست که براتون قرار دادم.
2-من کدهای شما رو سعی کردم کاربردی اش کنم و شاید سازگار کنم با نیازم فکر نمی کردم برای شما حرفه ایها نامفهوم باشد ... بیشتر برای من نامفهوم هستند.
3-دوست گرامی aie دقیقا کد ویژن همانطور که در قبل تر تصویر تنظیماتش و گذاشتم در printf - قادر به استفاده از float هست ولی دستور scanf قادر نیست و بیشتر برای اعداد صحیح کاربردی است.
4- مهندس جان بنده با هواوهوس کار نمی کنم پیشنهاد شما مورد توجه بود و حتی اموزش از فرادرس تهیه شد ولی به بخش نظرات همون اموزش مراجعه نمایید دوستان دیگر هم مورد داشتند و بنده تنها نیستم حتی برای بررسی سعی کردم کتابخانه دیگه پیدا کنم و در کار با ان ناموفق بودم و هلپش و هم دیدم ولی خروجی دریافت نکردم
لینک قسمت نظرات رو مشاهد ه نمایید:
بنده هم نظر گذاشتم ولی انجا دیده نمیشه.کد:https://faradars.org/courses/fvee9808-avr-microcontroller-using-atmel-compiler
دلیل: ادغام دو پست برای جلوگیری از اسپم
لینک کتابخانه:
دلیل: ادغام دو پست برای جلوگیری از اسپمکد:https://s19.picofile.com/file/8437974176/lcd.rar.html
همانطور که ملاحظه می فرمایید من فقط این انجمن رو به تنهایی اکتفا نکردم و جاهای گوناگون و سایت های های خارجی هم مورد بررسی قرار می دهم
نمونه:
دلیل: ادغام دو پست برای جلوگیری از اسپمکد:https://stackoverflow.com/questions/21264995/c-split-a-floating-point-number-into-individual-digits
دلیل: ادغام دو پست برای جلوگیری از اسپمکد:https://www.codingame.com/playgrounds/14213/how-to-play-with-strings-in-c/string-split
دلیل: ادغام دو پست برای جلوگیری از اسپمکد:https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=net-5.0
و کلی جاهای گوناگون دیگهجدیدترین ویرایش توسط flightsazan; 2021/07/12, 03:15.
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
این پیشنهاد قبلا داده شده. منتهی کدویژن ظاهرا نمیتونه عدد اعشاری از رشته استخراج کنه.نوشته اصلی توسط A.I.E نمایش پست هاسلام.
چرا از sscanf استفاده نمیکنید؟
کد:#include <stdio.h> int main(){ float data; char raw_data[] = "SS 120.23454g"; puts(raw_data); sscanf(raw_data,"%*s%f%*s",&data); printf("\n%f\n",data); return 0; }
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
سلام.
چرا از sscanf استفاده نمیکنید؟
کد:#include <stdio.h> int main(){ float data; char raw_data[] = "SS 120.23454g"; puts(raw_data); sscanf(raw_data,"%*s%f%*s",&data); printf("\n%f\n",data); return 0; }
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
منظور از سنگین بودن اینه در این مرحله براشون سخته همچین کاری. همه ما مبتدی بودیم و همه ما دورانی چیزایی برامون سنگین بوده ولی حالا نیست. هرکاری احتیاج به پیش زمینه و اطلاعات داره و همیشه توی هر نقطه ای یکسری کارها برامون سنگینه. برای مثال من که اطلاعی از قوانین و معادلات حرکت موشک ندارم، ارسال فضاپیما برام واقعا سنگینه! مشکل دقیقا از جایی شروع میشه که همه میخوان زود به جواب برسن و نمیخوان روند درست رو طی کنن. ایشون هم باید اول اطلاعاتشون رو در مورد خود زبان C تا حد قابل قبولی بالا ببرن، بعد بخوان باهاش برای میکروکنترلر برنامه نویسی کنن.نوشته اصلی توسط evergreen نمایش پست هابا سلام خدمت شما دوست عزیز
ما همه اینجا جمع شدیم که دانشی که داریم را با هم به اشتراک بگذاریم تا به دانسته هامون افزوده بشه و در این وسط اگر کمکی هم از دستمون بر می آید به همدیگر برسانیم بنابراین به نظر من اگر دوستان مختلف درباره موضوعی نظر میدن نباید اصلا بعنوان پا تو کفش هم کردن تعبیر بشه.
من بر خلاف شما اعتقادی به اینکه یک کار برای یک نفر سنگینه ندارم. بنظرم هر کی میتونه حتی کارهای سنگین رو هم انجام بده ولی به شرطیکه از روش صحیح و مرحله به مرحله جلو بره. این دوست عزیزمون پشتکار و پیگیری خوبی برای کاری که میخواهد انجام بدهد دارد ولی متاسفانه روش کار رو بجای اینکه بصورت مرحله ایی و از اول شروع کند اصرار دارد که از آخر به اول حرکت نماید که این مساله باعث کند شدن کار و ایجاد خستگی و دردسرهای گاها بیمورد برایشان میشود.
موفق باشید.
کنجکاو بودنشون هم درسته، کنجکاو هستن. خودشون گفتن چند جلد کتاب در مورد زبان C کنار دستشونه و داخلش مطلبی راجع به کدهایی که من فرستادم پیدا نکردن. خوب این راهش نیست. کتابایی که کنار دستشونه احتمالا آموزشیه و مثل دیکشنری نیست که بریم توش در فلان مورد سرچ کنیم و کد در بیاریم.
- تشکرها 1
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
با سلام خدمت شما دوست عزیزنوشته اصلی توسط hossein.m98 نمایش پست هابا سلام و عرض ادب
بله در جریان کمک های شما بودم و ببخشید اگر پا توی کفش شما کردم.
چند باری هم بهشون گفتم این کار یکم برای شما سنگینه ولی اصرار دارن خودشون انجامش بدن. من حتی چند نمونه کد براشون فرستادم که توی حالت کلی و با اطلاعات کمی که از خروجی سنسورشون به ما دادن هم جواب بده ولی خوب ظاهرا فایده ای نداشته!
با این همه راهنمایی باید تا حالا توی هر محیط کدنویسی ای که بودن به طریقی، هر چند غیر استاندارد، جواب میگرفتن اما به دلیل دانش کمی که توی موارد پایه ای برنامه نویسی دارن، هنوز تلاششون جواب نمیده و هر بار فقط یک گزارش نا مفهوم از کدی که استفاده کردن و خطایی که بهش برخوردن ارائه میکنن.
منم مثل شما اعتقاد دارم به جای تلاش بیخودی بهتره کار رو بسپارن به یک کاردان و خودشون برن سراغ مطالعات اولیه این کار و وقتشون رو با سعی و خطا تلف نکنن که این کار سعی و خطا بر نمیداره.
ما همه اینجا جمع شدیم که دانشی که داریم را با هم به اشتراک بگذاریم تا به دانسته هامون افزوده بشه و در این وسط اگر کمکی هم از دستمون بر می آید به همدیگر برسانیم بنابراین به نظر من اگر دوستان مختلف درباره موضوعی نظر میدن نباید اصلا بعنوان پا تو کفش هم کردن تعبیر بشه.
من بر خلاف شما اعتقادی به اینکه یک کار برای یک نفر سنگینه ندارم. بنظرم هر کی میتونه حتی کارهای سنگین رو هم انجام بده ولی به شرطیکه از روش صحیح و مرحله به مرحله جلو بره. این دوست عزیزمون پشتکار و پیگیری خوبی برای کاری که میخواهد انجام بدهد دارد ولی متاسفانه روش کار رو بجای اینکه بصورت مرحله ایی و از اول شروع کند اصرار دارد که از آخر به اول حرکت نماید که این مساله باعث کند شدن کار و ایجاد خستگی و دردسرهای گاها بیمورد برایشان میشود.
موفق باشید.
- تشکرها 1
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
با سلام و عرض ادبنوشته اصلی توسط evergreen نمایش پست هابا سلام و احترام
همانگونه که خودتان نیز از ابتدا در جریان این تاپیک بوده اید انواع راهنماییها به این دوست عزیز شده . از ابتدا mikroC ,و بعد winAVR به ایشان معرفی شد. سپس توصیه کردم حداقل خروجی دستگاه رو بررسی دقیق نمایید شاید اصلا نیاز به این همه دردسر برای جداسازی نداشته باشید و براحتی بتونید عدد رو از یک رشته جدا کنید. شما هم که همه گونه کمک انجام دادید ولی بنظر میرسد ایشان با وجودی که پشتکار و کنجکاویشون برای یادگیری خوبه ولی کلا مسیر خود را میرود و توجهی به هیچکدام از راهنماییها ندارد!
موفق باشید
بله در جریان کمک های شما بودم و ببخشید اگر پا توی کفش شما کردم.
چند باری هم بهشون گفتم این کار یکم برای شما سنگینه ولی اصرار دارن خودشون انجامش بدن. من حتی چند نمونه کد براشون فرستادم که توی حالت کلی و با اطلاعات کمی که از خروجی سنسورشون به ما دادن هم جواب بده ولی خوب ظاهرا فایده ای نداشته!
با این همه راهنمایی باید تا حالا توی هر محیط کدنویسی ای که بودن به طریقی، هر چند غیر استاندارد، جواب میگرفتن اما به دلیل دانش کمی که توی موارد پایه ای برنامه نویسی دارن، هنوز تلاششون جواب نمیده و هر بار فقط یک گزارش نا مفهوم از کدی که استفاده کردن و خطایی که بهش برخوردن ارائه میکنن.
منم مثل شما اعتقاد دارم به جای تلاش بیخودی بهتره کار رو بسپارن به یک کاردان و خودشون برن سراغ مطالعات اولیه این کار و وقتشون رو با سعی و خطا تلف نکنن که این کار سعی و خطا بر نمیداره.
- تشکرها 1
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
با سلام و احترامنوشته اصلی توسط hossein.m98 نمایش پست هااین Atmel Studio دیگه مثل کدویژن بدبخت نیست که راحت همه مشکلات رو بندازیم گردنش و بگیم به خاطر اونه که هیچی جواب نمیده! من چند سال باهاش کار کردم و مشکلی نداشتم. این که شما توی راه اندازی کوچکترین چیز مثل LCD هم گیر کردی نشون میده خودت تجربه لازم رو نداری و باید مشکل رو ابتدا در خودت حل کنی دوست من. قبلا هم گفتم توی محیط خارج از کدویژن دیگه خبری از کتابخونه های آماده برای LCD و بقیه چیزای دم دستی نیست و باید خودت براش کتابخونه جور کنی. نمیدونم دقیقا قصدت چی بوده تابع rprintf رو از کجا آوردی ولی حتما کارت مشکلی داشته که جواب نگرفتی.
یک مورد رو در مورد کمپایلرهای AVR دوباره تکرار میکنم؛ توی Atmel Studio هم اگر اشتباه نکنم از عملیات اعشاری توی رشته ها به شکل پیش فرض پشتیبانی نمیشه و باید دستی فعالش کنی. در این مورد باید توی اینترنت سرچ کنی چون منم راهشو یادم نیست که بگم.
همانگونه که خودتان نیز از ابتدا در جریان این تاپیک بوده اید انواع راهنماییها به این دوست عزیز شده . از ابتدا mikroC ,و بعد winAVR به ایشان معرفی شد. سپس توصیه کردم حداقل خروجی دستگاه رو بررسی دقیق نمایید شاید اصلا نیاز به این همه دردسر برای جداسازی نداشته باشید و براحتی بتونید عدد رو از یک رشته جدا کنید. شما هم که همه گونه کمک انجام دادید ولی بنظر میرسد ایشان با وجودی که پشتکار و کنجکاویشون برای یادگیری خوبه ولی کلا مسیر خود را میرود و توجهی به هیچکدام از راهنماییها ندارد!
موفق باشید
نوشته اصلی توسط evergreen نمایش پست هاخودت رو اصلا درگیر جداسازی رقم اعشار نکن. چون چیزی که من از تصویر میبینم طول دیتایی که برای هر بار خواندن میفرسته ثابته. اگه گفتم وزن بالاتر هم اندازه بگیر برای این بود که میخواستم مطمئن بشم که عدد رو همیشه بر اساس گرم میفرسته یا نه؟ چون اگه دقت کنی آخرش g داره. در چند تای پایینی هم S S به S D تبدیل شده که نمیدونم منظورش چی بوده. احتمالا اگه کاتالوگ ترازو رو ببینی ممکنه که توش توضیح داده باشه. به هر حال اگر همیشه بر حسب گرم باشه کافیه شما کل رشته رو بریزی توی یه متغیر و بر اساس محل شروع و پایان اعداد و حذف space های سمت چپ تبدیلش کنی به عدد و اصلا جداسازی رقم اعشار مهم نیست چون بنظر میاد همیشه دو رقم اعشار داره. اگر وضعیت اعداد رو توی وزنهای بالاتر هم در بیاری برنامه نویسی این با اردوینو کلا یک ساعت هم طول نمیکشه.نوشته اصلی توسط evergreen نمایش پست هابا سلام مجدد
در نهایت اگه خودتون هم بخواهید یک برنامه مطمئن بنویسید به بررسی دقیق خروجی سریال دستگاه نیاز دارید. پس سعی کنید حتما اینکار رو در اولویت قرار بدید چون وقتی شما از ورودی مطمئن نیستید چجوری میخواهید براش سخت افزار تهیه کنید. دوستانه خدمتتون میگم، اینکه شما مرتب بنویسید
ss فاصله فاصله چند تا 23.34g
این روشی درست و اصولی برای وقتی که صرف میکنید و هدفی که دارید نیست و در نهایت نتیجه مطلوبی برای آن متصور نخواهد بود.
موفق باشید.جدیدترین ویرایش توسط evergreen; 2021/07/11, 11:04.
- تشکرها 1
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
این Atmel Studio دیگه مثل کدویژن بدبخت نیست که راحت همه مشکلات رو بندازیم گردنش و بگیم به خاطر اونه که هیچی جواب نمیده! من چند سال باهاش کار کردم و مشکلی نداشتم. این که شما توی راه اندازی کوچکترین چیز مثل LCD هم گیر کردی نشون میده خودت تجربه لازم رو نداری و باید مشکل رو ابتدا در خودت حل کنی دوست من. قبلا هم گفتم توی محیط خارج از کدویژن دیگه خبری از کتابخونه های آماده برای LCD و بقیه چیزای دم دستی نیست و باید خودت براش کتابخونه جور کنی. نمیدونم دقیقا قصدت چی بوده تابع rprintf رو از کجا آوردی ولی حتما کارت مشکلی داشته که جواب نگرفتی.نوشته اصلی توسط flightsazan نمایش پست هاatme studio هم مورد دار هست من نتونستم ازش در پروتئوس روی ال سی دی چیز درست نشان بدم همان دستورات البته مشابهش با کد ویژن خیلی راحت اطلاعات رو نمایش می ده ولی تو فایل کامپایلی اتمل استادیو مثلا برای یه کلمه فقط در وسط lcd - اف رو نشان داد
دستور rprintf(";test")
دلیل: ادغام دو پست برای جلوگیری از اسپم
ورژن تست شده 7 اتمل می باشد
ممنون
یک مورد رو در مورد کمپایلرهای AVR دوباره تکرار میکنم؛ توی Atmel Studio هم اگر اشتباه نکنم از عملیات اعشاری توی رشته ها به شکل پیش فرض پشتیبانی نمیشه و باید دستی فعالش کنی. در این مورد باید توی اینترنت سرچ کنی چون منم راهشو یادم نیست که بگم.
- تشکرها 1
یک دیدگاه بنویسید:
یک دیدگاه بنویسید: