未初始化的串行端口属性是否具有使用默认构造函数时的默认值? | 您所在的位置:网站首页 › serial函数 › 未初始化的串行端口属性是否具有使用默认构造函数时的默认值? |
如果使用默认构造函数或无参数构造函数创建串行端口,则会为该端口提供默认值。从文档中: // 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 实验室设备网 版权所有 |