//using System; //using System.Collections.Generic; //using System.IO; //using System.IO.Ports; //namespace SetTools.Serial //{ // class Uart // { // public SerialPort serial = new SerialPort(); // public event EventHandler UartDataRecived; // public event EventHandler UartDataSent; // private Stream lastPortBaseStream = null; // private static readonly object objLock = new object(); // /// // /// 初始化串口各个触发函数 // /// // public Uart() // { // //声明接收到事件 // serial.DataReceived += Serial_DataReceived; // } // /// // /// 刷新串口对象 // /// // private void refreshSerialDevice() // { // try // { // lastPortBaseStream?.Dispose(); // } // catch (Exception e) // { // Console.WriteLine($"portBaseStream?.Dispose error:{e.Message}"); // } // try // { // serial.BaseStream.Dispose(); // } // catch (Exception e) // { // Console.WriteLine($"serial.BaseStream.Dispose error:{e.Message}"); // } // serial.Dispose(); // serial = new SerialPort(); // //声明接收到事件 // //serial.DataReceived += Serial_DataReceived; // //serial.BaudRate = 57600;// Tools.Global.setting.baudRate; // //serial.Parity = (Parity)Tools.Global.setting.parity; // //serial.DataBits = Tools.Global.setting.dataBits; // //serial.StopBits = (StopBits)Tools.Global.setting.stopBit; // } // /// // /// 获取串口设备COM名 // /// // /// // public string GetName() // { // return serial.PortName; // } // /// // /// 设置串口设备COM名 // /// // /// // public void SetName(string s) // { // serial.PortName = s; // } // /// // /// 查看串口打开状态 // /// // /// // public bool IsOpen() // { // return serial.IsOpen; // } // /// // /// 开启串口 // /// // public void Open() // { // string temp = serial.PortName; // refreshSerialDevice(); // serial.PortName = temp; // serial.Open(); // lastPortBaseStream = serial.BaseStream; // } // /// // /// 关闭串口 // /// // public void Close() // { // refreshSerialDevice(); // serial.Close(); // } // /// // /// 发送数据 // /// // /// 数据内容 // public void SendStringData(byte[] data) // { // if (IsOpen()) // { // if (data.Length == 0) // return; // serial.Write(data, 0, data.Length); // Tools.Global.setting.SentCount += data.Length; // UartDataSent(data, EventArgs.Empty);//回调 // } // } // //接收到事件 // private void Serial_DataReceived(object sender, SerialDataReceivedEventArgs e) // { // lock (objLock) // { // if(Tools.Global.setting.timeout > 0) // System.Threading.Thread.Sleep(Tools.Global.setting.timeout);//等待时间 // List result = new List(); // while (true)//循环读 // { // if (!serial.IsOpen)//串口被关了,不读了 // break; // try // { // int length = ((SerialPort)sender).BytesToRead; // if (length == 0)//没数据,退出去 // break; // byte[] rev = new byte[length]; // ((SerialPort)sender).Read(rev, 0, length);//读数据 // if (rev.Length == 0) // break; // result.AddRange(rev);//加到list末尾 // }catch { break; }//崩了? // if (result.Count > Tools.Global.setting.maxLength)//长度超了 // break; // if (Tools.Global.setting.bitDelay && Tools.Global.setting.timeout > 0)//如果是设置了等待间隔时间 // { // System.Threading.Thread.Sleep(Tools.Global.setting.timeout);//等待时间 // } // } // Tools.Global.setting.ReceivedCount += result.Count; // if(result.Count > 0) // UartDataRecived(result.ToArray(), EventArgs.Empty);//回调事件 // System.Diagnostics.Debug.WriteLine("end"); // } // } // ///// // ///// 发送数据 // ///// // ///// 数据内容 // //public Boolean send(TerminalCommand tc) // //{ // // if (size == 0) // // return false; // // try // // { // // Constants.GpsWebService.SaveTerminalCommand(tc); // // serial.Write(data, 0, size); // // Tools.Global.setting.SentCount += size; // // UartDataSent(data, EventArgs.Empty);//回调 // // } // // catch (Exception ex) // // { // // return false; // // } // // return true; // //} // } //}