PDA

View Full Version : سوال: چطوری پورت مودم های سیستم را پیدا کنم؟



scorpion_sincity
پنج شنبه 05 خرداد 1390, 12:30 عصر
با سلام

چطوری می تونم تو لیست device manager بگردم و پورت مودم های موجود را پیدا کنم؟؟
مثلا: COM2

ممنون

Open-Source
پنج شنبه 05 خرداد 1390, 13:02 عصر
System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort();

for (int i = 1; i < 10; i++)
{
try
{
sp.PortName = "COM" + i;
sp.Open();
sp.Write("AT\r");
System.Threading.Thread.Sleep(200);
if (sp.ReadExisting().ToUpper().Contains("OK"))
comboBox1.Items.Add(sp.PortName);

sp.Close();
}
catch
{

}
}
sp.Close();

scorpion_sincity
پنج شنبه 05 خرداد 1390, 13:23 عصر
واقعا ممنون
عالی بود
عالیی

ی سوال دیگه
چطوری می تونم اسم device اون پورت رو هم داشته باشم؟؟

Open-Source
پنج شنبه 05 خرداد 1390, 14:12 عصر
در مورد AT Command سرچ بزن و دستوری که برای پیدا کردن مدل Device بکار میره رو پیدا کن.
(فکر کنم ATI4 برای پیدا کردن مدل استفاده میشد:متفکر:)

scorpion_sincity
پنج شنبه 05 خرداد 1390, 15:15 عصر
در مورد AT Command سرچ بزن و دستوری که برای پیدا کردن مدل Device بکار میره رو پیدا کن.
(فکر کنم ATI4 برای پیدا کردن مدل استفاده میشد:متفکر:)

ATI4 رو کجا بنویسم؟؟
چطوری؟؟؟

omn!a2
پنج شنبه 05 خرداد 1390, 15:55 عصر
ATI4 رو کجا بنویسم؟؟
چطوری؟؟؟

AT+CGMI برای گرفتن نام كارخانه سازنده دستگاه

موفق باشی

Open-Source
پنج شنبه 05 خرداد 1390, 16:11 عصر
یه کلاس ساده نوشتم برای کا با مودم باستفاده از ATCommand که این کارها رو میکنه:
1.پرت همه مودم های فعال رو بر میگردونه
2.یه شماره پرت میگیره و مدل مودم رو بر میگردونه
3.شماره گیری - توقف شماره گیری - redial
4.یه تابع که دستوارت AT رو اجرا میکنه.

اینم از این کلاس:

/*
*
* http://open-source.blogfa.com
*
*/
using System;
using System.Collections.Generic;
using System.Text;
/////
using System.IO.Ports;
using System.Threading;
using System.Collections;

namespace Tele
{
class AmirOpenSourceModemClass
{
private SerialPort serialPort = new SerialPort();

//************************************************** ******************************** لیست همه مودم ها
/// <summary>
/// Return List Of Modems With AT Command Support in ArrayList DataType
/// </summary>
/// <returns></returns>
public ArrayList List_Of_Modem_Port()
{
Array comPorts = SerialPort.GetPortNames();//Get Active Ports
ArrayList modemPorts = new ArrayList();
SerialPort sp = new SerialPort();

foreach (string portName in comPorts)
{
try
{
if (sp.IsOpen) sp.Close();
sp.PortName = portName;
sp.Open();
sp.Write("AT\r\n");
Thread.Sleep(200);
if (sp.ReadExisting().ToUpper().Contains("OK"))
modemPorts.Add(sp.PortName);
}
catch { }
}

return modemPorts;
}

//************************************************** ******************************** گرفتن نام پرت و برگرداندن مدل مودم
/// <summary>
/// Get PortName And Return Device Model
/// </summary>
/// <param name="portName"></param>
/// <returns></returns>
public string Get_ModemName_By_PortName(string portName)
{
SerialPort sp = new SerialPort();
string result = "";

sp.PortName = portName;

if (!sp.IsOpen)
sp.Open();

sp.Write("ATI4" + "\r\n");
Thread.Sleep(200);

result = sp.ReadLine();//Command
result = sp.ReadLine();//Empty Line
result = sp.ReadLine();//Model
//result = sp.ReadExisting();
sp.Close();
return result;
}

//************************************************** ******************************** گرفتن یک شماره
/// <summary>
/// Get an Number And Dial It and Return True or False
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public void Dial_A_Number(string number, string portName)
{
if (serialPort.IsOpen) serialPort.Close();
serialPort.PortName = portName;

serialPort.Open();


serialPort.Write("ATDT" + number + "\r\n");
Thread.Sleep(200);
}

//************************************************** ******************************** کنسل کردن شماره گیری
/// <summary>
/// Cancel Dialing
/// </summary>
/// <param name="portName"></param>
public void Cancel_Dial(string portName)
{
if (serialPort.PortName == portName && serialPort.IsOpen)
{
serialPort.Write("ATH" + "\r\n");
Thread.Sleep(200);
}
else
{
if (serialPort.IsOpen) serialPort.Close();
}
}

//************************************************** ******************************** گرفتن مجدد آخرین شماره
/// <summary>
/// Redial Last Number And If Redial Is Success Return True Else Return False
/// </summary>
/// <param name="portName"></param>
/// <returns></returns>
public bool Redial_Last_Number(string portName)
{
bool bl = false;

if (serialPort.PortName == portName && serialPort.IsOpen)
{
serialPort.Write("ATDL" + "\r\n");
Thread.Sleep(200);
if (serialPort.ReadExisting().ToUpper().Contains("ATDT"))
bl = true;
}

return bl;
}

//************************************************** ******************************** اجرای یک ATCommand
/// <summary>
/// Get an ATCommand And Run It and Return ATCommand Result
/// </summary>
/// <param name="atCommand"></param>
/// <param name="portName"></param>
/// <returns></returns>
public string Run_An_ATCommand(string atCommand, string portName)
{
string result = "";

if (serialPort.PortName == portName && serialPort.IsOpen)
{
serialPort.Write(atCommand + "\r\n");
Thread.Sleep(200);
}
else
{
if (serialPort.IsOpen) serialPort.Close();
serialPort.PortName = portName;

serialPort.Open();


serialPort.Write(atCommand + "\r\n");
Thread.Sleep(200);
}
result = serialPort.ReadExisting();

return result;
}
//************************************************** ********************************

}
}



اینم یه Sample (http://open-source.persiangig.com/Blogfa/dotNet/Tele_CS.7z)