پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
ممنون از شما مهندس و دوست گرامی اگه بتونم تست کنم:!
با این خطا موجه شدم ممنون
||=== Build: Debug in tc15 (compiler: GNU GCC Compiler) ===|
C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc15\main.c||In function 'main':|
C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc15\main.c|8|error: invalid suffix "f" on integer constant|
C:\Users\FLIGHTSAZAN-AIRSHIP\Documents\tc15\main.c|18|error: expected declaration or statement at end of input|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
تو کد بلاکس و کامپایل C
اطلاعیه
Collapse
No announcement yet.
جداسازی اعداد از متن در C یا c++ برای میکرو AVR
Collapse
X
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
سلامنوشته اصلی توسط flightsazan نمایش پست هاممنون من فقط فعلا درگیر جدا سازی ان عدد اعشار هستم حتما اینطور عمل خواهم کرد
تا یه جاهایی نوشته های این تایک رو خوندم. فکر کنم این کد بتونه کمی کمکتون کنه.
char Buffer[20] = "SS 0.0g";
float Weight = 0;
int result;
result = sscanf(Buffer, "SS %fg", &Weight);
if (result == 1)
{
// Success
}
توی کد بالا فرض شده رشته دریافتی داخل Buffer ذخیره شده. توجه کنید که scanf و sscanf تعداد مواردی رو که تونستن استخراج کنن بر میگردونن. چون اینجا فقط خواستیم یک عدد اعشاری استخراج کنیم، انتظار داریم عدد 1 رو در صورت موفق بودن عملیات برگردونه. فقط توجه داشته باشید که با توجه به سنگین بودن اعمال اعشاری، معمولا کمپایلرهای AVR به شکل پیش فرض از اعداد اعشاری توی رشته پشتیبانی نمیکنن و باید تنظیماتشون رو عوض کنید که این کارو براتون بکنن.
تا جایی که میدونم scanf و sscanf هم به نوعی چیزی شبیه به regex دارن که میتونید باهاش حالت های مختلف رو پیش بینی کنید و در الگو قرار بدید که کد همیشه درست کار کنه ولی من تا حالا تجربه ای باهاش نداشتم که دقیق تر راهنمایی کنم. در هر صورت فکر کنم با مواردی که گفتم بتونید حالت های مختلف خروجی ترازو رو پیش بینی کنید و عدد رو استخراج کنید.
یکی از دوستان هم ماژولی معرفی کردن برای سون سگمنت که به نظر چیز خوبی میاد. این ماژول از MAX7219 استفاده کرده که یکم توی ایران گرونه به نظرم. اما من آی سی های ارزون تری مثل TM1637 و TM1638 رو پیشنهاد میدم. من از این دو تا استفاده کردم و راضی ام. قیمتی تقریبا نصف MAX7219 هم دارن.جدیدترین ویرایش توسط hossein.m98; 2021/07/01, 16:51.
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
درسته این ترازو گرمی هست قط تا 3000 گرم رو می تونه وزن کنه
دلیل: ادغام دو پست برای جلوگیری از اسپم
ss و sd مال وقتی که چیزی رو می زاری روش و یا بر می داری
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
خودت رو اصلا درگیر جداسازی رقم اعشار نکن. چون چیزی که من از تصویر میبینم طول دیتایی که برای هر بار خواندن میفرسته ثابته. اگه گفتم وزن بالاتر هم اندازه بگیر برای این بود که میخواستم مطمئن بشم که عدد رو همیشه بر اساس گرم میفرسته یا نه؟ چون اگه دقت کنی آخرش g داره. در چند تای پایینی هم S S به S D تبدیل شده که نمیدونم منظورش چی بوده. احتمالا اگه کاتالوگ ترازو رو ببینی ممکنه که توش توضیح داده باشه. به هر حال اگر همیشه بر حسب گرم باشه کافیه شما کل رشته رو بریزی توی یه متغیر و بر اساس محل شروع و پایان اعداد و حذف space های سمت چپ تبدیلش کنی به عدد و اصلا جداسازی رقم اعشار مهم نیست چون بنظر میاد همیشه دو رقم اعشار داره. اگر وضعیت اعداد رو توی وزنهای بالاتر هم در بیاری برنامه نویسی این با اردوینو کلا یک ساعت هم طول نمیکشه.
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
ممنون من فقط فعلا درگیر جدا سازی ان عدد اعشار هستم حتما اینطور عمل خواهم کرد
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
اگه 8 رقم کافی هست از این مدل ماژول استفاده کن خیلی کارت راحتتر خواهد بودنوشته اصلی توسط flightsazan نمایش پست هاممنون مهندس تصویری که گذاشتم شاید نشان بده در هر وزنی چطور کار می کنه 0 و بالاتر
بلی می خواهم از روش مالتی پلکس استفاده کنم
ممنون
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
ممنون مهندس تصویری که گذاشتم شاید نشان بده در هر وزنی چطور کار می کنه 0 و بالاتر
بلی می خواهم از روش مالتی پلکس استفاده کنم
ممنون
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
نوشته اصلی توسط flightsazan نمایش پست هاممنون مهندس الان ترازو دستم نیست ولی خروجی همانطور که نوشتم هست فقط صفر می نویسه
دلیل: ادغام دو پست برای جلوگیری از اسپم
مهندس با C++ میشه برای میکرو avr برنامه نوشت و کامپایل هم کرد
دلیل: ادغام دو پست برای جلوگیری از اسپم
کد ویژن فقط سی استاندارد رو قبول می کنه
از WinAVR استفاده کن برای برنامه نوشتن به زبان C و ++C بهتر و معتبرتره. ولی در هر حال ترازو که در دسترست بود حتما اون ازمایش رو انجام بده چون باید معلوم شه در وزنهای مختلف دیتا رو به چه صورتی میفرسته تا معلوم شه که چند تا سگمنت لازمه و دیتا رو چجوری باید روی سگمنتها مرتب کرد. اگه خواستی درگیر اسکن و رفرش کردن اعداد روی سگمنتها هم نشی ماژولهایی هست که با یه آی سی و از طریق دو خط دیتا و کلاک کنترل میشه و اعداد رو روی سگمنتها میفرسته و اون آی سی ماژول خودش وظیفه اسکن و رفرش اعداد روی سگمنتها رو انجام میده.
موفق باشید.
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
ممنون مهندس الان ترازو دستم نیست ولی خروجی همانطور که نوشتم هست فقط صفر می نویسه
دلیل: ادغام دو پست برای جلوگیری از اسپم
مهندس با C++ میشه برای میکرو avr برنامه نوشت و کامپایل هم کرد
دلیل: ادغام دو پست برای جلوگیری از اسپم
کد ویژن فقط سی استاندارد رو قبول می کنه
دلیل: ادغام دو پست برای جلوگیری از اسپم
فایل هایپر رو سیو کردم دیدم نوشته ansi واین شکل که بالا عرض کردم فایل تکرار میشه
دلیل: ادغام دو پست برای جلوگیری از اسپم
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
یه زحمت بکش وقتی چیزی روی ترازو نیست و وزن صفر هست دقیق در یک ترمینالی که میتونه دیتای ارسالی رو بصورت هگز بخونه مقدار را بخون و اینجا کپی کن.نوشته اصلی توسط flightsazan نمایش پست هاسلام مجدد ارتباط قطع شد بعلت قطع برق:
rs232 خروجی هم در هایپر ترمینال همانطور که قبلا عرض کردم دیده میشه
دلیل: ادغام دو پست برای جلوگیری از اسپم
فرمتش:
ss فاصله فاصله چند تا+ رقم اعشار +g
یکبار هم در حالتیکه وزن بیشتری در حدود همون 3 کیلو روی ترازو هست دیتای ارسالی رو بصورت هگز بخون و اینجا کپی کن تا صورت مسئله دقیق مشخص بشه و یه راه حل درست براش پیدا کنیم.
در ضمن اگر فقط هدفتون خوندن دیتای ورودی و فرستادنش روی سون سگمنت هست میشه از میکروهای ارزانتر مثل atmega8 استفاده کنی که مزیت اصلیش هم اینه که براحتی میتونی تو محیط کمپایلر آردوینو براش برنامه بنویسی.
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
سلام مجدد ارتباط قطع شد بعلت قطع برق:
rs232 (سریال)خروجی هم در هایپر ترمینال همانطور که قبلا عرض کردم دیده میشه
دلیل: ادغام دو پست برای جلوگیری از اسپم
فرمتش:
ss فاصله فاصله چند تا+ رقم اعشار +gجدیدترین ویرایش توسط flightsazan; 2021/07/01, 15:18.
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
اطلاعات وزنی که ترازوی استاندارد اندازه میگیرد تحت چه پروتکل ارتباطی و با چه دقتی و با چه فرمتی توسط شما قابل دریافت است؟
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
بزارید اینطور عرض کنم یه ترازوی استاندارد داریم ما ترازو نمی سازیم توسط پورت rs232 اطلاعات رو می خواهیم تو سونسگمنت نمایش بدیم تا خوب دیده بشه
ممنون
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
من دیگه گیج شدمنوشته اصلی توسط flightsazan نمایش پست هاممنون چی پیشنهاد می کنید
دلیل: ادغام دو پست برای جلوگیری از اسپم
مهندس فقط دقت فرمایید من فقط نمایش می دهم و اندازه گیری نمی کنم
یک دیدگاه بنویسید:
-
پاسخ : جداسازی اعداد از متن در C یا c++ برای میکرو AVR
ممنون چی پیشنهاد می کنید
دلیل: ادغام دو پست برای جلوگیری از اسپم
مهندس فقط دقت فرمایید من فقط نمایش می دهم و اندازه گیری نمی کنم
یک دیدگاه بنویسید:
یک دیدگاه بنویسید: