private static void RunService() { Console.WriteLine("\r\nRun Mode:Service"); if (serailports.Length > 0) { foreach (var name in serailports) { if (name.Contains("0")) { continue; } CustomSerialPort csp = new CustomSerialPort(name, baudRate); csp.ReceivedEvent += Csp_ReceivedEvent;// Csp_DataReceived; try { csp.Open(); servicePorts.Add(name, csp); Console.WriteLine($"Service Open Uart [{name}] Succful!"); } catch (Exception ex) { Console.WriteLine($"RunService Open Uart [{name}] Exception:{ex}"); } } OpenUartTestTimer(); } }
public void drivertest() { try { CustomSerialPort sbus = new CustomSerialPort("COM3", 100000, Parity.Even, 8, StopBits.Two); sbus.ReceiveTimeoutEnable = false; //sbus.ReceiveTimeout = 1; sbus.ReceivedEvent += Sbus_ReceivedEvent; sbus.Open(); } catch (Exception eeee0) { } }
private static void OpenUart(string portName) { CloseUart(); try { csp = new CustomSerialPort(portName); csp.BaudRate = baudRate; csp.ReceivedEvent += Csp_ReceivedEvent; csp.Open(); OpenUartTestTimer(); Console.WriteLine($"open serial port:{portName} succful!baudRate:{baudRate}"); } catch (Exception ex) { Console.WriteLine($"Open Uart Exception:{ex}"); } }
public static bool OpenUart(string portName) { CloseUart(); try { m_CSP = new CustomSerialPort(portName); m_CSP.BaudRate = baudRate; m_CSP.ReceivedEvent += Csp_ReceivedEvent; m_CSP.Open(); //OpenUartTestTimer(); Console.WriteLine($"打开串口:{portName} 成功!波特率:{baudRate}"); SelectedComPort = portName; return(true); } catch (Exception ex) { SelectedComPort = null; m_CSP = null; Console.WriteLine($"打开串口失败:{ex}"); } return(false); }
/// <summary> /// 测试串口是否成功 /// </summary> /// <param name="portName"></param> public static void TestUart(string portName) { CustomSerialPort sp; try { sp = new CustomSerialPort(portName, baudRate); sp.Open(); string msg; msg = "Hello Uart"; sp.WriteLine(msg); Console.WriteLine(msg); msg = "Byebye Uart"; sp.WriteLine(msg); sp.Close(); sp.Dispose(); sp = null; Console.WriteLine(msg); } catch (Exception ex) { Console.WriteLine($"Open Uart Exception:{ex}"); } }
static void Main(string[] args) { #region Fileds AsyncTcpServer server = null; int totalNum = 0, rownum = 0, columnum = 0, usedcabinet = 0; string rangeRule = ""; string serverip = ""; int serverport = 0; #endregion #region Initial #region 读取箱体配置文件 try { ConfigLoad conip = new ConfigLoad(configPath); totalNum = conip.GetIntValue("totalNum"); rangeRule = conip.GetStringValue("rangeRule"); rownum = conip.GetIntValue("rowNum"); columnum = conip.GetIntValue("colunNum"); usedcabinet = conip.GetIntValue("usedNum"); serverip = conip.GetStringValue("ServerIP"); serverport = conip.GetIntValue("ServerPort"); } catch (Exception ex) { Logger.Custom("log/", $"load config failed with error:{ex}"); } strsend = totalNum.ToString("000") + "-" + rangeRule + "-" + rownum.ToString("000") + "-" + columnum.ToString("000") + "-" + usedcabinet.ToString("000"); Console.WriteLine(strsend); #endregion #region 启动服务器 try { Console.WriteLine("sever is starting....."); Logger.Custom("log/", "sever is starting....."); server = new AsyncTcpServer(IPAddress.Parse("192.168.2.20"), 10001); //server = new AsyncTcpServer(IPAddress.Parse("127.0.0.1"), 10001); server.ClientConnected += new EventHandler <TcpClientConnectedEventArgs>(Server_ClientConnected); server.ClientDisconnected += new EventHandler <TcpClientDisconnectedEventArgs>(Server_ClientDisconnected); server.PlaintextReceived += new EventHandler <TcpDatagramReceivedEventArgs <string> >(Server_PlaintextReceived); server.Start(); Console.WriteLine($"server is started"); Logger.Custom("log/", "server is started"); } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"server starting excetpiton:{ex.Message}"); } #endregion #region 建立客户端 IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(serverip), serverport); AsyncTcpClient = new AsyncTcpClient(iPEndPoint); //AsyncTcpClient.DatagramReceived += AsyncTcpClient_DatagramReceived; try { AsyncTcpClient.Connect(); } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"建立服务器连接出错:{ex.Message}"); } #endregion #region 启动串口 string[] names = CustomSerialPort.GetPortNames(); foreach (var item in names) { Console.WriteLine(item); } try { mySer = new CustomSerialPort("/dev/COM1", 9600); //mySer = new CustomSerialPort("COM1", 9600); Console.WriteLine($"PortName:{mySer.PortName}"); if (mySer != null) { mySer.ReceivedEvent += MySer_DataReceived; if (mySer.Open()) { Console.WriteLine("Serial Open Success!"); Logger.Custom("log/", $"Serial Open Success!"); } } } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"Serial Opening exception:{ex.Message}"); } #endregion #region 初始化逻辑 //1是开,2关 logicals.Clear(); logicals.Add(new Logical("N-O-D-R", 1, "2", "1", 2)); logicals.Add(new Logical("A-O-D-R", 1, "2", "1", 2)); logicals.Add(new Logical("A-R-D-R", 1, "2", "1", -1)); logicals.Add(new Logical("C-R-D-R", -1, "-1", "1", -1)); #endregion #region 检查柜门状态 lock (objPortLock) { mySer.Write(readOneall); Thread.Sleep(500); mySer.Write(readsecondAll); Thread.Sleep(500); } for (int i = 0; i < 60; i++) { if (CheckLockState(i + 1) == 2) { isNormalClose[i] = true; } if (i < 3) { Console.WriteLine($"D{i.ToString("000")} is normalClosed:{isNormalClose[i].ToString()}"); } } #endregion Console.WriteLine($"状态数组当前的大小时:{sourcebyte.Length}"); foreach (var item in sourcebyte) { Console.WriteLine(item.ToString("X")); } #endregion while (true) { lock (objPortLock) { try { mySer.Write(readOneall); Thread.Sleep(500); mySer.Write(readsecondAll); Thread.Sleep(500); } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"主程序出错:{ex.Message}"); } } for (int i = 0; i < 60; i++) { #region 检查非法开门 if (isNormalClose[i] && CheckLockState(i + 1) == 1 && !isSendError[i]) { if (!AsyncTcpClient.Connected) { try { Console.WriteLine("client disconnect!"); AsyncTcpClient = new AsyncTcpClient(iPEndPoint); AsyncTcpClient.Connect(); if (AsyncTcpClient.Connected) { AsyncTcpClient.Send(Encoding.Default.GetBytes($"D{(i + 1).ToString("000")} is opened Illegally!")); isSendError[i] = true; Console.WriteLine($"D{i + 1}非法开门了!"); } } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"建立服务器连接出错:{ex.Message}"); } } else { AsyncTcpClient.Send(Encoding.Default.GetBytes($"D{(i+1).ToString("000")} is opened Illegally!")); isSendError[i] = true; Console.WriteLine($"D{i + 1}非法开门了!"); } } #endregion #region 等待非法开门关门 if (isSendError[i] && CheckLockState(i + 1) == 2) { if (!AsyncTcpClient.Connected) { try { Console.WriteLine("client disconnect!"); AsyncTcpClient = new AsyncTcpClient(iPEndPoint); AsyncTcpClient.Connect(); if (AsyncTcpClient.Connected) { AsyncTcpClient.Send(Encoding.Default.GetBytes($"D{(i + 1).ToString("000")} is Closed!")); isSendError[i] = false; } } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"建立服务器连接出错:{ex.Message}"); } } else { AsyncTcpClient.Send(Encoding.Default.GetBytes($"D{(i+1).ToString("000")} is closed!")); isSendError[i] = false; } } #endregion } //delete threedays ago logger if (DateTime.Now.Hour == 0 && DateTime.Now.Minute == 0 && DateTime.Now.Second < 10) { //删除文件 for (int i = 0; i < Directory.GetFiles("log").ToList().Count; i++) { try { string filestr = Directory.GetFiles("log")[i]; string date = filestr.Substring(4, filestr.Length - 8); DateTime recoderdate = Convert.ToDateTime(date); TimeSpan timespan = DateTime.Now - recoderdate; if (timespan > new TimeSpan(72, 0, 0)) { File.Delete(Directory.GetFiles("log")[i]); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } } } }
private static void Server_PlaintextReceived(object sender, TcpDatagramReceivedEventArgs <string> e) { Console.WriteLine($"recv from { e.TcpClient.Client.RemoteEndPoint.ToString()}: {e.Datagram}"); Logger.Custom("log/", $"recv from { e.TcpClient.Client.RemoteEndPoint.ToString()}: {e.Datagram}"); #region 指令正确时 if (e.Datagram.Length == 10) { #region【1】定义变量 int index; #endregion #region【2】数据处理 try { int.TryParse(e.Datagram.Substring(5, 3), out index); } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"Data Received from { e.TcpClient.Client.RemoteEndPoint.ToString()} exception:{ex.Message}"); byte[] msg = Encoding.Default.GetBytes("ErrorRequest!"); e.TcpClient.GetStream().Write(msg, 0, msg.Length); // return confirmation return; } string cmd = e.Datagram.Remove(5, 3); #endregion #region【3】 处理逻辑 if (mySer != null && mySer.IsOpen) { DealwithCmd(cmd, index, e.TcpClient); } #endregion #region 串口未打开时的异常处理 else { try { mySer.Open(); // if (mySer.ReceivedEvent } catch (Exception ex) { Console.WriteLine(ex.Message); Logger.Custom("log/", $"Serial Opening exception:{ex.Message}"); } byte[] msg = Encoding.Default.GetBytes("SerialComunicationError!"); e.TcpClient.GetStream().Write(msg, 0, msg.Length); // return confirmation } #endregion } #endregion #region 指令异常时 else { byte[] msg = Encoding.Default.GetBytes("ErrorRequest!-CMDLengthError"); e.TcpClient.GetStream().Write(msg, 0, msg.Length); // return confirmation } #endregion }
public void OpenSerialPort(string portName, int baudRate) { serialPort.Open(portName, baudRate); }