using EGFramework; public class ModelSerialServer : EGModule,IEGFramework { public int SerialServerPort { set; get; } = 6550; public int SerialServerPortBackUp { set; get; } = 6551; public List SerialNames { set; get; } = new List(); public override void Init() { this.EGTCPServerListen(SerialServerPort); this.EGOnMessage(); this.EGOnMessage(); this.EGRegisterMessageEvent(OnReceivedFromTCP); this.EGRegisterMessageEvent(OnReceivedFromSerialPort); EG.Print("串口转TCP服务已开启!"); // throw new NotImplementedException(); } public void SendToSerial(ResponseSerialServer res) { if (!SerialNames.Contains(res.SerialPort) && res.BaudRate != 0) { this.EGSerialPort().Open(res.SerialPort, res.BaudRate); SerialNames.Add(res.SerialPort); } EG.Print("Send Serial : " + res.StringData); this.EGSendMessage(new RequestSerialPort(res), res.SerialPort, ProtocolType.SerialPort); } public void SendToClient(byte[] data,string serialPortName) { if (this.EGTCPServer().LinkedIPs.ContainsKey(6550)) { EG.Print("Send Client : " + data.ToStringByHex()); foreach (string sender in this.EGTCPServer().LinkedIPs[6550]) { this.EGSendMessage(new RequestSerialRevert(data,serialPortName), sender, ProtocolType.TCPServer); } } } public void OnReceivedFromTCP(ResponseSerialServer tcpData,string sender,ProtocolType protocol) { if(protocol == ProtocolType.TCPServer && this.EGTCPServer().LinkedIPs[6550].Contains(sender)) { SendToSerial(tcpData); } } public void OnReceivedFromSerialPort(ResponseSerialPort serialData,string sender,ProtocolType protocol) { if(protocol == ProtocolType.SerialPort) { SendToClient(serialData.Data,sender); } } }