[問題] 串列埠的委派接收要怎介面化
各位好:
目前可以執行的程式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
推
06/15 20:35,
4年前
, 1F
06/15 20:35, 1F
→
06/15 20:37,
4年前
, 2F
06/15 20:37, 2F
→
06/15 20:37,
4年前
, 3F
06/15 20:37, 3F
→
06/15 20:37,
4年前
, 4F
06/15 20:37, 4F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章