1

この質問が何度か聞かれるのを見たことがありますが、なぜこれが機能しないのか理解できないようです。初心者を助けてください(そして優しくしてください!)。私は単純に、COM ポートの名前を受け入れるクラスを作成し、そのポートでシリアル オブジェクトを開始しようとしています。「Conexには、1つの引数を受け入れるコンストラクターが含まれていません」というエラーが表示され続けますが、含まれているのはそれだけのようです。考え?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;

namespace Conex_Commands
{

    public class Conex
    {
        string NewLine = "\r";
        int BaudRate = 921600, DataBits = 8, ReadTimeout = 100, WriteTimeout = 100;
        Parity Parity = Parity.None;
        StopBits StopBits = StopBits.One;


        public Conex(string PortName)
        {
            SerialPort Serial = new SerialPort(PortName, BaudRate, Parity, DataBits, StopBits);
            Serial.ReadTimeout = ReadTimeout;
            Serial.WriteTimeout = WriteTimeout;
            Serial.NewLine = NewLine;
        }



    }


}

メインに含まれる呼び出しコードは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conex_Commands;


namespace Tester
{
    class Program
    {
        static void Main(string[] args)
        {

            Conex abc = new Conex("COM5");
         }
    }
}
4

1 に答える 1

0

これはデバッグ目的のためだけですか?

私の VS2010 コードは、このコードでエラーを表示しません。

ただし、 のコンストラクターを呼び出すとすぐにがスコープ外に戻るためConex、書かれているようには役に立ちません。SerialPort

代わりに、Serialオブジェクトをコンストラクターの外に移動します。

public class Conex {
  string NewLine = "\r";
  int BaudRate = 921600, DataBits = 8, ReadTimeout = 100, WriteTimeout = 100;
  Parity Parity = Parity.None;
  StopBits StopBits = StopBits.One;
  SerialPort Serial;

  public Conex(string PortName) {
    Serial = new SerialPort(PortName, BaudRate, Parity, DataBits, StopBits);
    Serial.ReadTimeout = ReadTimeout;
    Serial.WriteTimeout = WriteTimeout;
    Serial.NewLine = NewLine;
  }

  public void Open() {
    Serial.Open();
  }

  public void Close() {
    Serial.Close();
  }

}

これで、ルーチン内から、Main実際に接続を開いたり閉じたりすることができます (「COM5」ポートがないため、PC で例外がスローされました)。

static void Main(string[] args) {
  Conex abc = new Conex("COM5");
  abc.Open();
  abc.Close();
}
于 2013-04-10T17:44:23.713 に答える