2010-12-11 12 views
0

システム内の各ポートにSerialPortオブジェクトの配列が必要です。C++の文字列のリストからクラスの配列を作成する方法、初心者の質問!

public ref class CommunicatorClass 
{ 
private: 
    static array<SerialPort^>^ _serialPortList; 

public: 
    static void Main(){ 
//   _serialPortList->Initialize; 
     for each (String^ s in SerialPort::GetPortNames()) 
     { 
      Console::WriteLine(" {0}", s); 
      AddListItem(s); 

     } 
    } 

    static void AddListItem(String^ s) 
    { 
     // Get the length 
     _serialPortList->Length = _serialPortList->GetLength + 1; 

     _serialPortList[_serialPortList->GetLength] = gcnew SerialPort(s, 9600); 
    } 
}; 

が、私はC++/Windowsのプログラミングには完全に新しいです: 私の考えはそのようにそれを作ることでした。だから、はい、確かに、そこに多くのエラーがあります。誰もそれを修正してください(アイデア自体が完全な馬鹿馬鹿でない場合)とエラーのいくつかの単語を教えてください?

事前に感謝します。

+1

これはC++ではなく、C++/CLIです。マネージドコードまたはネイティブコードを対象としていますか? –

+1

そのコードはC++ではありません。あなたは非常に混乱しているようです。 –

+0

はい、そうかもしれない、私はそうした。場合は、私はちょうど違いは分かっていないです。タスクはVisual C++でやっていただけでした。以前は使用していなかったことです。だから私はmsdnのいくつかの例を見つけて、ちょうど "再加工"彼らはチュートリアルや何かを介して動作する必要があります。我々は – nico

答えて

0

システム上のすべてのシリアルポートを実際に同じボーレートで開きたいのですか?

アレイの長さを変更することはできません。新しいアレイを作成してすべてのデータをコピーする必要があります。また、別のアイテムを追加する必要があるたびにその作業を行うのは効率的ではありません。代わりにSystem::Collections::Generic::Listを使用することをお勧めします。これはすべての動的サイズ変更を処理します。

.NET SerialPortクラスは、あなただけの問題を引き起こすプログラミングスタイルになる完全なゴミであるため、C++/CLIはネイティブのWindowsシリアルポート機能を直接呼び出すことができます。もちろん、あなた自身のラッパークラスの背後にあるWindowsインターフェイスを隠したいかもしれませんが、それは十分に努力する価値があります。

+0

を参照してください、このリストクラスは本当に私の問題に興味深いと思う。私のアイデアは本当に良いではなかった前にも考えていたが、私が見つけた解決策は、1つとして不適切であった、 1つずつ別のものを1つずつ選択します。 – nico