PDA

View Full Version : نحوه hook کردن پورت سریال با سی شارپ



arastoahmadi
جمعه 17 مرداد 1399, 12:27 عصر
با سلام

دوستان من در تاپیک قبلی که موضوعش مانیتور کردن پورت سریال بود دوستان محبت فرمودن پاسخ دادن تاپیک منو ، یه سری از دوستان فرموده بودن برای ماتنیتور کردن پورتی که قبلا توسط یه برنامه دیگه باز شده باید از ابزارهای serial splitter برای این کار استفاده کرد که درواقع میاد از پورت اصلی یه پورت مجازی ازش split میکنه ، من این کارو انجام دادم و واقعیتش خیلی جوابگوی کار من نیست مشکلی که این برنامه داره اون لحظه ای که پورت مجازی می سازم میتونم اون پورتو کامل مانیتور کنم ولی بعد اینکه سیستممو ریستارت میکنم دیگه به هیچ عنوان نمیتونم پورت مجازی رو مانیتور کنم و من فکر میکنم شاید به خاطر دمو بودن برنامه باشه و یا ماهیت این برنامه اینطوریه که متاسفانه نسخه کرک این نرم افزار هم موجود نیست ، تو اینترنت که سرچ زدم بعضی از دوستان گفته بودن که باید پورت سریال رو hook کنیم که من حقیقتش سر از این موضوع در نیاوردم و ممنون میشم دوستانی که با این مورد آشنایی دارند منو تو این زمینه راهنمایی بفرمایند واگر لینک مرتبطی که بتونم با سی شارپ این کارو انجام بدم دارن ممنون میشم همین تاپیک بزارن

بازم ممنون

_behnam_
جمعه 17 مرداد 1399, 14:25 عصر
سلام. دوست عزیز تا الان چهار یا پنج تاپیک زدید که موضوعشون یکی بوده تقریبا و هیچکدوم به نتیجه دلخواه نرسیده. چرا که یا واضح نمیگید چی میخواید یا خودتونم نمیدونید چی میخواید!!
۰ ) شما یک برد سخت افزاری دارید که میخواید از طریق سی شارپ واسش اطلاعات بفرستید و ازش اطلاعات بگیرید؟
۱ ) یا اینکه برد شما یک نرم افزار داره که شما میخواید شنود کنید ببینید نرم افزار و برد از طریق پورت سریال چه اطلاعاتی رو ردوبدل میکنن ؟
۲ ) یا اینکه علاوه بر شنود پورت سریال میخواید اطلاعات روهم تغییر بدید به دلخواه و به برد ارسال کنید؟

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

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

اگر گزینه دو مدنظرتونه یعنی میخواید اطلاعات رو به دلخواه تغییر بدید که دیگه نیازی ندارید که سیستم ری استارت بشه و سریال اسپلیتر از کار بیوفته!!! شما یکبار نمونه های داده های ارسالی رو بررسی میکنید، پروتکل ارتباطی رو بدست میارید و از طریق گزینه صفر با برد تبادل اطلاعات میکنید.؟

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

arastoahmadi
جمعه 17 مرداد 1399, 20:28 عصر
درود بر شما


دوست عزیز من یه سخت افزار دارم که یه نرم افزار هم داره حالا چون سخت افزار من رابط ارتباطیش rs232 هستش و تمامی مستندات مروبط به command های دستگاه رو دارم بنابراین نیازی به نرم افزار دستگاه ندارم ، من میخام پورتی comی که توسط دستگاه باز میشه رو بخونم به این صورت که اول یه دستوری رو براش ارسال کنم اجرا بشه و نتیجه دستور رو هم بهم نشون بده به عنوان مثال من وقتی دستور نمایش تنظیمات رو برای دستگاه ارسال میکنم که قطعا دستورش یه کد هگز هستش باید برام نتیجه رو نشون بده و بگه که این آیتم ها فعال هستن


من برای اینکار از نرم افزار serial port monitor استفاده کردم وبا این نرم افزار هم تونستم پورت رو باز کنم و هم اینکه همون پورت رو مانیتور کنم من از طریق این نرم افزار دستور نمایش تنظیمات رو برای دستگاه فرستادم و خروجیشم دیدم که نوشته بود فلان آیتم و فلان آیتم فعال هستن


حالا من یه پروژه با سی شارپ ایجاد کردم که عمل رایت کردن و یا همان ارسال دستور رو انجام میده ولی خروجی حاصل از دستور رو بهم نشون نمیداد که خود شما فرمودید برای اینکه خروجی رو بتونید ببینید باید از ابزارهای serial splitter یه پورت مجازی از پورت اصلی بگیرید و من این کارو انجام دادم دوباره پروژه م رو اجرا کردم و این دفعه دقیقا نتیجه خروجی دستوری که زده بودم رو برام نشون داد که دقیقا عین خروجی serial port monitor بود متاسفانه من روز بعدش که سیستممو روشن کردم دیدم پروژه م دیگه نمیتونه از دستگاه چیزی بخونه و من مجددا دوباره نرم افزار splitter رو باز کردم و یه پورت دیگه تعریف کردم و بازم شروع به کار کردم و بعد اینکه برنامه رو دوباره ریستارت کردم باز دوباره جواب نگرفتم حالا دوست عزیز من میخام هم دستور برای دستگاه ارسال کنم و هم اینکه نتیجه اجرای دستور رو ا زدستگاه بگیرم شما چی پیشنهاد میکنید ، چون واقعا نمیدونم نرم افزار splitter چه مشکلی داره، ضمنن اینم عرض کنم ویندوز من ویندوز 10 هستش

_behnam_
جمعه 17 مرداد 1399, 21:31 عصر
سلام.
شما وقتی میخواید از طریق سی شارپ به دستگاه از طریق پورت سریال منصل بشید. هیچ‌چیز اضافی دیگه نیازی نیست!!!
من نمیدونم مشکلتون چی هست ک میگید نمیشه؟
این کاری ک میخواید انجام بدید ساده ترین کار هست.
داده هارو ارسال میکنید و توی تابع رسیو هم داده های ارسال شده از برد رو میگیرید.

منظورتون از "خروجیه حاصل از دستور " چی هست؟
منظورتون نتیجه ارسال شده از برد به پورت سریال هست؟

arastoahmadi
جمعه 17 مرداد 1399, 22:35 عصر
دوست عزیز منظورم همون داده های ارسال شده از برد هستش که حتی توسط تابع رسیو هم گرفته نمیشه من لینک پروژه مو براتون میزارم شما محبت و بزرگواری بفرمایید ببینید اگه ایرادی توش هست بهم بگید من اصلاح کنم

https://easyupload.io/xp1y84

arastoahmadi
دوشنبه 20 مرداد 1399, 10:54 صبح
دوستان من بالاخره تونستم داده های ارسالی دستگاه رو بگیرم ، من باید مقادیر RTS و DTR رو true میزاشتم به هرجهت از شما عزیزان ممنونم فقط سوال بعدیم اینه که این دستگاهی که من دارم کابل ارتباطیش rs232 هستش ولی اون یکی دستگاهم که دقیقا همین مدلم هستش ارتباطش کابل usb آیا باید برای خواندن و نوشتن usb هم رویه ی جداگانه ای داریم یا از طریق serialport میتونیم اونم به این روش بخونیم اگه با serialport میتونیم بخونیم ممنون میشم بهم بگید چطوری باید این کارو یکنم