主窗口一个textbox与btnstart按钮
代码是使用别人!只是去掉部分不用的!只用于拨号!用于辅助打电话!
form1
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Windows.Forms; using System.Data; using System.Drawing; using System.Threading; namespace DialUp { public partial class Form1 : Form { static String str11; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (btnStart.Text == "开始") { str11 = textBox1.Text; btnStart.Text = "停止"; timer2.Enabled = true; int ModemCount = int.Parse(GetConfig("ComCount")); for (int i = 0; i < ModemCount; i++) { queue.Enqueue(i + 1); } } else { btnStart.Text = "开始"; timer2.Enabled = false; while (queueThread.Count > 0) { try { Thread t = queueThread.Dequeue(); t.Join(); t.Abort(); } catch { } } } } private void timer2_Tick(object sender, EventArgs e) { if (queue.Count > 0) { Thread t = new Thread(Dial); t.Start(); queueThread.Enqueue(t); } } /// <summary>任务队列</summary> private static System.Collections.Generic.Queue<int> queue = new Queue<int>(); /// <summary>线程队列 </summary> private static System.Collections.Generic.Queue<Thread> queueThread = new Queue<Thread>(); private static System.Text.StringBuilder sbMsg = new StringBuilder(); private static void Dial() { int index = queue.Dequeue(); sbMsg.Insert(0, "启动端口" + index + "\r\n"); try { CommPort port = new CommPort(); port.PortNum = GetConfig(string.Format("Com_{0}_PortNum", index));//端口名称 port.BaudRate = int.Parse(GetConfig(string.Format("Com_{0}_BaudRate", index))); //串口通信波特率 ,每秒位数 port.ByteSize = byte.Parse(GetConfig(string.Format("Com_{0}_ByteSize", index))); //数据位 port.Parity = byte.Parse(GetConfig(string.Format("Com_{0}_Parity", index))); //奇偶校验 port.StopBits = byte.Parse(GetConfig(string.Format("Com_{0}_StopBits", index))); //停止位 port.ReadTimeout = 100; //读超时时间 if (!port.Opened) port.Open();//打开串口 //初始化modem string[] strInit = GetConfig(string.Format("Com_{0}_Init", index)).Split('|'); foreach (string str in strInit) { if (str == string.Empty) continue; string strData = str + "\r"; port.Write(System.Text.Encoding.ASCII.GetBytes(strData)); //Thread.Sleep(1000); port.Read(200); } //拨号 //string strDial = GetConfig(string.Format("Com_{0}_Dial", index)) + "\r"; string strDial = "ATDT" + str11 + "\r"; int dCount = int.Parse(GetConfig(string.Format("Com_{0}_dCount", index))); int wCount = int.Parse(GetConfig(string.Format("Com_{0}_wCount", index))); //挂机指令 string strShutdown = GetConfig(string.Format("Com_{0}_Shutdown", index)) + "\r"; bool isConntion = false; for (int k = 0; k < dCount; k++) { //拨号 //port.Write(System.Text.Encoding.ASCII.GetBytes(strShutdown)); //拨号前挂机 port.Write(System.Text.Encoding.ASCII.GetBytes(strDial)); //等待20秒 for (int j = 0; j < wCount; j++) { string strRe = System.Text.Encoding.ASCII.GetString(port.Read(1000)); sbMsg.Insert(0, "端口" + index + "拨号" + k + "/" + j + "\r\n"); //应答有NO DIALTONE字符表示拨号失败 ,busy表示忙音 if (strRe.Index