未初始化的串行端口属性是否具有使用默认构造函数时的默认值? 您所在的位置:网站首页 serial函数 未初始化的串行端口属性是否具有使用默认构造函数时的默认值?

未初始化的串行端口属性是否具有使用默认构造函数时的默认值?

2023-03-01 20:17| 来源: 网络整理| 查看: 265

如果使用默认构造函数或无参数构造函数创建串行端口,则会为该端口提供默认值。从文档中:

// Create a new SerialPort object with default settings. _serialPort = new SerialPort();

如果未指定默认属性值,则此构造方法使用默认属性值。例如,DataBits属性默认为8,Parity属性默认为None枚举值,StopBits属性默认为1,默认端口名称为COM1。

有几个构造函数

当使用带有参数 的构造函数时:使用带有参数的构造函数和使用默认构造函数时,不在串行端口构造函数参数内的属性是否具有相同的默认值?

这个问题中的问题,有趣的答案,评论和随后的聊天讨论让我提出了这个问题。

1> Reza Aghaei..:

您可以查看其源代码,并查看构造函数和字段定义。

你会看到所有的重要特性包括PortName,BaudRate,DataBits,Parity和StopBits有哪些,如果他们不存在构造函数的参数,默认值将被用于他们的默认值。

还有一些其他重要属性也具有默认值,尽管它们在构造函数中不存在,但是在某些情况下,它们的默认值可能不好。

例如,对于HandShake默认值Handshake.None;时,您可能需要将其设置为Handshake.XOnXOff,Handshake.RequestToSend或Handshake.RequestToSendXOnXOff。对于此特定属性,您可能需要参考Hans的注释。

看一下构造函数:

public SerialPort(System.ComponentModel.IContainer container) { container.Add(this); } public SerialPort() { } // Non-design SerialPort constructors here chain, //using default values for members left unspecified by parameters public SerialPort(string portName) : this (portName, defaultBaudRate, defaultParity, defaultDataBits, defaultStopBits) { } public SerialPort(string portName, int baudRate) : this (portName, baudRate, defaultParity, defaultDataBits, defaultStopBits) { } public SerialPort(string portName, int baudRate, Parity parity) : this (portName, baudRate, parity, defaultDataBits, defaultStopBits) { } public SerialPort(string portName, int baudRate, Parity parity, int dataBits) : this (portName, baudRate, parity, dataBits, defaultStopBits) { } public SerialPort(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits) { this.PortName = portName; this.BaudRate = baudRate; this.Parity = parity; this.DataBits = dataBits; this.StopBits = stopBits; }

这些是这些字段和默认值定义:

// ---------- default values -------------* private const int defaultDataBits = 8; private const Parity defaultParity = Parity.None; private const StopBits defaultStopBits = StopBits.One; private const Handshake defaultHandshake = Handshake.None; private const int defaultBufferSize = 1024; private const string defaultPortName = "COM1"; private const int defaultBaudRate = 9600; private const bool defaultDtrEnable = false; private const bool defaultRtsEnable = false; private const bool defaultDiscardNull = false; private const byte defaultParityReplace = (byte) '?'; private const int defaultReceivedBytesThreshold = 1; private const int defaultReadTimeout = SerialPort.InfiniteTimeout; private const int defaultWriteTimeout = SerialPort.InfiniteTimeout; private const int defaultReadBufferSize = 4096; private const int defaultWriteBufferSize = 2048; private const int maxDataBits = 8; private const int minDataBits = 5; private const string defaultNewLine = "\n"; private const string SERIAL_NAME = @"\Device\Serial"; // --------- members supporting exposed properties ------------* private int baudRate = defaultBaudRate; private int dataBits = defaultDataBits; private Parity parity = defaultParity; private StopBits stopBits = defaultStopBits; private string portName = defaultPortName; // ASCII is default encoding for modem communication, etc. private Encoding encoding = System.Text.Encoding.ASCII; private Decoder decoder = System.Text.Encoding.ASCII.GetDecoder(); private int maxByteCountForSingleChar = System.Text.Encoding.ASCII.GetMaxByteCount(1); private Handshake handshake = defaultHandshake; private int readTimeout = defaultReadTimeout; private int writeTimeout = defaultWriteTimeout; private int receivedBytesThreshold = defaultReceivedBytesThreshold; private bool discardNull = defaultDiscardNull; private bool dtrEnable = defaultDtrEnable; private bool rtsEnable = defaultRtsEnable; private byte parityReplace = defaultParityReplace; private string newLine = defaultNewLine; private int readBufferSize = defaultReadBufferSize; private int writeBufferSize = defaultWriteBufferSize;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有