ورود

View Full Version : بهترین محیط برنامه نویسی ++C در لینوکس



ali_72
چهارشنبه 29 مرداد 1393, 08:09 صبح
سلام

برنامه win app می نویسم که ارتباط با سخت افزار و گرفتن اطلاعات از دستگاه است
فعلا با #C تحت Visual studio کار میکنم
اما ویندوز را محیط مناسبی برای برنامه کار با سخت افزار ندیدم
با تحقیقی که کردم لینوکس در این مورد قدرتمندتر است چون سرعت به مراتب بیستری در فراخوانی اطلاعات دارد
حالا من باید زبان برنامه نویسی انتخاب کنم
برای کار در لینوکس
طی تحقیقی که کردم نتیجه گرفتم که ++C در ارتباط با سخت افزار زبان برنامه نویسی مناسب تری است
حالا من در لینوکس تحت چه محیطی از این زبان برنامه نویسی استفاده کنم؟

اگه هر جای صحبت من اشتباه بود یا نظر خاصی داشتید ممنون میشم بفرمائید

در ضمن در برنامه های آینده من تولید نسخه اندروید نرم افزار است

آیا با توجه به این نکته باید زبان برنامه نویسی مشترک یا ... انتخاب کنم؟

kahe.mehrdad
چهارشنبه 29 مرداد 1393, 08:22 صبح
دوست من ویندوز هم به اندازه لینوکس تو زمینه ارتباطات با سخت افزار قدرتمنده. شما به هر دستگاهی که بخواید متصل بشید (سخت افزار خارجی مانند GSM ، GPS ، ACCELERATOR) باید از ارتباطات استانداردی استفاده کنید مثل UART، Bluetooth ، CAN .
اما اگه منظورتون از ارتباط سخت افزار ارتباط با resourse های سیستم هست اطلاعاتی ندارم. میشه بگید حدودا چه کار سخت افزاری انجام بدید.
در ضمن تو محیط Linux کامپایلر QT چیز خوبیه.

ali_72
چهارشنبه 29 مرداد 1393, 08:34 صبح
دوست من ویندوز هم به اندازه لینوکس تو زمینه ارتباطات با سخت افزار قدرتمنده. شما به هر دستگاهی که بخواید متصل بشید (سخت افزار خارجی مانند GSM ، GPS ، ACCELERATOR) باید از ارتباطات استانداردی استفاده کنید مثل UART، Bluetooth ، CAN .
اما اگه منظورتون از ارتباط سخت افزار ارتباط با resourse های سیستم هست اطلاعاتی ندارم. میشه بگید حدودا چه کار سخت افزاری انجام بدید.
در ضمن تو محیط Linux کامپایلر QT چیز خوبیه.

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

kahe.mehrdad
چهارشنبه 29 مرداد 1393, 08:41 صبح
ممنونم
من تو برنامه خودم با وایرلس و usb به دستگاهی متصل هستم و در زمان کمتر از 6 ms اطلاعات رد و بدل می شه . که از دست رفتن یا دیر رسیدن حتی یه بسته داده برای برنامه خوب نیست
ویندوز هم در پس زمینه کارهای مختلفی انجام میده و به کارها الویت میده و خیلی وقتا خواندن داده به پورت رو به تعویق میندازه
دوست من اگه داره جواب میده تغییرش نده. چون لینوکس دنگ و فنگ های خاص خودش را داره (البته واسه تجربه هم که شده حتما برو سمت لینوکس).
شما ببینید بیشینه پهنای باندی که میتونی از دستگاهت بگیری چقدره. من باز هم دقیقا نفهمیدم اونور دیوایست چیه :)

احسان!
چهارشنبه 29 مرداد 1393, 14:40 عصر
سلام
برای سخت افزار C خیلی استفاده میشه ولی خوب زبان رو باید متناسب با نیاز انتخاب کرد.
کیوت کامپایلر نیست!صرفا یه کتابخانه هستش که با زبان C++ نوشته شده!
اگه میخواید با کیوت کار کنید خود IDE Qt creator خوب هستش.
kdevelop هم چیز خوبیه.
چیزهای دیگه ای هم مثل اکلیپس هستش که رایج هم هست.
فکر کنم بهتره خودتون امتحان کنید ببینید چی بیشتر به کارتون میاد.

موفق باشید.

kahe.mehrdad
چهارشنبه 29 مرداد 1393, 14:48 عصر
دوست من QT درسته یک زبان به اصطلاح توسعه یافته است ولی در لینوکس یک کامپایلر کامل با همین نام + یه سری متعلقات چسبیده به نامش وجود داره که این زبان ها را ساپورت میکنه : JAVA، CPP ، C
من با جاوا و CPP اون برنامه پروژه OS ام را نوشتم. خیلی هم UI زیبا و کاربری آسونی داره (بر خلاف اغلب محیط های برنامه نویسی Linux)
دانلودش هم فوق العاده آسونه. شما اگر توی بخش دانلود سافتور های لینوکس همین واژه QT را جست و جو کنید پیداش میکنید. البته دوستمون گفتن هم خوبه.
اما اگر کار سخت افزاری با میکرو داری انجام میدی همون ویندوز از همه عالی تره.

کامبیز اسدزاده
چهارشنبه 29 مرداد 1393, 15:16 عصر
دوست من QT درسته یک زبان به اصطلاح توسعه یافته است ولی در لینوکس یک کامپایلر کامل با همین نام + یه سری متعلقات چسبیده به نامش وجود داره که این زبان ها را ساپورت میکنه : JAVA، CPP ، C
من با جاوا و CPP اون برنامه پروژه OS ام را نوشتم. خیلی هم UI زیبا و کاربری آسونی داره (بر خلاف اغلب محیط های برنامه نویسی Linux)
دانلودش هم فوق العاده آسونه. شما اگر توی بخش دانلود سافتور های لینوکس همین واژه QT را جست و جو کنید پیداش میکنید. البته دوستمون گفتن هم خوبه.
اما اگر کار سخت افزاری با میکرو داری انجام میدی همون ویندوز از همه عالی تره.

سلام

عزیز من توی پست های بالا هم به اشتباه اطلاعات دادی به کاربران :لبخندساده:
کلمه QT مربوط هستش به Quantum Technology و ربطی به این کیوت نداره اینی که ما ازش استفاده میکنم درستش Qt هست پس QT با Qt زمین آسمون فرق میکنه.
حالا قضیه ای که Qt یکم زبان توسعه یافته هستش خیر ! اینم اشتباهه اصلا زبان نیست ! یک کتابخانه هستش مثل تمام کتابخانه های C++‎‎‎ این وسط زبان فقط C++‎‎‎ هست و امثال کیوت یک رابط و کتابخانه برای توسعه.

در لینوکس هم به صورت پیشفرض توصیه میکنند از Unix Base SDK همراه با Qt Creator استفاده کنند در کل بهترین محیط توسعه و برنامه نویسی مخصوصا طراحی همین Qt Creator هستش.

و اما جواب استارتر محترم...
شما میتونید هم در لینوکس و هم در ویندوز از همین Qt Creator استفاده کنید محیط کاملا پایدار و سازگارداره همچنین در رابطه با اندروید و ... جوابگو هستش.

موفق باشید.

kahe.mehrdad
چهارشنبه 29 مرداد 1393, 15:27 عصر
سلام

عزیز من توی پست های بالا هم به اشتباه اطلاعات دادی به کاربران :لبخندساده:
کلمه QT مربوط هستش به Quantum Technology و ربطی به این کیوت نداره اینی که ما ازش استفاده میکنم درستش Qt هست پس QT با Qt زمین آسمون فرق میکنه.
حالا قضیه ای که Qt یکم زبان توسعه یافته هستش خیر ! اینم اشتباهه اصلا زبان نیست ! یک کتابخانه هستش مثل تمام کتابخانه های C++‎‎‎‎ این وسط زبان فقط C++‎‎‎‎ هست و امثال کیوت یک رابط و کتابخانه برای توسعه.

در لینوکس هم به صورت پیشفرض توصیه میکنند از Unix Base SDK همراه با Qt Creator استفاده کنند در کل بهترین محیط توسعه و برنامه نویسی مخصوصا طراحی همین Qt Creator هستش.

و اما جواب استارتر محترم...
شما میتونید هم در لینوکس و هم در ویندوز از همین Qt Creator استفاده کنید محیط کاملا پایدار و سازگارداره همچنین در رابطه با اندروید و ... جوابگو هستش.

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

کامبیز اسدزاده
چهارشنبه 29 مرداد 1393, 15:38 عصر
حرف شما کاملا درسته جناب آقای اسد زاده عزیز :لبخندساده: بنده قصد گمراه کردن دوستان نداشتم. خواستم تجربیاتم را که بیشتر تو زمینه میکرو بوده به دوستمون منتقل کنم.
از دوستای گل عذر خواهی میکنم بنده اطلاعات کافی نداشتم. ممنون متوجهم کردید.

خواهش میکنم این اشتباه برای همه اتفاق میفته شاید یکیم پیدا بشه برای من ایراد بگیره و این عادیه همه اشتباه میکنند.
ولی در کل هدف اینه اطلاعات تا حد ممکن درست و به شیوه اصلیه خودش انتشار پیدا کنه چون شاید کسی شیوه غلط رو یاد بگیره و همین شیوه غلط رو فردا در میان عموم بیان کنه که منجر به نظرات منفی خواهد شد.

با تشکر از شما.

ciavosh
پنج شنبه 30 مرداد 1393, 12:48 عصر
نه ویندوز و نه لینوکس امکان دسترسی مستقیم دیگر نرم افزار ها (به غیر از درایورها) را به سخت افزار نمی دهند. ولی این بدان معنی نیست که نمی توان از تمام توان سخت افزار بهره گرفت بلکه باید با رابط ها و کتابخانه خود سیستم عامل به سخت افزار مرتبط شد که این امر در هردو سیستم عامل امکان پذیر است.

بنده در این زمینه مطالعه زیادی داشتم در نتیجه فکر می کنم بتونم کمک کنم.

ali_72
پنج شنبه 30 مرداد 1393, 13:55 عصر
نه ویندوز و نه لینوکس امکان دسترسی مستقیم دیگر نرم افزار ها (به غیر از درایورها) را به سخت افزار نمی دهند. ولی این بدان معنی نیست که نمی توان از تمام توان سخت افزار بهره گرفت بلکه باید با رابط ها و کتابخانه خود سیستم عامل به سخت افزار مرتبط شد که این امر در هردو سیستم عامل امکان پذیر است.

بنده در این زمینه مطالعه زیادی داشتم در نتیجه فکر می کنم بتونم کمک کنم.

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

کامبیز اسدزاده
پنج شنبه 30 مرداد 1393, 14:23 عصر
میشه بیشتر راهنمایی کنید
پس اطلاع دارید از مشکلات سیستم عامل که باعث میشه ارسال یا دریافت داده به دلیل وجود یک وفقه به تاخیر بیافته من چطور میتونم بهترین شرایط برای ارتباط را برقرار کنم
پس نظر شما اینه که سوئیچ به یک سیستم عامل دیگه تاثیر چندانی در اصل مشکل من نداره؟

سلام

دوست عزیز سوئیچ کردن بین سیستم عامل برای زبانی مثل C++ اصلا معنی نداره مگر در موارد خاص مثلا اگه قرار باشه شما توسط API سیستم عامل کار کنید خب در این صورت باید تحقیق کنید در رابطه با قابلیت های اون و سرعت در پاسخ دهی نسبت به سیستم عامل ولی در صورتی که استاندارد و تحت یکی از کتابخانه های Corss platform کد مینویسید در این حالت سوئیچ کردن بین سیستم عامل تاثیر آنچنانی نخواهد داشت.

حالا اینکه ویندوز در ارتباط با سخت افزار کمی سنگین عمل میکنه یا خیر یا باعث وقفه میشه بر میگرده به منابع سخت افزاری مورد نیاز برای این سیستم عامل که نسبت به لینوکس بار اضافی و بیشتری وارد Ram و CPU میکنه.

ciavosh
پنج شنبه 30 مرداد 1393, 21:22 عصر
اگر دقیقاً توضیح بدین که هدف نهاییتون چیه بیشتر میشه راهنمایی کرد.

2020s1371
جمعه 31 مرداد 1393, 07:37 صبح
سلام

برنامه win app می نویسم که ارتباط با سخت افزار و گرفتن اطلاعات از دستگاه است
فعلا با #C تحت Visual studio کار میکنم
اما ویندوز را محیط مناسبی برای برنامه کار با سخت افزار ندیدم
با تحقیقی که کردم لینوکس در این مورد قدرتمندتر است چون سرعت به مراتب بیستری در فراخوانی اطلاعات دارد
حالا من باید زبان برنامه نویسی انتخاب کنم
برای کار در لینوکس
طی تحقیقی که کردم نتیجه گرفتم که ++C در ارتباط با سخت افزار زبان برنامه نویسی مناسب تری است
حالا من در لینوکس تحت چه محیطی از این زبان برنامه نویسی استفاده کنم؟

اگه هر جای صحبت من اشتباه بود یا نظر خاصی داشتید ممنون میشم بفرمائید

در ضمن در برنامه های آینده من تولید نسخه اندروید نرم افزار است

آیا با توجه به این نکته باید زبان برنامه نویسی مشترک یا ... انتخاب کنم؟
بنظر من کیوت مناسب ترین انتخاب برای شماست

ali_72
جمعه 31 مرداد 1393, 07:58 صبح
اگر دقیقاً توضیح بدین که هدف نهاییتون چیه بیشتر میشه راهنمایی کرد.

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

ciavosh
جمعه 31 مرداد 1393, 08:11 صبح
هدف نهایی من ایجاد بهترین محیط برای برنامه برای کار با سخت افزار است. خیلی از وقفه های سیستم عامل یا کارای سیستمی باعث ایجاد وقفه و دیر رسیدن داده یا از دست رفتنش میشه
از اون جایی که سرعت رد و بدل داده زیر شش میلی ثانیه است و از دست رفتن یک پکت داده هم نباید اتفاق بیافته دنبال راهی هستم که تو یه جمله بگم:
وقتی نرم افزار در حال اجرا است سیستم عامل در ارتباط بین سخت افزار و برنامه مزاحمت ایجاد نکنه
هیچ داده ای به طور معمول در اثر عملکرد سیستم عامل از دست نمیره. منظور شما از پکت چیست؟ در سطح سخت افزار داده ها در بعضی موارد به صورت پکت ارسال میشوند.
برای سیستمهایی که به هیچ عنوان تحمل وقفه ندارند و باید به صورت در لحظه اطلاعات را پردازش کنند از سیستم عاملهای مخصوص استفاده می شود. در این سیستم ها همواره فقط یک نرم افزار در حال اجرا می باشد.

2020s1371
جمعه 31 مرداد 1393, 08:26 صبح
البته تو کار با سخت افزارها فکر کنم بش اسکریپت (http://fa.wikipedia.org/wiki/%D8%A8%D8%B4_(%D9%BE%D9%88%D8%B3%D8%AA%D9%87)) کارا باشه

ali_72
جمعه 31 مرداد 1393, 08:30 صبح
هیچ داده ای به طور معمول در اثر عملکرد سیستم عامل از دست نمیره. منظور شما از پکت چیست؟ در سطح سخت افزار داده ها در بعضی موارد به صورت پکت ارسال میشوند.
برای سیستمهایی که به هیچ عنوان تحمل وقفه ندارند و باید به صورت در لحظه اطلاعات را پردازش کنند از سیستم عاملهای مخصوص استفاده می شود. در این سیستم ها همواره فقط یک نرم افزار در حال اجرا می باشد.

منظورم از پکت داده همون یک سری بایت است که بین سخت دافزار و نرم افزار رد و بدل میشه. منظورم از از دست رفتن داده تاخیر در دریافت داده از سخت افزار است که باعث میشه برنامه مثلا در یک ثانیه باید به تعداد مشخصی داده دریافت کنه داده کمتری دریافت کنه

حالا با فرض اینکه سیستم موجود تحمل وقفه رو نداره باید از چه سیستم عاملی استفاده کنم؟
یا شرایط فعلی رو چطور میتونم در ویندوز یا لینوکس بهبود بدم؟

ciavosh
جمعه 31 مرداد 1393, 09:12 صبح
یک نمومه از این نوع سیستم های عامل (http://www.freertos.org/a00104.html?1)

با استفاده از یک لینوکس سبک بدون رابط کاربر و غیر فعال نمودن سرویسهای غیر ضروری و همچنین به کارگیری یک سیستم سریع بشه تا حد بسیار بالایی به این هدف نزدیک شد.