PDA

View Full Version : چگونه بفهم مودم دیال آپ مشغول هست؟



sayan
جمعه 16 تیر 1391, 15:53 عصر
سلام دوستان عزیز.
چگونه بدون هیچ کامپونت خاصی ، میشه فهمید مودم آزاد هست یا نه؟

من دستورات At command رو هم نگاه کردم ولی نتونستم مثالی پیدا کنم که بررسی کنه مودم مشغوله یا آزاده

با تشکر.

ahmadreza517
جمعه 16 تیر 1391, 17:57 عصر
به نام تنها برنامه نویس هستی
سلام ,

http://stackoverflow.com/questions/1057682/c-sharp-checking-for-active-modem-connection

Saeed_m_Farid
جمعه 16 تیر 1391, 18:35 عصر
سلام


http://stackoverflow.com/questions/1057682/c-sharp-checking-for-active-modem-connection
نه، دوست عزیز در مورد مودم dial-up هست (POTS Modem نه network connection)؛ فکر کنم قبلاً (http://barnamenevis.org/showthread.php?344671) یک صحبت مفصل در اینمورد با هم داشتیم، یکی از مواردی که اونجا ذکر کردم، RASAPI32 بود؛ این کتابخونه یه تابع داره بنام RasGetConnectStatus که نمیدونم درست جواب بده یا نه؟ باید امتحان کنید ببینید جواب درست هست یا نه؟
[DllImport("RASAPI32", SetLastError = true, CharSet = CharSet.Auto)]
static extern int RasGetConnectStatus(IntPtr hrasconn, ref RASCONNSTATUS lprasconnstatus);

وقتی نخواید از DotRas (http://dotras.codeplex.com/) استفاده کنید، یکمی ممکنه مشکلات داشته باشین دیگه (نمونه از همین تابع (http://social.msdn.microsoft.com/Forums/br/csharpgeneral/thread/d64a0b49-1163-44e2-bd51-b10d0b3a01f8))
بازم نتیجه رو برای ما بذارید، من که اینجا dial-up ندارم تست کنم، باید بدونید یکمی هم مشکله، چون دارید با چیزایی کار می کنید که پیاده سازی مدیریت شده ندارن ...
موفق باشید./

ahmadreza517
جمعه 16 تیر 1391, 20:26 عصر
سلام

نه، دوست عزیز در مورد مودم dial-up هست (POTS Modem نه network connection)؛
حق با شماست دوست عزیز
درج لینک اشتباه سهوی بود .

sayan
یک شنبه 18 تیر 1391, 18:25 عصر
از همه دوستان مخصوصاً آقای Saeed_m_Farid بابت پاسخ های حرفه ایشان تشکر میکنم.
برای چک کردن اینکه الان ارتباط با اینترنت برقرار هست من از خود Api ویندوز به نام

[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int Reserved);


استفاده میکنم. البته این هم بگم که من برای برنامه ام از همان کتابخانه DotRas استفاده میکنم. حالا چیزی که من نتونستم انجام بدم و این کتابخانه dotras هم محدودیت دارد اینکه

فرض کنید در یک سیستم 3 مودم برای ارتباط dialup وجود دارد. هر کدام از این مودم ها یا مشغول اند یا اینکه آزاد هستن.
می خواهم مودم ها را چک کنم اگه مودم شماره یک مشغوله توابع مرتبط با کتابخانه dotRas با مودم شماره 2 به اینترنت وصل بشه.:متفکر:

Saeed_m_Farid
سه شنبه 20 تیر 1391, 13:39 عصر
________________ مودبّانه‌ها ________________
از همه دوستان، مخصوصاً جناب sayan (http://barnamenevis.org/member.php?7724-sayan) بابت تشکرهای حرفه‌ای‌شان خواهش می‌کنم.
آخر چرا با پ.خ. انسان را لای منگنه قرار می‌دهید، شاید سوادم قد نمی‌دهد جواب بدهم :لبخند نیمه گشاده:
بعلّت اینکه شما در عمق یک برنامۀ سیستمی رفتین و فسیل‌هایی امثال ما را چنین مواردی خوش می‌آید! اگه اجازه بدین میخوام باهاتون راحت باشم...
__________________ پایان __________________

وقتی من خدمت شما یه چیزی رو عرض می‌کنم لطفاً بهش توجه کنید، من تابع RasGetConnectStatus رو به شما معرفی می‌کنم چون بنا به سابقه قبلی می‌دونم لازمه از Ras استفاده کنید و این تابع موارد بدردبخورتری، برای کار با مودم موردنظر عهدبوقی POTS در اختیار شما قرار میده، ولی شما می‌گین من از InternetGetConnectedState استفاده می‌کنم :تعجب محترمانه!: هر چیزی که اسمش شبیه اونیکی باشه که نمیشه جایگزینش کنید! میدونین تفاوت‌شون چیه؟ یه هندل! و یه بافر!
که تابع بی‌مصرف InternetGetConnectedState (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx) از اونها بی‌بهره است! اون چیزی که شما تو definition این تابع بنام Description گذاشتین در حقیقت یه اشاره‌گر ساده هست به یک enum :


+http://barnamenevis.org/images/misc/quote_icon.png
INTERNET_CONNECTION_CONFIGURED (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx)0x40 Local system has a valid connection to the Internet, but it might or might not be currently connected
INTERNET_CONNECTION_LAN (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx)0x02 Local system uses a local area network to connect to the Internet
INTERNET_CONNECTION_MODEM (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx) 0x01 Local system uses a modem to connect to the Internet
INTERNET_CONNECTION_MODEM_BUSY (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx)0x08 No longer used
INTERNET_CONNECTION_OFFLINE (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx)0x20 Local system is in offline mode
INTERNET_CONNECTION_PROXY (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx) 0x04 Local system uses a proxy server to connect to the Internet
INTERNET_RAS_INSTALLED (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx)0x10 Local system has RAS installed (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384702%28v=vs.85%29.aspx)

پس فقط وقتی مقدار برابر INTERNET_RAS_INSTALLED یا 16 (10 هگز) شد، می‌فهمین که RAS شما به اینترنت وصل شد، والسّلام...
و آنیکی هم همانطورکه از نامش پیداست یک ورودی بی‌خاصیت که برای روز مبادا! ذخیره شده و همیشه باید بجاش مقدار صفر بدین!!!


This parameter is reserved and must be 0

=+=+=++=+=+=+=+=++=+=+=+=+=++=+=+
می‌رسیم به تابعی که بنده خدمت‌تون معرفی کردم و همچنین تابع RasEnumConnections (http://msdn.microsoft.com/en-us/library/windows/desktop/aa377284%28v=vs.85%29.aspx)
این توابع بافری برای داده‌های دیوایس RAS شما در اختیارتون قرار میدن، یکی برای وضعیت و دیگری داده‌ها؛ ولی چون شما با داده ها کاری ندارین (یعنی DotRas براتون هندل می‌کنه، که اصولاً فکر کنم بتونید status رو هم با همون بگیرید!) پس همونطورکه قبلاً هم گفتم بهتره از تابع RasGetConnectStatus (http://msdn.microsoft.com/en-us/library/windows/desktop/aa377503%28v=vs.85%29.aspx) استفاده کنید که هندلی که باید بعنوان پارامتر اول بهش بدین از تابع RasDial (http://msdn.microsoft.com/en-us/library/windows/desktop/aa377004%28v=vs.85%29.aspx) بدست میارید و ...
معنی ... هم اینه که من هیچوقت با #C چنین کارهایی رو نمی‌کنم و بهمین دلیل نمی‌تونیم از صفر تا 100 رو تو این زبان براتون تشریح کنم، در زبان C++‎‎‎‎‎‎/C هم که منابع رو معرفی کردم براتون؛ همونطورکه گفتم، میگم و باز هم خواهم گفت کار در یک زبان مدیریت شده برای چنین کارهای سیستمی خیلی ناجور و اعصاب خوردکن هست، واسه همین ادامه نمیدم.
خداوند یار و نگهدارتون باشه و موفق باشید...