تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 3 از 3 اولاول 123
نمايش نتايج 21 به 28 از 28

نام تاپيک: خواندن محتویات فایل متنی

  1. #21
    اگه نباشه جاش خالی می مونه n340's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    0511
    پست ها
    371

    پيش فرض

    مشکلی که برخوردم اینه که
    x از سمت میکرو ارسال میشه
    برنامه هم نشون میده ولی تشخیص نمیده
    که x اومده و به سراغ بایت بعدی بره

  2. #22
    اگه نباشه جاش خالی می مونه n340's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    0511
    پست ها
    371

    پيش فرض

    مشکل بالا با تغییرات زیر حل شد ،تا مشکل بعدی
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by n340; 13-08-2012 at 15:54.

  3. #23
    اگه نباشه جاش خالی می مونه n340's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    0511
    پست ها
    371

    پيش فرض

    و اما مشکله بعد...
    دیتاهای ارسالی فقط در صورت خونا بودن ارسال می شوند یعنی اگر 0 که معادل دیسمال ان 48 باشه ارسال میشه در صورتی که معادل دیسیمال کاراکتر مثلا 01 باشه بطور صحیح ارسال نمیشه و معادل کاراکتر خوانای قبلی ارسال میشه
    فکر کنم مشکل از char یا بایت بودن هست،درسته؟
    ----
    char رو به byte به همون ترتیبی که داده بودید مرتب کردم،دیسیمال معادل دیتا 5 تا اضافه شده بودند و UTF8,UTF7,UTF32,UTFASCi و خلاصه هرچی تو لیست بود تست کردم بازم مشکل داشت
    نهایتا به char برگدوندم ولی هنوز مشکل ناخانا بودن رو دارم که کاراکتر های که نمیتونه بخونه 3F رو ارسال میکنه که معادل ? است
    ---
    کسی میدونه چه باید کرد؟
    Last edited by n340; 14-08-2012 at 00:03. دليل: تست بعدی

  4. #24
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    شما اطلاعات را به صورت عددی بررسی کنید نه رشته ای و کاراکتری. این مورد را در بند 5 چند پست قبل نیز گفتم.
    شما زمانی کع از ReadExisting استفاده می کنید آرایه ای از یابت ها دریافت می کتید. کافی است تا اعضای آن را مستقیما به int و یا رشته تبدیل کنید. آنگاه خود عدد را دارید. اما اگر از نوع کاراکتر باشد زمانی که به رشته تبدیل می شود معادل اسکی آن عدد بر می گردد.
    استفاده از کلاس Encoding و UTF تنها برای تبدیل آرایه بایت به رشته بود. اما اگر هر عضو آن با استفاده از .ToString() تبدیل شوند مستقیما عدد آن باز می گردد.

    موفق باشید.

  5. #25
    اگه نباشه جاش خالی می مونه n340's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    0511
    پست ها
    371

    پيش فرض

    با تشکر از جوابتون
    اون مشکل رو حل کردم
    ولی باز مشکلی دیگه ای ...
    تابع mfg رو بصورت زیر تغییر دادم

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    البته فعلا بعضی جاها رو غیر فعال کردم
    اما جالبه تا عدد متغییر ny مقدار کل بایت فایل هست و اصولا می باست nu تا حد ny برسه و بعد تابع قطع بشه
    اما با کمال تعجب تا عدد 5824 میره و متوقف میشه،دیتا ها تا همین بایت سالم هستان در ic ولی همینجا برنامه میمونه
    هرچقدر نگاه میکنم نمیدونم مشکل از کجاست ،از دیروز صبح درگیره همینم

  6. #26
    اگه نباشه جاش خالی می مونه n340's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    0511
    پست ها
    371

    پيش فرض

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

  7. #27
    کاربر فعال تالار .Net Msba's Avatar
    تاريخ عضويت
    Dec 2006
    محل سكونت
    ! My Mind
    پست ها
    506

    پيش فرض

    نکته اصلی: به جای اینکه که کل فایلتان را یکسره بخوانید و سپس آرایه آن را بخش بخش بفرستید، بهتر است تا همان 64 تا 64 تا از فایل بخوانید و در پورت سریال برزید.
    نکات دیگر که بد نیست بدانید:
    1- خود کلاس BaseStream طول فایل را دارد. FileInfo را می توان حذف کرد.
    2- مدت زمان صبر شما برای رایت بافر پورت سریال در سخت افزار خیلی کم است( حداقل 5ms به ازای یک پکت 30 بایتی با Baudrate 38400 در Mega128 با کلاک 14.7456M - پردازش پکت خود را در میکرو بررسی کنید.زمان تقریبی در می آید.)
    3- این حالت را در نظر بگیرید: طول فایل 630 بایت باشد. طول هر ارسال هم 64 بایت. آنگاه روند ارسال شما اینگونه می شود:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و اگر:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    پس:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    پس این 54 بایت چه می شود؟
    شما می بایست در آخر این 54 بایت را نیز جداگانه از آخر آرایه خود ارسال کنید.
    پس می شود: از یک حلقه استفاده کنید که به تعداد 9 بار 64 بایت را ارسال کند و در آخر 54 تای نهایی را بفرستد یعنی باقیمانده این عبارت:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    موفق باشید.

  8. #28
    اگه نباشه جاش خالی می مونه n340's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    0511
    پست ها
    371

    پيش فرض

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

    کد قسمت دریافت مگا 88 با کلاک 8 مگ داخلی در زیر امده
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مثالی که در بالا گفته شده مربوط به یک فایل 16 کیلو بایتی است که در 5760 قفل میکند
    فعلا درنوشتن مشکل وجود دارد این قسمت که حل شد برای اون ته مانده های بایتی هم فکری میکنیم
    میکرو نیز AT45DB231 را برنامه ریزی میکند که یک ای سی فلش حافظه می باشد
    از این فایل 15 کیلو بایتی 5 کیلوی اول بطور صحیح در ای سی ریخته میشود ولی بعد از سکته برنامه اطلاعات بعدی غیر قابل اعتماد است
    از بابت صبر کردن میبینید که میکرو بعد از کامل رسیدن 1 میلی ثانیه صبر میکند و همچنین بعد از انجام دستور اخر نیز 1 میلی صبر میکند
    با برداشتن دستور دیلی نیز تا همان 5 کیلو به درستی انجام میشود
    در مورد 64 بایت 64 بایت نیز مورد حل شده و به همین صورت فایل خوانده میشود
    Last edited by n340; 16-08-2012 at 18:29.

صفحه 3 از 3 اولاول 123

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •