在课堂上存储数据

时间:2012-09-12 05:26:25

标签: c++

我有一个从串口接收数据的类,我收到LDR仅测量1和0的开关量。

现在我想将它存储在一个类中,只要程序运行,我如何使用托管变量完成此操作?

请注意,串行类每秒运行一次,所以当我创建一个我现在使用的类时  StoreClass商店

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

当我这样做的时候,总会有一个StoreClass的副本被创建,但这并不能解决问题。

请帮帮我。

2 个答案:

答案 0 :(得分: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.
}

现在您只需要一个班级实例:

int main()
{
  StoreClass storage;
  while(StillSerialInput())
  {
    storage.AddValue(GetSerialValue());
  }
}

答案 1 :(得分: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
}