زمان کنونی: 03-20-2019, 02:20 AM
درود مهمان گرامی! (ورودثبت نام)



New Reply 
 
ارتباط easy MCU با نرم افزار Matlab
11-07-2017, 11:55 AM
ارسال: #1
ارتباط easy MCU با نرم افزار Matlab
دوستان کسی هست بتونه کمک کنه...
می خوام بین easy MCU و نرم افزار متلب از طریق usart ارسال و دریافت دیتا داشته باشم... اما نمی دونم چرا عدد رو از نرم افزار متلب به easy MCU می فرستم و دوباره همون عدد رو به نرم افزار متلب می فرستم به صورت کد اسکی در متلب دریافت می کنم
Quote
11-08-2017, 08:52 AM
ارسال: #2
RE: ارتباط easy MCU با نرم افزار Matlab
سلام.

لطفا لینک ذیل رو جهت آشنا شدن با کدهای ASCII با دقت بررسی کنید.
http://www.asciitable.com

حالا که به درک بهتری از کدهای ASCII رسیدید، می تونید از ویدئوهای آموزشی و مثال های آماده مرتبط استفاده کنید. همینطور به مفهوم کاراکتر و رشته دقت کنید. به میزان بایت ها دقت کنید و ظرف مناسبی جهت ارسال و دریافت استفاده کنید.

جهت راهنمایی شدن بهتر می توانید سوالاتتون رو همراه با کد بپرسید. برای کدها از تگ code یا php می توانید استفاده کنید.

موفق باشید.

[تصویر:  telegram_icon.png] کانال رسمی EasyMCU در تلگرام
.
.
Quote
11-11-2017, 11:41 AM
ارسال: #3
RE: ارتباط easy MCU با نرم افزار Matlab
دوستان عزیز
من به ازای ورودی عدد 1 خروجی 49 دریافت می کنم
عدد 2 رو می دم عدد 50 و به همین ترتیب
از طریق لینک http://www.lookuptables.com نگاه کردم... قسمت HTML Codes رو که بزنی ظاهرا داره طبق اون الگو خروجی می ده
میشه لطفا راهنمایی کنید


فایل‌(های) پیوست شده بندانگشتی (ها)
   
Quote
11-11-2017, 11:33 PM
ارسال: #4
RE: ارتباط easy MCU با نرم افزار Matlab
همونطور که گفته شد، شما با وارد کردن عدد 1 در محیط ترمینال، یک مقدار 8 بیتی (یک کاراکتر) به سمت میکرو ارسال می کنید. هر حرفی که روی مانیتور و یا چاپگر به نمایش در می یاد، در بتن خود یک مقدار (معادل کد اسکی اش را دارا می باشد). کد اسکی معادل "1" برابر مقدار عددی 49 می باشد. برای حروف اختلاف بین فرم ظاهری کاراکتر و مقدار معادل عددی کد اسکی کاراکتر مقدار 48 واحد است.
به عبارت دیگر کد اسکی کاراکتر 5 ، می شود 5 + 48 = 53
پس همه چیز به خوبی در حال کار کردن است، حالا که درک بهتری از کد اسکی و ارتباط کاراکترها با مقادیر اسکی یشان رو متوجه شدید کافیه که یک ارتباط منطقی بین این برقرار کنید و به خواسته اتون برسید.

به عبارت دیگر جهت کاراکترهای عددی اعمال شده از سمت ترمینال، کافیست مقدار اسکی ای که میکرو از کاراکتر دریافت می کند را منهای عدد ثابت 48 کنید و بعد به نمایش در آورید، خواهید دید خروجی همان مقدار ورودی است. منتها ورودی یک کاراکتر است و خروجی یک مقدار عددی !

لطفا مثال serialReturnAscii را در مثال های آماده EasyMCU با دقت بررسی کنید و با کاربرد دستور ذیل نیز آشنا شوید.

کد php:
cdc.write() 

راهکارهای زیادی وجود دارد، منتها بخش مهم درک کاراکتر، کد اسکی معادل هر کاراکتر و استفاده از مقدار عددی آنها و تمیز دادن این موارد نسبت به همدیگر است.

موفق باشید.

[تصویر:  telegram_icon.png] کانال رسمی EasyMCU در تلگرام
.
.
Quote
11-11-2017, 11:47 PM
ارسال: #5
RE: ارتباط easy MCU با نرم افزار Matlab
با این مدل که فرمودید... تا عدد ۹ درست کار می کنه از عدد ۱۰ به بعد ۱ رو جدا و سپس ۰ رو خروجی میده
Quote
11-12-2017, 10:15 AM (آخرین ویرایش در این ارسال: 11-12-2017 10:15 AM، توسط omid_ghanavati.)
ارسال: #6
RE: ارتباط easy MCU با نرم افزار Matlab
اینم نمونه کار... عدد دو رقمی جدا می کنه جواب رو


فایل‌(های) پیوست شده بندانگشتی (ها)
   
Quote
11-12-2017, 11:07 PM (آخرین ویرایش در این ارسال: 11-12-2017 11:08 PM، توسط Sharin.)
ارسال: #7
RE: ارتباط easy MCU با نرم افزار Matlab
دوست گرامی شما مفهوم رو کامل متوجه بشید کافی هست. مابقی بازی با ریاضی می شه.
شما عدد دهگان رو ضرب در 10 و سپس با مقدار یکان جمع کنید، اینطوری اعدادتون سر هم می شه ... ، واقعا کار ساده ای هست!

به عنوان راهکار بعدی ...
اگر مقادیر ورودی را به صورت string از ترمینال دریافت کنید و به یک متغییر از نوع string انتصاب دهید، در این صورت می توانید مقدار کاراکتر های موجود در String را به معادل عددیشان تبدیل کنید.

کد php:
String str;
int val;

str 123;
val str.toInt(); 

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

موفق باشید.

[تصویر:  telegram_icon.png] کانال رسمی EasyMCU در تلگرام
.
.
Quote
11-12-2017, 11:14 PM
ارسال: #8
RE: ارتباط easy MCU با نرم افزار Matlab
در مثالی که بالا گذاشتید، متود read() در هر بار فراخوانی تنها یک بایت از ورودی را می خواند و خطوط برنامه را ادامه می دهد، این کار را تا زمانی که دیتای دیگری بر روی خط نمانده باشد انجام می دهد.
پس طبیعتا اعداد چاپ شده را جدا گانه چاپ می کنید، هیچ اشتباهی رخ نداده است، دقیقا عملکرد برنامه نوشته شده همین است.

حتما نگاهی به داکیومنت ها جهت آشنایی با متودها بیندازید ...
http://forums.easymcu.ir/fa/showthread.p...864#pid864

[تصویر:  telegram_icon.png] کانال رسمی EasyMCU در تلگرام
.
.
Quote
New Reply 


پرش به انجمن:

تماس با ما | EasyMCU | بایگانی | پیوند سایتی RSS
بازگشت به بالا
Persian Translation by MyBBIran.com - Ver: 4.6
Powered by MyBB, © 2002-2019 MyBB Group.
Designed by Escalate Internet. Icons by dAKirby309.

ورود
نام کاربری:
گذرواژه‌:



Lost your password?