مشاهده نسخه کامل
: کمک برای خواندن یک فایل باینری
سلام پروژه کارشناسی دوستم پخش موسیقی با میکرو هستش که کارهای میکرو انجام شده و برای برنامه اش از من کمک خواسته
قرار برنامه ای بنویسیم که یه فایل mp3 رو انتقال بده به پورت usb
تابع انتقال نوشته شده
فقط قزازه یه فایل mp3 رو باز کنم و بایت به بایت بخونم
ممنون میشم کمکم کنید
در ضمن پروژه به زبان vb.net هستش:n16:
rahnema1
12-10-2013, 21:15
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
گمان نکنم مشکل شما که فقط خواندن بایت به بایت باشد؟
برای این منظور میتوانید از FileStream و تابع ReadByte استفاده کنید.
یا خواندن در بلاک های 4 بایتی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر مشکل در درک هدرهای MP3 دارید، شاید لینک زیر کمکی کند:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
البته میتوانید از آی.سی هایی مانند VS1003B هم استفاده کنید.
ممنون از دوستان فقط اشتباهی در سوال بود که فایل mp3 نیست , wave هستش
در واقع ما میخوایم اطلاعات رو به صورت 7بیت 7 بیت به پورت میکرو منتقل کنیم تا از اونجا داخل حافظه میکرو نوشته بشه
تابع انتقال نوشته شده
فقط برای آرگومان ورودی نیاز داریم بیت های فایل رو به صورت 7 تا 7 تا جدا کنیم
rahnema1
15-10-2013, 11:47
ممنون از دوستان فقط اشتباهی در سوال بود که فایل mp3 نیست , wave هستش
در واقع ما میخوایم اطلاعات رو به صورت 7بیت 7 بیت به پورت میکرو منتقل کنیم تا از اونجا داخل حافظه میکرو نوشته بشه
تابع انتقال نوشته شده
فقط برای آرگومان ورودی نیاز داریم بیت های فایل رو به صورت 7 تا 7 تا جدا کنیم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
فقط برای آرگومان ورودی نیاز داریم بیت های فایل رو به صورت 7 تا 7 تا جدا کنیم
خوب میدانید که یک بایت 8 بیت است، پس بیت آخر چه میشود؟!
یعنی در ارسال و دریافت میخواهید از شیفت بیتی استفاده کنید؟
یعنی میخواهید هر 7 بایت (56بیت) رایانه را در قالب 8 بسته 7 بیتی به میکرو تان منتقل کنید؟
نمیتوانید خط انتقال را برای عبور کامل 8 بیت اصلاح کنید؟
(تلاش کنید بدون شک قابل انجام است بچه های خودمان در شرکت قبلی خیلی راحت این کار را با AVR و دربستر USB انجام داده بودند)
در مورد روشی هم که دوستمان (rahnema1) در پست قبلی بیان کردند، باید عرض کنم بنظر بازدهی مناسبی ندارد و اگر قرار بر ارسال 7 بیت 7 بیت هم باشد، باید این انتقال در فرستنده و گیرنده از طریق دستورات شیفت بیتی انجام شود و تبدیل آنها به شکلی که در پست قبلی اشاره شد، معقول و منطقی نمیباشد.
موفق باشید.
rahnema1
17-10-2013, 00:07
در مورد روشی هم که دوستمان (rahnema1) در پست قبلی بیان کردند، باید عرض کنم بنظر بازدهی مناسبی ندارد و اگر قرار بر ارسال 7 بیت 7 بیت هم باشد، باید این انتقال در فرستنده و گیرنده از طریق دستورات شیفت بیتی انجام شود و تبدیل آنها به شکلی که در پست قبلی اشاره شد، معقول و منطقی نمیباشد.
موفق باشید.[/QUOTE]
هدف پروژه اینه که داده ها به صورت 7 بیتی در بیان تا فقط یک بار در حافظه میکرو نوشته بشه اصلا بازدهی کامپیوتری که می خواد داده ها رو به میکرو منتقل کنه هیچ اهمیتی نداره چون پردازش نهایی بر روی فایل صوتی توسط میکرو انجام می گیره و ارتباط با پورت قطع میشه
مهم اینه که مقدار داده هایی که به میکرو منتقل میشه از 127 بیشتر نشه
من مشابه این کار رو قبلا انجام دادم. مشابه که نه، خودشه!
تا اونجایی که من یادم میاد فایل wav دارای سطح صفر در بیت هفتم هست. یعنی به ازای سکوت 128 می باشد و به ازای سیکل های بالایی صدا، این عدد بیشتر و به ازای سیکل های پایینی این عدد کمتر می شود.
پس تنظیم حجم و موارد دیگر کاملا قابل بررسی و قابل تغییر است. کد تبدیل دوستمان rahnema1 رو نفهمیدم (اصلا VB نمی فهمم، البته حدودا فهمیدما :n06:) اما اگر این تبدیل صورت بگیرد می بایست سطح صفر در نقطه ای دیگر دیده شود مثلا 64 . در غیر این صورت در صدای خروجی همیشه یک خِرخِر وجود دارد.
حالا واقعا چرا 7 بیت؟ در Convertion به wav هم مدل 7 بیتی نداریم. در اون پروژه من همه ی پسوند ها رو می گرفتم و به wave هشت بیتی تبدیل می کردم حالا با نرخ سمپل های مختلف. میکرو هم که هشت بیتی است! پورت USB هم که در ReportDescriptor و در بخش ReportSize دارای تنظیم حجم ترانسفر بر حسب بیت هست.
این اجباری که جناب akpa می فرمایند برای 7 بیت، برای چیست؟ شاید راهکار مناسبتری وجود داشته باشد؟
موفق باشید.
مشکل از مدار هست و بیت 8 رو رزرو کردن برای کاری فکر کنم با بیت هشتم میخوان سیگنال آماده بودن یا همچین کاری رو انجام بدن به هرحال ممنون از دوستان
دوستم پروژه رو علی رغم پیشرفتش رها کرد و نمرش رو گرفت (12)
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.