PDA

View Full Version : انتقال فايل از طريق پورت سريال



omidan321
شنبه 25 آذر 1391, 18:17 عصر
سلام كسي ميتونه راهنمايم كنه ؟

من ميخام فايل رو از طريق پورت سريال بفرستم اما فايل هاي به غير از text منتقل نميشه
فايل text راحت منتقل ميشه چون اول و آ خرشو header & footer گذاشتم اول و اخرو تشخيص مي ده و تو كامپيوتر مقصد نشون ميده
اما فايل هاي غير از تكست چون يونيكد هستند اول و اخرشو با اين كه ميزارم اما نميتونه تشخيص بده (با يه حلقه توي كل فايل يونيكد ميگرده دنبال هيدر و فوتر ) اما تشخيص نميده
واسه همين بعد انتقال فايل نميتونه اخرشو پيد ا كنه و فايل رسيده شده نشون داده نميشه

ممنون ميشم كمكم كنين
منتظر نظرات شما هستم

Felony
یک شنبه 26 آذر 1391, 09:29 صبح
اما فايل هاي غير از تكست چون يونيكد هستند
چه ربطی داره ؟ یعنی مثلا فایل exe یا MP3 و ... نسخه Unicode و Ansi دارن ؟!

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

بهروز عباسی
یک شنبه 26 آذر 1391, 09:30 صبح
درود به همه
من خودم تاحالا از این کارا نکردم ، امّا توی کاسه کوزم یک مقاله 3 صفحه زبان اصلی باحال برای این کار داشتم آپ کردم .
دانلود کنید شاید مشکلتون حل شد.

موفق باشید.

omidan321
دوشنبه 27 آذر 1391, 08:45 صبح
چه ربطی داره ؟ یعنی مثلا فایل exe یا MP3 و ... نسخه Unicode و Ansi دارن ؟!

میتونی اول طول فایل رو به صورت یک رشته بفرستی و بعد از اون شروع به فرستادن خود فایل کنی ، در مقصد هم طول فایل رو بخونی و به همون میزان طالاعات رو دریافت کنی .
دوست من خيلي ربط داره شما با پورت سريال نميتوني بدون استفاده از يونيكد فايلي به غير از تكست برفستي چون اون فايل ها بايد از طريق widestring پشتيباني بشن نه string
وقتي ميخاي كه اين فايل ها رو انتقال بدي بايد از يونيكد اسفاده كني
من يه برنامه نوشتم كه فايل تكست رو منتقل ميكرده اما در تكميل اون برنامه براي انتقال انواع فايل ها بايد از يونيكد استفاده ميكردم
من مشكلم رو خودم حلش كردم و اين جوابم فقط براي اطلاع بود
تشكر از شماهايي كه جواب دادين

Felony
دوشنبه 27 آذر 1391, 09:36 صبح
دوست من خيلي ربط داره شما با پورت سريال نميتوني بدون استفاده از يونيكد فايلي به غير از تكست برفستي چون اون فايل ها بايد از طريق widestring پشتيباني بشن نه string

این در مورد Data Bits ها در Serial Port به نقل از Wikipedia (http://en.wikipedia.org/wiki/Serial_port#Data_bits):


Data bits
The number of data bits in each character can be 5 (for Baudot code), 6 (rarely used), 7 (for true ASCII), 8 (for any kind of data, as this matches the size of a byte), or 9 (rarely used). 8 data bits are almost universally used in newer applications. 5 or 7 bits generally only make sense with older equipment such as teleprinters

این هم در مورد WideString (http://www.delphibasics.co.uk/RTL.asp?Name=WideString) ها در دلفی :


Each character is a WideChar, guaranteed to be 16 bits in size.

خوب حالا با توجه به اون حرف هایی که زدی ( اون فایل ها باید از Widestring پشتیبانی بشن نه String و ... ! ) چطوری 16 بیت رو فرستادی در حالی که نهایتا 9 بیت پشتیبانی میشه ؟!

در آخر برای برطرف کردن مشکلتون میتونید از توابع WideCharToMultiByte و MultiByteToWideChar استفاده کنید .

omidan321
پنج شنبه 30 آذر 1391, 09:38 صبح
چطوری 16 بیت رو فرستادی در حالی که نهایتا 9 بیت پشتیبانی میشه ؟!



ببين من نتونستم درست مبحثمو انتقال بدم
نميشه 100000 بيت رو با پشتيباني 9 بيت انجام بدي؟
تو 100000 بيت رو به صورت سريالي و مداوم با 9 بيت ميفرستي
زياد گنگ نيست