0

シリアルポートからデータを取得するクラスがあり、LDR が 1 と 0 だけを測定するスイッチの量を受け取ります。

プログラムが実行されている限り、これをクラスに保存したいのですが、マネージ変数を使用してこれを達成するにはどうすればよいですか?

シリアル クラスは毎秒実行されるので、現在使用しているオープン クラスを作成すると StoreClass Store

Store.Value = LDR_Value; // LDR_Value is the value from the serial bus

これを行うと、常に StoreClass のコピーが作成され、それはうまくいきません。

ここで私を助けてください。

4

2 に答える 2

1

あなたが正しく理解している場合、受け取ったすべての値をコンテナに保存する必要があります。という名前のクラスがある場合、メンバーをStoreClass作成してこれを行うことができます。vector

class StoreClass
{
  public:
    void AddValue(int v) { m_values.push_back(v); }

  private:
    std::vector<int> m_values; // Stores all values in order of arrival.
}

これで、クラスのインスタンスが 1 つだけ必要になります。

int main()
{
  StoreClass storage;
  while(StillSerialInput())
  {
    storage.AddValue(GetSerialValue());
  }
}
于 2012-09-12T05:30:38.937 に答える
0

データをコンテナーに蓄積する場合は、標準のコンテナーを使用します。std::vectorあなたの仕事の良いコンテナとして十分だと思います:

#include <vector>

using namespace std;

int main()
{
   vector<DataType> dataReceived; //define data container

   DataType buffer; //type of your data
   while(recevingFromDevice) //loop that keeps running as long as you're receiving from your device
   {
      buffer = getDataFromDevice(); //buffer what you receive from the device
      dataReceived.push_back(buffer); //add this buffer to the stack of data
   }
   //now dataReceived is an array with all received data
}
于 2012-09-12T05:30:04.647 に答える