0

我在 visaul c++ 中有一个数据库和一个winform应用程序。db 有两列 Date 和 Temp。这些值由不同的 c++ 程序自动插入到数据库中,该程序计划每 2-3 秒运行一次。在表单中有一个“显示绘图”按钮,单击该按钮将显示日期与温度图。我能够做到这一点。但是,我想要的是该图表会根据数据库中的新值不断更新……类似于心跳监视器或类似的效果。我怎样才能做到这一点。请建议我如何在 Visual C++ 和 THREAD 编程中使用 winform 项目来做到这一点

里德斯

PS:当我在 Visual C++ 中使用 Winform 应用程序时,会为图片元素生成很多代码。一些可能有帮助的部分是:

private: System::Void temperature_btn_Click(System::Object^  sender, System::EventArgs^  e) {

             String^  constring = L"datasource=localhost;port=3306;username=root;password=root;";
             MySqlConnection^ conDataBase = gcnew MySqlConnection(constring);
             MySqlCommand^ cmdDataBase = gcnew MySqlCommand("select * from `data`.`test`;",conDataBase); 
             MySqlDataReader^ myReader;

             try{
                 conDataBase->Open();
                 myReader = cmdDataBase->ExecuteReader();
                // MessageBox::Show("Data Inserted");
                 while(myReader->Read()){

                     String^ v_datetime;
                     String^ v_pressure;
                     v_datetime = myReader->GetString("datetime");
                     v_pressure = myReader->GetInt32("temp").ToString();

                     String^ status;
                     if (myReader->GetInt32("temp") > 1000 && myReader->GetInt32("temp") < 50 )
                     {
                         status = " Abnormal ";
                         this->chart2->Series["Temperature"]->Color = System::Drawing::Color::Red;
                     }
                     else{
                        status = " Normal";
                     }

                     this->label3->Text = status;

                     this->chart2->Series["Temperature"]->Points->AddXY(v_datetime,myReader->GetInt32("temp"));
                    // comboBox1->Items->Add(vName);

                 }
             }catch(Exception^ex){
                 MessageBox::Show(ex->Message);
             }


     }

需要做什么才能使这种动态化...即,图表会定期从数据库中提取值...例如每 3-5 秒一次(数据库每 2-3 秒被另一个完全不相关的进程更新一次)

PS 编辑 2:对不起...我应该说清楚...如何通过线程执行此操作...我再次为不清楚而道歉

4

1 回答 1

1

计时器添加到您的 Windows 窗体(从工具箱)并为 Tick 事件注册一个 EventHandler。还将“Intervall”设置为您想要的值。然后将属性“启用”设置为“真”或在“Form_Loaded”事件处理程序中手动启动它。

于 2013-07-10T12:58:42.153 回答