高分 求一modem 拨号程序,要求是C#版 呵呵.给我也来一份 谢谢[email protected] UP 接分. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System;using System.Collections.Generic;using System.Text;using System.IO.Ports;using System.Threading;namespace Rs232{ public class Modem { public struct AttachedModem { public string Port; public string ModemModel; } private SerialPort _port; private string _pname = ""; private int _boudrate = 0; private string _answer; private SetCallback _call = null; public delegate void SetCallback(Modem modcall); // COM端口 public string PortNumber { get {return _pname ;} set {_pname=value ;} } //端口波特率 public string PortBoudrate { get {return _boudrate.ToString() ;} set {_boudrate=int.Parse(value) ;} } // 默认波特率(只读) public virtual int DefaultBoudrate { get {return 9600;} } //Modem应答命令(只读) public string ModemAnswer { get {return _answer ;} } // First constructor public Modem(SerialPort prt, SetCallback c) { _call = c; _port = prt; _port.DataReceived+=new SerialDataReceivedEventHandler(this.DataReceived); if (_pname == "") _pname = Modem.FirstAttachedModem().Port ; if (_boudrate == 0) _boudrate = this.DefaultBoudrate ; OpenModem(); } // Second constructor public Modem(SerialPort prt, string prtnum, SetCallback c) { _call = c; _port = prt; _port.DataReceived += new SerialDataReceivedEventHandler(this.DataReceived); this.PortNumber = prtnum; this.PortBoudrate = this.DefaultBoudrate.ToString(); OpenModem(); } public Modem():this(new SerialPort(), null) { } private void AnalyzeAnswer() { if (_answer.Length > 0 && _call!=null) { _call(this); } } //打开 private void OpenModem() { this.CloseModem(); _port.PortName = _pname; _port.BaudRate = _boudrate; _port.Open(); this.InitializeModem(); } //关闭 public void CloseModem() { if (_port.IsOpen) _port.Close(); } //发送命令 protected void SendCommandToModem(string command) { _answer = ""; if (!_port.IsOpen) this.OpenModem(); _port.Write(command); } // Modem初始化,AT命令。 E0意思是不回显。 protected virtual void InitializeModem() { this.SendCommandToModem("ATE0\r"); } // 查找制造商,AT命令I4 public virtual void GetManufacturer() { this.SendCommandToModem("ATI4\r"); } // 查找产品编号,AT命令I0 public virtual void GetProductId() { this.SendCommandToModem("ATI0\r"); } // 查找COM端口 // 返回制造商信息,芯片版本号 public static AttachedModem FirstAttachedModem() { AttachedModem am = new AttachedModem(); SerialPort sp = new SerialPort(); string port, answer; for (int i = 1; i <= 8; i++) { port = "COM" + i.ToString(); sp.PortName = port; sp.BaudRate = 9600; try { sp.Open(); if (sp.IsOpen) { sp.Write("ATE0\r"); Thread.Sleep(200); answer = sp.ReadExisting().Replace("ATE0","").Trim().ToUpper(); if (answer == "OK") { sp.Write("ATI4I3\r"); Thread.Sleep(200); answer = sp.ReadExisting().Trim().ToUpper().Replace("\r\nOK","").Trim().Replace("\r\n",""); am.Port = port; am.ModemModel = answer; sp.Close(); break; } } if (sp.IsOpen) sp.Close(); } catch (Exception) {} } return am; } private void DataReceived(object sender, SerialDataReceivedEventArgs e) { _answer = _port.ReadExisting().Trim().Replace("\r\n\r\n","\r\n"); this.AnalyzeAnswer(); } }} socket 的Send和 Receive winform用户控件中添加事件 如何新建文件 获取网页源码时:当前上下文中不存在名称“Encoding” ====没分了,问个小问题。怎么对Settings.settings执行写操作??=== 100分,再次求助DataGrid VC与C#之间的TCP通讯问题 sql里怎么今天也就是当天凌晨和午夜的日期时间啊,急急急急急急~~~~~~~ 两个简单问题? 求 C#对FAX的编程教程 我想学asp.net,该如何上手???给小弟一点建议 C#中值类型有“预定义类型”这是什么意思啊?我是新手!急救!
using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;
using System.Threading;namespace Rs232
{
public class Modem
{
public struct AttachedModem
{
public string Port;
public string ModemModel;
} private SerialPort _port;
private string _pname = "";
private int _boudrate = 0;
private string _answer;
private SetCallback _call = null; public delegate void SetCallback(Modem modcall); // COM端口
public string PortNumber
{
get {return _pname ;}
set {_pname=value ;}
} //端口波特率
public string PortBoudrate
{
get {return _boudrate.ToString() ;}
set {_boudrate=int.Parse(value) ;}
} // 默认波特率(只读)
public virtual int DefaultBoudrate
{
get {return 9600;}
} //Modem应答命令(只读)
public string ModemAnswer
{
get {return _answer ;}
} // First constructor
public Modem(SerialPort prt, SetCallback c)
{
_call = c;
_port = prt;
_port.DataReceived+=new SerialDataReceivedEventHandler(this.DataReceived);
if (_pname == "") _pname = Modem.FirstAttachedModem().Port ;
if (_boudrate == 0) _boudrate = this.DefaultBoudrate ;
OpenModem();
}
// Second constructor
public Modem(SerialPort prt, string prtnum, SetCallback c)
{
_call = c;
_port = prt;
_port.DataReceived += new SerialDataReceivedEventHandler(this.DataReceived);
this.PortNumber = prtnum;
this.PortBoudrate = this.DefaultBoudrate.ToString();
OpenModem();
} public Modem():this(new SerialPort(), null) { } private void AnalyzeAnswer()
{
if (_answer.Length > 0 && _call!=null)
{
_call(this);
}
} //打开
private void OpenModem()
{
this.CloseModem();
_port.PortName = _pname;
_port.BaudRate = _boudrate;
_port.Open();
this.InitializeModem();
}
//关闭
public void CloseModem()
{
if (_port.IsOpen) _port.Close();
} //发送命令
protected void SendCommandToModem(string command)
{
_answer = "";
if (!_port.IsOpen) this.OpenModem();
_port.Write(command);
} // Modem初始化,AT命令。 E0意思是不回显。
protected virtual void InitializeModem()
{
this.SendCommandToModem("ATE0\r");
} // 查找制造商,AT命令I4
public virtual void GetManufacturer()
{
this.SendCommandToModem("ATI4\r");
} // 查找产品编号,AT命令I0
public virtual void GetProductId()
{
this.SendCommandToModem("ATI0\r");
} // 查找COM端口
// 返回制造商信息,芯片版本号
public static AttachedModem FirstAttachedModem()
{
AttachedModem am = new AttachedModem();
SerialPort sp = new SerialPort();
string port, answer; for (int i = 1; i <= 8; i++)
{
port = "COM" + i.ToString();
sp.PortName = port;
sp.BaudRate = 9600; try
{
sp.Open();
if (sp.IsOpen)
{
sp.Write("ATE0\r");
Thread.Sleep(200);
answer = sp.ReadExisting().Replace("ATE0","").Trim().ToUpper();
if (answer == "OK")
{
sp.Write("ATI4I3\r");
Thread.Sleep(200);
answer = sp.ReadExisting().Trim().ToUpper().Replace("\r\nOK","").Trim().Replace("\r\n","");
am.Port = port;
am.ModemModel = answer;
sp.Close();
break;
}
}
if (sp.IsOpen) sp.Close();
}
catch (Exception) {}
}
return am;
} private void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
_answer = _port.ReadExisting().Trim().Replace("\r\n\r\n","\r\n");
this.AnalyzeAnswer();
}
}
}