مشکلی که برخوردم اینه که
x از سمت میکرو ارسال میشه
برنامه هم نشون میده ولی تشخیص نمیده
که x اومده و به سراغ بایت بعدی بره
مشکلی که برخوردم اینه که
x از سمت میکرو ارسال میشه
برنامه هم نشون میده ولی تشخیص نمیده
که x اومده و به سراغ بایت بعدی بره
مشکل بالا با تغییرات زیر حل شد ،تا مشکل بعدی
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by n340; 13-08-2012 at 15:54.
و اما مشکله بعد...
دیتاهای ارسالی فقط در صورت خونا بودن ارسال می شوند یعنی اگر 0 که معادل دیسمال ان 48 باشه ارسال میشه در صورتی که معادل دیسیمال کاراکتر مثلا 01 باشه بطور صحیح ارسال نمیشه و معادل کاراکتر خوانای قبلی ارسال میشه
فکر کنم مشکل از char یا بایت بودن هست،درسته؟
----
char رو به byte به همون ترتیبی که داده بودید مرتب کردم،دیسیمال معادل دیتا 5 تا اضافه شده بودند و UTF8,UTF7,UTF32,UTFASCi و خلاصه هرچی تو لیست بود تست کردم بازم مشکل داشت
نهایتا به char برگدوندم ولی هنوز مشکل ناخانا بودن رو دارم که کاراکتر های که نمیتونه بخونه 3F رو ارسال میکنه که معادل ? است
---
کسی میدونه چه باید کرد؟
Last edited by n340; 14-08-2012 at 00:03. دليل: تست بعدی
شما اطلاعات را به صورت عددی بررسی کنید نه رشته ای و کاراکتری. این مورد را در بند 5 چند پست قبل نیز گفتم.
شما زمانی کع از ReadExisting استفاده می کنید آرایه ای از یابت ها دریافت می کتید. کافی است تا اعضای آن را مستقیما به int و یا رشته تبدیل کنید. آنگاه خود عدد را دارید. اما اگر از نوع کاراکتر باشد زمانی که به رشته تبدیل می شود معادل اسکی آن عدد بر می گردد.
استفاده از کلاس Encoding و UTF تنها برای تبدیل آرایه بایت به رشته بود. اما اگر هر عضو آن با استفاده از .ToString() تبدیل شوند مستقیما عدد آن باز می گردد.
موفق باشید.
با تشکر از جوابتون
اون مشکل رو حل کردم
ولی باز مشکلی دیگه ای ...
تابع mfg رو بصورت زیر تغییر دادم
البته فعلا بعضی جاها رو غیر فعال کردمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما جالبه تا عدد متغییر ny مقدار کل بایت فایل هست و اصولا می باست nu تا حد ny برسه و بعد تابع قطع بشه
اما با کمال تعجب تا عدد 5824 میره و متوقف میشه،دیتا ها تا همین بایت سالم هستان در ic ولی همینجا برنامه میمونه
هرچقدر نگاه میکنم نمیدونم مشکل از کجاست ،از دیروز صبح درگیره همینم
به نظر میرسه در خوندن فابل مشکل داره
چون من فقط 64 بایت اول بخونم و دائم همونو کپی کنم بدون مشکل میره
و با فایل های مختلف هم این عدد متفاوته
فکر نمیکنم از برنامه میکرو باشه مشکل
نکته اصلی: به جای اینکه که کل فایلتان را یکسره بخوانید و سپس آرایه آن را بخش بخش بفرستید، بهتر است تا همان 64 تا 64 تا از فایل بخوانید و در پورت سریال برزید.
نکات دیگر که بد نیست بدانید:
1- خود کلاس BaseStream طول فایل را دارد. FileInfo را می توان حذف کرد.
2- مدت زمان صبر شما برای رایت بافر پورت سریال در سخت افزار خیلی کم است( حداقل 5ms به ازای یک پکت 30 بایتی با Baudrate 38400 در Mega128 با کلاک 14.7456M - پردازش پکت خود را در میکرو بررسی کنید.زمان تقریبی در می آید.)
3- این حالت را در نظر بگیرید: طول فایل 630 بایت باشد. طول هر ارسال هم 64 بایت. آنگاه روند ارسال شما اینگونه می شود:
و اگر:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پس:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پس این 54 بایت چه می شود؟کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شما می بایست در آخر این 54 بایت را نیز جداگانه از آخر آرایه خود ارسال کنید.
پس می شود: از یک حلقه استفاده کنید که به تعداد 9 بار 64 بایت را ارسال کند و در آخر 54 تای نهایی را بفرستد یعنی باقیمانده این عبارت:
موفق باشید.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با تشکر از جواب
دیگه امروز کمی منصرف شدم از نوشتن این بوت لودر
و با یک پروگرامر یونیورسال پر کردم ای سی مورد نظر رو
ولی به عنوان یک تجربه نیاز به تولید کردن این بوت لودر دارم
کد قسمت دریافت مگا 88 با کلاک 8 مگ داخلی در زیر امده
مثالی که در بالا گفته شده مربوط به یک فایل 16 کیلو بایتی است که در 5760 قفل میکندکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فعلا درنوشتن مشکل وجود دارد این قسمت که حل شد برای اون ته مانده های بایتی هم فکری میکنیم
میکرو نیز AT45DB231 را برنامه ریزی میکند که یک ای سی فلش حافظه می باشد
از این فایل 15 کیلو بایتی 5 کیلوی اول بطور صحیح در ای سی ریخته میشود ولی بعد از سکته برنامه اطلاعات بعدی غیر قابل اعتماد است
از بابت صبر کردن میبینید که میکرو بعد از کامل رسیدن 1 میلی ثانیه صبر میکند و همچنین بعد از انجام دستور اخر نیز 1 میلی صبر میکند
با برداشتن دستور دیلی نیز تا همان 5 کیلو به درستی انجام میشود
در مورد 64 بایت 64 بایت نیز مورد حل شده و به همین صورت فایل خوانده میشود
Last edited by n340; 16-08-2012 at 18:29.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)