看板 C_Sharp 關於我們 聯絡資訊
各位好: 目前可以執行的程式Serial Port的接收端程式 由於現在想要在介面中添加SerialDataReceivedEventHandler, 以方便後面做單元測試(就是要開介面)。 // 程式碼To Do部分 想詢問各位高手,介面開啟後 event SerialDataReceivedEventHandler PortDataReceived 要找尋什麼資料,現在用委派的Function要怎麼轉介面化?目前卡關在這邊。 public interface ISerialPort { void Open(); void Close(); void WriteLine(byte[] ByteData); // To Do // event SerialDataReceivedEventHandler PortDataReceived; bool CheckOpenStaus(); } public class DevicePort : ISerialPort { private SerialPort _serialPort; private Queue<byte> _dataReceive; public DevicePort() { _dataReceive = new Queue<byte>(); _serialPort = new SerialPort($"COM4", 19200); _serialPort.DataReceived += new SerialDataReceivedEventHandler(PortDataReceived); } public void Open() { _serialPort.Open(); } public void Close() { _serialPort.Close(); } public void WriteLine(byte[] ByteData) { _serialPort.Write(ByteData, 0, ByteData.Length); _dataReceive.Clear(); } private void PortDataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] buffer = new byte[4]; int length = (sender as SerialPort).Read(buffer, 0, buffer.Length); foreach (byte i in buffer) _dataReceive.Enqueue(i); } public bool CheckOpenStaus() { return _serialPort.IsOpen; } } 以上 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.140.12.132 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1591697471.A.48F.html
Litfal: 介面一樣宣告成event 06/15 20:35
Litfal: 然後實作event把資料丟出去 06/15 20:37
Litfal: e-reference/keywords/event 06/15 20:37