جداسازی اعداد از متن در C یا C++ برای میکرو AVR
سلام ضمن تشکر از راهنمایی دوستان عزیز مخصوصا مهندس مصافی
من ابتدا عرض کنم در سی مبتدی هستم بنابراین حتما لطف فرموده و راهنمایی لازمه را دریغ ننمایید ضمن تشکر مجدد
موضوع:
جدا سازی اعداد اعشاری از کلمات همراه و ارسالش به سونسگمنت می باشد من در همین اول راه ماندم
نحوه دریافت اطلاعات از پورت سریال است بدین صورت:
ss 123.34g
sd 234.456g
همانطور ملاحظه می فرمایید علاوه بر حروفات ، فاصله هم هست که مورد نیاز نیست فقط اعداد و ممیز اهمیت دارد
در جستجو در سایت برنامه نویس دوستان از حذف با دستور replace هم نوشتند که من نتونستم متاسفانه،
ممنون خواهم شد راهنمایی بفرمایید مثال هایی هم از محیط ویژوال دیدم که در سی و سی پلاس پلاس میکروها چندان کاربرد نداشتند و یا من تنونستم تفسیر نمایم
ممنون
حسن
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
نمونه مورد نظر که من نتونستم بعلت کمبود دانش در سی از ان بهره ببرم:
https://barnamenevis.org/showthread....B4%D8%AA%D9%87
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
نمونه فعالیت بنده:
string str = "86587F22015204DBC72B3E0AAD38E9D9";
str = str.Replace("1", "").Replace("2", "").Replace("3", "").Replace("4", "").Replace("5", "").Replace("6", "").Replace("7", "").Replace("8", "").Replace("9", "").Replace("0", "");
با خطای زیر مواجه شدم:
ادرس عکس:
https://s19.picofile.com/file/8437376034/erorr.jpg
ممنون
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
این کد و پیدا کردم ولی اعشار جدا نمی کنه
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char *string = "abhsgs234cid*(hshshs349*(20hsh 246 2.45shkd ss 123.45g", *ptr = string;
while (*ptr) {
if (isdigit(*ptr)) {
long val = strtol(ptr, &ptr, 10);
printf("%ld\n", val);
} else {
ptr++;
}
}
return 0;
}
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
کد دیگه که عالی کار می کنه ولی ممیز رو حذف می کنه:
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *str="abcdjslgkslga4747l52kenhkle7l4j63.6len6lejl" ;
int i=0;
while(str[i]!='\0')
{
if(str[i]>='0' && str[i]<='9')// check that if the value belong to
// this condition or not , if yes then print
printf("%c",str[i]);
i++;
}
return 0;
}
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
اتفاق جالب:
من تو کد بلاکس برنامه نوشتم حالا وقتی به کد ویژن می ارم کتابخانه ها نیستند مانند regex و iostream حالا باید چکار کرد برای رفع این مشکل
مممنون
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
راستی تو کد بالاکس میشه برای میکرو هم برنامه نوشت ولی خطای کامپایلر می گیره:
Project/Target: "avr1 - Debug":
The compiler's setup (GNU GCC Compiler for AVR) is invalid, so Code::Blocks cannot find/run the compiler.
Probably the toolchain path within the compiler options is not setup correctly?!
Do you have a compiler installed?
Goto "Settings->Compiler...->Global compiler settings->GNU GCC Compiler for AVR->Toolchain executables" and fix the compiler's setup.
Tried to run compiler executable 'C:\WinAVR/bin/avr-gcc.exe', but failed!
Tried to run compiler executable 'C:\WinAVR/avr-gcc.exe', but failed!
Skipping...
Nothing to be done (all items are up-to-date).
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
موضوعی که فهمیدم این کتابخانه ها مربوط به C++ هستند
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
نقل قول:
سلام ضمن تشکر از راهنمایی مدیران عزیز جناب مهندس مصافی
اگر ایشون کمک تون کرده که پس چرا مجددا سوال کردید؟
اگر برای کامپایلرهای سی میکروکنترلری برنامه را مینویسید که خوب طبیعی که باید از نسخه های کتابخانه های استاندارد زبان برای معماری RISC استفاده کنید.
معمولا برای انجام چنین الگوریتم هایی که به string manipulation ها معروف هستند، بهترین راه استفاده از کدهای اسمبلی هست چرا که به مراتب هم کد کمتری مینویسید وهم کد بهینه تری میتونید بنویسید که خوب اهمیت زیادی در استفاده از منابع میکرو داره
البته نه اینکه با سی نتونید ولی قطعا optimize نوشتن این الگوریتم در سی کمی میتونه مشکل باشه چرا که برای انجام چنین چیزی حتما به چندتا حلقه نیاز دارید ولی در صورتیکه از اسمبلی استفاده کنید میتونید حتی از سری دستورات جدید پردازشگرتون به شرطی که پشتیبانی کنه استفاده کنید که در اینصورت میبنید که با کمترین opcode میتونید این الگوریتم را بنویسید که در throughput و latency دستورات هم به شدت صرفه جویی کنید
نقل قول:
راستی تو کد بالاکس میشه برای میکرو هم برنامه نوشت ولی خطای کامپایلر می گیره:
بله البته که میتونید فقط قبلش حتما کامپایلر مناسب میکروکنترلر را باید نصب کنید.
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
دوست گرامی من از ایشون برای اینکه نمی تونستم پست بزارم کمک کردند تشکر کردم لطفا عجول نباشیم برای هر کاری دلیلی هست، فقط تشکر کردم .
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
خب ضمن تشکر از شما تو سی regex و iostream نیست
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
سی پلاس پلاس نوشتم و اعشار رو هم جدا کردم ولی وقتی می ارم تو کد ویژن یا avr رو انتخاب می کنم تو کدبلاکس ان کتابخانه ها دیگه نیستند و کدم کار نمی کنه
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
این پست و دیدم شاید برای ما تحریم باشیم باز کردنش مشکل دار هست ولی کار نکرد
https://stackoverflow.com/questions/...98839#68198839
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
نقل قول:
نوشته شده توسط
hassan p.b
دوست گرامی من از ایشون برای اینکه نمی تونستم پست بزارم کمک کردند تشکر کردم لطفا عجول نباشیم برای هر کاری دلیلی هست، فقط تشکر کردم .
من فقط سوال کردم، وقتی فرمودید که مشکلتون را حل کردند برام سوال شد، در ضمن عجول نبودم جواب سوالتون را دادم
ظاهرا شما عجول هستید
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR
مهندس من مشکل دارم شما ببخش به موضوع اصلی بپردازیم
نقل قول: جداسازی اعداد از متن در C یا C++ برای میکرو AVR