選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

72 行
1.7 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO.Ports;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace ModbusDemo.Device
  9. {
  10. public class SerialPortAdapter:IStreamResource
  11. {
  12. private string NewLine = Environment.NewLine;
  13. private SerialPort _serialPort;
  14. public SerialPortAdapter(SerialPort serialPort)
  15. {
  16. Debug.Assert(serialPort != null, "Argument serialPort cannot be null.");
  17. _serialPort = serialPort;
  18. _serialPort.NewLine = NewLine;
  19. }
  20. public int InfiniteTimeout
  21. {
  22. get { return SerialPort.InfiniteTimeout; }
  23. }
  24. public int ReadTimeout
  25. {
  26. get { return _serialPort.ReadTimeout; }
  27. set { _serialPort.ReadTimeout = value; }
  28. }
  29. public int WriteTimeout
  30. {
  31. get { return _serialPort.WriteTimeout; }
  32. set { _serialPort.WriteTimeout = value; }
  33. }
  34. public void DiscardInBuffer()
  35. {
  36. _serialPort.DiscardInBuffer();
  37. }
  38. public int Read(byte[] buffer, int offset, int count)
  39. {
  40. return _serialPort.Read(buffer, offset, count);
  41. }
  42. public void Write(byte[] buffer, int offset, int count)
  43. {
  44. _serialPort.Write(buffer, offset, count);
  45. }
  46. public void Dispose()
  47. {
  48. Dispose(true);
  49. GC.SuppressFinalize(this);
  50. }
  51. protected virtual void Dispose(bool disposing)
  52. {
  53. if (disposing)
  54. {
  55. _serialPort?.Dispose();
  56. _serialPort = null;
  57. }
  58. }
  59. }
  60. }