嵌入式課程設(shè)計-- 基于嵌入式系統(tǒng)的傳感器環(huán)境檢測_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  嵌入式系統(tǒng)軟件開發(fā)課程設(shè)計報告</p><p>  題 目: 基于嵌入式系統(tǒng)的傳感器環(huán)境檢測 </p><p>  學(xué) 院: 物理與電子信息工程學(xué)院 </p><p>  ?! I(yè): 計算機科學(xué)與技術(shù) </p><p>  班  級:

2、 </p><p>  姓 名: </p><p>  學(xué) 號: </p><p>  指導(dǎo)老師: </p><p>  完成日期: 2013.3.3

3、0 </p><p><b>  目錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p>  第一章設(shè)計目的3</p><p>  1.1 掌握STM32嵌入式系統(tǒng)各功能模塊

4、的使用方法。3</p><p>  1.2 掌握SHT1x溫濕度傳感器、BMP085氣壓傳感器、GL5528光敏電阻、雨量傳感器的數(shù)據(jù)采集與處理方法。3</p><p>  1.3 掌握嵌入式系統(tǒng)上位機軟件的實現(xiàn)方法。3</p><p>  第二章 課程設(shè)計要求3</p><p>  2.1嵌入式系統(tǒng)要求3</p>

5、<p>  2.2上位機要求3</p><p>  第三章 系統(tǒng)原理3</p><p><b>  3.1硬件電路3</b></p><p>  3.2 SHT1x溫濕度傳感器4</p><p>  3.3 BMP085氣壓傳感器4</p><p>  3.4GL5528光

6、敏電阻4</p><p>  3.5雨量傳感器5</p><p>  第四章 系統(tǒng)開發(fā)步驟5</p><p>  4.1開發(fā)板模塊初始配置5</p><p>  4.2傳感器模塊初始配置5</p><p>  4.3 UI、傳感器數(shù)據(jù)讀取顯示以及串口傳輸5</p><p>  4.

7、4上位機串口軟件編寫以及測試6</p><p>  4.5 整體測試和調(diào)試8</p><p><b>  第五章 總結(jié)11</b></p><p><b>  第六章 附錄12</b></p><p>  6.1 Comopeator(主界面)12</p><p>

8、  6.2 history(查看歷史界面)22</p><p><b>  摘 要</b></p><p>  設(shè)計多傳感器實現(xiàn)環(huán)境質(zhì)量檢測的多功能、實時數(shù)據(jù)保存以及查看,有利于各個領(lǐng)域在環(huán)境方面的檢測和測試,方便在環(huán)境相應(yīng)參數(shù)的調(diào)查和研究。本文采用Stm32開發(fā)版、BMP085、SHT1X、光強、雨量等靈敏度較高的先進傳感器分別檢測溫度、氣壓、濕度、光強、雨量,

9、并在上位機中用C++實現(xiàn)實時顯示和數(shù)據(jù)庫的保存。從設(shè)計中,各種檢測和數(shù)據(jù)挖掘明顯趨于簡單。</p><p>  關(guān)鍵詞: 傳感器 檢測 數(shù)據(jù) </p><p>  注:上位機關(guān)鍵代碼見附錄</p><p><b>  Abstract</b></p><p><b>  .</b></p>

10、;<p>  Key Words:</p><p><b>  設(shè)計目的</b></p><p>  1.1 掌握STM32嵌入式系統(tǒng)各功能模塊的使用方法。</p><p>  1.2 掌握SHT1x溫濕度傳感器、BMP085氣壓傳感器、GL5528光敏電阻、雨量傳感器的數(shù)據(jù)采集與處理方法。</p><p>

11、;  1.3 掌握嵌入式系統(tǒng)上位機軟件的實現(xiàn)方法。</p><p>  第二章 課程設(shè)計要求</p><p><b>  嵌入式系統(tǒng)要求</b></p><p>  2.1.1、SHT1x溫濕度傳感器的信息采集與處理</p><p>  2.1.2、BMP085氣壓傳感器的信息采集與處理</p><p

12、>  2.1.3、基于GL5528光敏電阻的亮度信息采集與處理</p><p>  2.1.4、雨量傳感器的數(shù)據(jù)采集與處理</p><p>  2.1.5、傳感器信息的LCD顯示界面設(shè)計</p><p>  2.1.6、串口通訊程序與相應(yīng)通訊協(xié)議設(shè)計與實現(xiàn)</p><p><b>  上位機要求</b></p

13、><p><b>  傳感器信息的顯示</b></p><p>  串口配置(串口號、波特率的選擇)</p><p>  傳感信息的數(shù)據(jù)庫保存</p><p>  數(shù)據(jù)庫信息的可視化顯示</p><p><b>  第三章 系統(tǒng)原理</b></p><p>

14、;<b>  3.1硬件電路</b></p><p>  本課程設(shè)計涉及的環(huán)境監(jiān)測系統(tǒng)在STM32嵌入式實驗教學(xué)系統(tǒng)的基礎(chǔ)上實現(xiàn),相關(guān)的硬件原理圖如下圖所示</p><p><b> ?。▓D1)</b></p><p>  3.2 SHT1x溫濕度傳感器</p><p>  SHT1x溫濕度傳感器是

15、應(yīng)用非常廣泛一類環(huán)境傳感器,可以數(shù)字形式提供14位分辨率的溫度信息與12位分辨率的相對濕度信息。該傳感器提供專用的同步半雙工串行接口向CPU傳送采集的傳感信息,其時鐘信號連接STM32的PC14端口,數(shù)據(jù)信號連接STM32的PA9端口。STM32利用GPIO口模擬SHT1x專用的串口通訊協(xié)議以實現(xiàn)傳感信息采集。</p><p>  3.3 BMP085氣壓傳感器</p><p>  BMP

16、085是Bosch公司推出的一款絕對壓力傳感器,可以數(shù)字形式提供16-19位分辨率的絕對壓力信息與16位分辨率的溫度信息。STM32利用I2C1與該傳感器通訊,PB6端口連接其時鐘信號,PB7連接其數(shù)據(jù)信號。</p><p>  GL5528光敏電阻</p><p>  光敏電阻的阻值隨著亮度的提升而降低,基于此原理可利用上圖所示電路中的電阻分壓電路檢測光敏電阻的阻值,進而根據(jù)阻值與亮度的

17、關(guān)系計算環(huán)境中的光照強度。</p><p><b>  雨量傳感器</b></p><p>  雨量傳感器由一系列互不連通的導(dǎo)線構(gòu)成,當(dāng)雨滴落到各導(dǎo)線上,由于水的導(dǎo)電作用雨量傳感器的電阻會降低,阻值隨著雨滴增多而降低,基于此原理可利用上圖所示的電路中的分壓電路檢測雨量傳感器的阻值,進而判斷雨量大小。</p><p>  第四章 系統(tǒng)開發(fā)步驟&l

18、t;/p><p>  4.1開發(fā)板模塊初始配置</p><p>  void RCC_Configuration(void);</p><p>  void SysTick_Configuration(void);//系統(tǒng)時鐘初始化</p><p>  void GPIO_Configuration(void);//管腳初始化</p>

19、<p>  void EXTI_Configuration(void);//中斷處理</p><p>  void NVIC_Configuration(void);//優(yōu)先級響應(yīng)初始化</p><p>  void ADC_Configuration(void); //數(shù)模轉(zhuǎn)換以及模數(shù)轉(zhuǎn)換</p><p>  void DAC_Configurati

20、on(void);</p><p>  void USART_Configuration(void);//串口模塊初始化</p><p>  void TIM_Configuration(void);//</p><p>  void I2C_Configuration(void);//數(shù)據(jù)總線初始化</p><p>  4.2傳感器模塊初始

21、配置</p><p>  void BMP085_BufferRead(u8 *pBuffer, u8 ReadAddr, u8 NumByteToRead);</p><p>  void BMP085_ReadCalCoeff(void);</p><p>  u16 BMP085_ReadTemp(void);//讀取溫度</p><p&g

22、t;  u32 BMP085_ReadPressure(void);//讀取氣壓</p><p>  void SHT1x_DataOut(void);</p><p>  void SHT1x__DataIn(void);</p><p>  u8 SHT1x_WriteByte(u8 value);</p><p>  u8 SHT1x_

23、ReadByte(u8 ack);</p><p>  void SHT1x_TransStart(void);</p><p>  void SHT1x_ConnectionReset(void);//SHT1x初始化連接</p><p>  u8 SHT1x_ReadReg(u8 *pvalue);</p><p>  u8 SHT1x_

24、Measure(u16 *pvalue, u8 mode);</p><p>  u8 SHT1x_ReadTempHumi(float *ptemp,float *phumi);</p><p>  float GL5528_ReadLight(void);//獲取光強</p><p>  u16 Rain_Read(void);//獲取雨量數(shù)值</p>

25、;<p>  4.3 UI、傳感器數(shù)據(jù)讀取顯示以及串口傳輸</p><p>  4.3.1 UI設(shè)置</p><p>  Key1按下選擇查看的項目,Key2按下確認進入查看的項目實時圖形設(shè)置,Key3退出當(dāng)前的頁面(只在查看實時顯示時有效)。</p><p><b>  4.3.2數(shù)據(jù)讀取</b></p><

26、p>  void getall();//讀取所有數(shù)據(jù)</p><p>  void settingdetail();//設(shè)置單個讀取信息</p><p>  void DiscribeLine();//UI畫圖函數(shù)</p><p>  4.4上位機串口軟件編寫以及測試</p><p>  本組采取的是C++ Builder IDE下的軟

27、件編寫,在串口通訊方面使用了Victor串口通訊控件、EXCLE導(dǎo)出控件、以及自編注冊表自動獲取控件、Chart查看顯性實時圖像信息,以及數(shù)據(jù)庫連接和數(shù)據(jù)庫的存儲(其中使用了SQLserver數(shù)據(jù)庫及其觸發(fā)器編程)。</p><p>  4.4.1對應(yīng)串口設(shè)置</p><p>  固定波特率為:9600</p><p>  自動搜索串口(從上位機注冊表讀?。?Com

28、X</p><p>  4.4.2圖像實時顯示</p><p>  4.4.3數(shù)據(jù)庫保存</p><p>  4.4.3歷史數(shù)據(jù)查看以及到處生成EXCEL</p><p>  4.4.5歷史數(shù)據(jù)圖像顯示</p><p>  4.5 整體測試和調(diào)試</p><p><b>  第五章 總

29、結(jié)</b></p><p>  從上述設(shè)計中,本文順利地解決了嵌入式系統(tǒng)的設(shè)計與編碼,上位機的界面設(shè)計以及算法設(shè)計與編碼,即可以簡單快捷地使用此設(shè)計作為環(huán)境檢測的標準。同時在設(shè)計的過程中遇到了許多困難和疑惑,但是在不懈努力與堅持下,本組組員都得以克服。最后讓組員收獲頗多。</p><p><b>  第六章 附錄</b></p><p&

30、gt;  6.1 Comopeator(主界面)</p><p>  //---------------------------------------------------------------------------</p><p>  #ifndef ComOpeatorH</p><p>  #define ComOpeatorH</p>

31、<p>  //---------------------------------------------------------------------------</p><p>  #include <Classes.hpp></p><p>  #include <Controls.hpp></p><p>  #inclu

32、de <StdCtrls.hpp></p><p>  #include <Forms.hpp></p><p>  #include "YbCommDevice.h"</p><p>  #include <ExtCtrls.hpp></p><p>  #include <Re

33、gistry.hpp></p><p>  #include <DB.hpp></p><p>  #include <DBTables.hpp></p><p>  #include "Chart.hpp"</p><p>  #include "Series.hpp"&

34、lt;/p><p>  #include "TeEngine.hpp"</p><p>  #include "TeeProcs.hpp"</p><p>  #include <ADODB.hpp></p><p>  #include <ComCtrls.hpp></p&g

35、t;<p>  #include <DBGrids.hpp></p><p>  #include <Grids.hpp></p><p>  #include <ExtCtrls.hpp></p><p>  #include <sysvari.h></p><p>  #inc

36、lude <Provider.hpp></p><p>  #include <comobj.hpp></p><p>  #include <jpeg.hpp></p><p>  #include <Dialogs.hpp></p><p>  //---------------------

37、------------------------------------------------------</p><p>  class TComConnection : public TForm</p><p><b>  {</b></p><p>  __published:// IDE-managed Components<

38、/p><p>  TYbCommDevice *YbCommDevice1;</p><p>  TMemo *Memo1;</p><p>  TButton *Button2;</p><p>  TComboBox *cbb_com;</p><p>  TButton *Button3;</p>&l

39、t;p>  TButton *btClear;</p><p>  TLabeledEdit *LabeledEdit1;</p><p>  TLabeledEdit *LabeledEdit2;</p><p>  TLabeledEdit *LabeledEdit3;</p><p>  TLabeledEdit *Labeled

40、Edit4;</p><p>  TLabeledEdit *LabeledEdit5;</p><p>  TLabeledEdit *LabeledEdit6;</p><p>  TChart *Chart1;</p><p>  TBarSeries *Series1;</p><p>  TButton *b

41、tshow;</p><p>  TButton *btdataopen;</p><p>  TADOConnection *ADOConnection1;</p><p>  TADOQuery *ADOQuery1;</p><p>  TDateTimePicker *DateTimePicker1;</p><p

42、>  TButton *btdataclose;</p><p>  TTimer *Timer1;</p><p>  TPanel *Panel1;</p><p>  TDBGrid *DBGrid1;</p><p>  TDateTimePicker *DateTimePicker2;</p><p>

43、  TDateTimePicker *DateTimePicker3;</p><p>  TADOQuery *ADOQuery2;</p><p>  TButton *Button1;</p><p>  TButton *Button4;</p><p>  TButton *Button5;</p><p>

44、  TDataSource *DataSource1;</p><p>  TImage *Image1;</p><p>  TButton *Button6;</p><p>  void __fastcall Button2Click(TObject *Sender);</p><p>  //void __fastcall Butt

45、on1Click(TObject *Sender);</p><p>  void __fastcall YbCommDevice1Package(TObject *Sender, int NotifyType);</p><p>  void __fastcall Button3Click(TObject *Sender);</p><p>  void __fa

46、stcall cbb_comSelect(TObject *Sender);</p><p>  void __fastcall btdatacloseClick(TObject *Sender);</p><p>  void __fastcall btClearClick(TObject *Sender);</p><p>  void __fastcall b

47、tshowClick(TObject *Sender);</p><p>  void __fastcall btdataopenClick(TObject *Sender);</p><p>  void __fastcall Timer1Timer(TObject *Sender);</p><p>  void __fastcall Button1Click(

48、TObject *Sender);</p><p>  void __fastcall Button4Click(TObject *Sender);</p><p>  void __fastcall Button5Click(TObject *Sender);</p><p>  void __fastcall Button6Click(TObject *Send

49、er);</p><p>  private:// User declarations</p><p>  bool comStatus;</p><p>  bool aotuCom;</p><p>  bool datain;</p><p>  bool dymcshow;</p><p&

50、gt;  public:// User declarations</p><p>  __fastcall TComConnection(TComponent* Owner);</p><p>  void FillInfo(int varity , UnicodeString s);</p><p>  void FillDatabase();</p&g

51、t;<p>  bool DBGrid2Excel(TDataSet *dataset, String filename);</p><p><b>  };</b></p><p>  //---------------------------------------------------------------------------</p&

52、gt;<p>  extern PACKAGE TComConnection *ComConnection;</p><p>  //---------------------------------------------------------------------------</p><p><b>  #endif</b></p>

53、<p>  //---------------------------------------------------------------------------</p><p>  #include <vcl.h></p><p>  #pragma hdrstop</p><p>  #include "ComOpeator

54、.h"</p><p>  #include "his.h"</p><p>  //---------------------------------------------------------------------------</p><p>  #pragma package(smart_init)</p>&

55、lt;p>  #pragma link "YbCommDevice"</p><p>  #pragma link "Chart"</p><p>  #pragma link "Series"</p><p>  #pragma link "TeEngine"</p>

56、<p>  #pragma link "TeeProcs"</p><p>  #pragma resource "*.dfm"</p><p>  TComConnection *ComConnection;</p><p>  //---------------------------------------

57、------------------------------------</p><p>  __fastcall TComConnection::TComConnection(TComponent* Owner)</p><p>  : TForm(Owner)</p><p><b>  {</b></p><p>

58、  comStatus = false;</p><p>  aotuCom = false;</p><p>  datain = false;</p><p>  dymcshow = false;</p><p>  Memo1->Clear();</p><p><b>  }</b>

59、;</p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TComConnection::Button2Click(TObject *Sender)</p><p><b>  {&l

60、t;/b></p><p><b>  try{</b></p><p>  if(!comStatus){</p><p>  YbCommDevice1->Active = true; //打開串口</p><p>  YbCommDevice1->PackageType = cptFrameTim

61、eout; //使用超時的方法識別每幀數(shù)據(jù)</p><p>  YbCommDevice1->UsePackage = true; //啟動 Package</p><p>  Button2->Caption="關(guān)閉串口";</p><p><b>  }</b></p><p><

62、;b>  else</b></p><p><b>  {</b></p><p>  YbCommDevice1->Active = false;</p><p>  Button2->Caption="打開串口";</p><p><b>  }</b

63、></p><p><b>  }</b></p><p>  catch(Exception &e){</p><p>  ShowMessage("打開串口失敗,請先選擇自動或檢查串口是否正確接入。");</p><p><b>  }</b></p>

64、;<p>  comStatus = !comStatus;</p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p><b>  /*</b

65、></p><p>  void __fastcall TComConnection::Button1Click(TObject *Sender)</p><p><b>  {</b></p><p>  int nBytes = 0;</p><p>  char Buffer[1000];</p>

66、<p>  wchar_t *EndPtr;</p><p>  UnicodeString head="09 A1 ff ff ff ff ff ff ";</p><p>  UnicodeString code=head + Edit1->Text;</p><p>  // UnicodeString code= E

67、dit1->Text;</p><p>  UnicodeString t,s = code.Trim(); //去掉兩端的空格</p><p>  while(s.Length()>0)</p><p><b>  {</b></p><p>  int p = s.Pos(' '); //

68、空格</p><p><b>  if(p>0)</b></p><p><b>  {</b></p><p>  t = s.SubString(1,p-1);</p><p>  s = s.SubString(p+1,s.Length()).Trim();</p><

69、;p>  Buffer[nBytes++] = wcstol(t.w_str(), &EndPtr, 16); //十六進制字符串轉(zhuǎn)成字節(jié)</p><p><b>  }</b></p><p>  else //還剩下最后一個字節(jié)</p><p><b>  {</b></p><p&g

70、t;<b>  t = s;</b></p><p><b>  s = "";</b></p><p>  Buffer[nBytes++] = wcstol(t.w_str(), &EndPtr, 16); //十六進制字符串轉(zhuǎn)成字節(jié)</p><p><b>  }</b&g

71、t;</p><p><b>  }</b></p><p>  YbCommDevice1->Write(Buffer,nBytes);</p><p><b>  }</b></p><p><b>  */</b></p><p>  //-

72、--------------------------------------------------------------------------</p><p>  void __fastcall TComConnection::YbCommDevice1Package(TObject *Sender, int NotifyType)</p><p><b>  {</

73、b></p><p>  unsigned char Buf[1000]; //接收緩存</p><p>  int n = YbCommDevice1->ReadPackage(Buf,100);</p><p>  int varity = -1;</p><p>  if(n>0) //收到數(shù)據(jù)的字節(jié)數(shù)</p&g

74、t;<p><b>  {</b></p><p>  UnicodeString s;</p><p>  for(int i=0; i<n; i++){</p><p>  if(Buf[i] == 0xff){</p><p>  Memo1->Lines->Add(s);</

75、p><p>  if(varity >=0)</p><p>  FillInfo(varity,s);</p><p><b>  s="";</b></p><p><b>  continue;</b></p><p><b>  }&l

76、t;/b></p><p>  else if(Buf[i] >=0xa0 && Buf[i]<=0xa5){</p><p>  varity = Buf[i]-0xa0;</p><p><b>  continue;</b></p><p><b>  }</b&g

77、t;</p><p>  s += (char)(Buf[i]);</p><p><b>  }</b></p><p>  //Memo1->Lines->Add(s); //在 Memo1 里顯示出收到的數(shù)據(jù), 將會是完整的一幀數(shù)據(jù)</p><p><b>  }</b><

78、/p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TComConnection::Button3Click(TObject *Send

79、er)</p><p><b>  {</b></p><p><b>  try{</b></p><p>  TRegistry *reg = new TRegistry(KEY_READ);</p><p>  TStringList *strlist = new TStringList;&l

80、t;/p><p>  reg->RootKey = HKEY_LOCAL_MACHINE;</p><p><b>  /*</b></p><p>  2013-1-26 未能將轉(zhuǎn)義符轉(zhuǎn)義,致使注冊表打開失敗,經(jīng)過修改隨即可行。</p><p><b>  */</b></p>&

81、lt;p>  reg->OpenKeyReadOnly("HARDWARE\\DEVICEMAP\\SERIALCOMM");</p><p>  reg->GetValueNames(strlist);</p><p>  cbb_com->Clear();</p><p>  for( int i=0; i<st

82、rlist->Count;i++ )</p><p><b>  {</b></p><p>  strlist->Strings[i] = reg->ReadString(strlist->Strings[i]);</p><p>  cbb_com->Items->Add(strlist->Stri

83、ngs[i]);</p><p><b>  }</b></p><p>  cbb_com->ItemIndex = 0;</p><p>  delete reg,strlist;</p><p>  cbb_comSelect(this);</p><p>  aotuCom = tr

84、ue;</p><p><b>  }</b></p><p>  catch(Exception &e){</p><p>  ShowMessage("自動搜索串口失敗,請檢查串口是否正確接入。");</p><p><b>  }</b></p>&l

85、t;p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TComConnection::cbb_comSelect(TObject *Sender)</p

86、><p><b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p><b>  /*</b></p><p>  串口號的形式是COMC,</p><

87、p>  其中C的取值不定,這里要將C提取出來,</p><p>  就是去掉前面三個字符,并且不要后面/r和/n</p><p>  那么它的長度就是length-3-2,而它的子串是從第四個開始的</p><p><b>  */</b></p><p>  YbCommDevice1->PortName

88、= cbb_com->Items->Text;</p><p>  UnicodeString s=YbCommDevice1->PortName;</p><p>  s=s.SubString(4,YbCommDevice1->PortName.Length()-5);</p><p>  YbCommDevice1->PortNo

89、 = StrToInt(s);</p><p><b>  }</b></p><p>  catch(Exception &e){</p><p>  ShowMessage("自動搜索串口失敗,請檢查串口是否正確接入。");</p><p><b>  }</b>&l

90、t;/p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TComConnection::btdatacloseClick(TObject

91、 *Sender)</p><p><b>  {</b></p><p>  datain=false;</p><p><b>  }</b></p><p>  //----------------------------------------------------------------

92、--------------------------------------------------------------------</p><p>  void __fastcall TComConnection::btClearClick(TObject *Sender)</p><p><b>  {</b></p><p>  Me

93、mo1->Clear();</p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  void TComConnection::FillInfo(int vari

94、ty,UnicodeString s){</p><p>  switch(varity){</p><p><b>  case 0:</b></p><p>  LabeledEdit1->Text=s;</p><p><b>  break;</b></p><p&

95、gt;<b>  case 1:</b></p><p>  LabeledEdit2->Text=s;</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  LabeledEdit3->Text=

96、s;</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  LabeledEdit4->Text=s;</p><p><b>  break;</b></p><p><b

97、>  case 4:</b></p><p>  LabeledEdit5->Text=s;</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  LabeledEdit6->Text=s;</p

98、><p>  FillDatabase();</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void __fastcall TComConnection:

99、:btshowClick(TObject *Sender)</p><p><b>  {</b></p><p>  this->dymcshow = true;</p><p><b>  }</b></p><p>  //--------------------------------

100、-------------------------------------------</p><p>  void __fastcall TComConnection::btdataopenClick(TObject *Sender)</p><p><b>  {</b></p><p>  datain=true;</p>

101、<p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  void TComConnection::FillDatabase(){</p><p>  if(data

102、in){</p><p>  ADOQuery1->Connection = this->ADOConnection1;</p><p>  ADOQuery1->SQL->Clear();</p><p>  UnicodeString command = "insert into SensorData(bmptemp,bmppr

103、ess,sht1xtemp,sht1xhr,light,rain,time) values(:bmptemp,:bmppress,:sht1xtemp,:sht1xhr,:light,:rain,:time)" ;</p><p>  this->ADOQuery1->SQL->Add(command);</p><p>  this->ADOQuery1

104、->Parameters->ParamByName("bmptemp")->Value = this->LabeledEdit1->Text;</p><p>  this->ADOQuery1->Parameters->ParamByName("bmppress")->Value = this->LabeledE

105、dit2->Text;</p><p>  this->ADOQuery1->Parameters->ParamByName("sht1xtemp")->Value = this->LabeledEdit3->Text;</p><p>  this->ADOQuery1->Parameters->ParamB

106、yName("sht1xhr")->Value = this->LabeledEdit4->Text;</p><p>  this->ADOQuery1->Parameters->ParamByName("light")->Value = this->LabeledEdit5->Text;</p><

107、;p>  this->ADOQuery1->Parameters->ParamByName("rain")->Value = this->LabeledEdit6->Text;</p><p>  this->ADOQuery1->Parameters->ParamByName("time")->Value

108、= this->DateTimePicker1->DateTime.CurrentDateTime();</p><p>  this->ADOQuery1->ExecSQL();</p><p><b>  }</b></p><p><b>  }</b></p><p>

109、;  void __fastcall TComConnection::Timer1Timer(TObject *Sender)</p><p><b>  {</b></p><p>  if(!dymcshow)</p><p><b>  return ;</b></p><p><b&g

110、t;  try{</b></p><p>  Chart1->RemoveAllSeries(); // 清除Chart1上所有舊 Series</p><p>  Chart1->View3D=True; // 不要 3D 立體</p><p>  Chart1->Legend->Visible=false; // 不秀圖例說明

111、</p><p>  Chart1->Title->Text->Clear();</p><p>  Chart1->Title->Text->Add("傳感器指標");</p><p>  Series1->Clear();</p><p>  Series1->Paren

112、tChart=Chart1;</p><p>  Series1->Marks->Visible=true; // 設(shè)定要提示說明</p><p><b>  /*</b></p><p>  int V; // value</p><p>  String L; //Label</p><

113、;p>  for (int i = 1; i <= 8; i++)</p><p><b>  {</b></p><p>  V=i; // Series 值</p><p>  L="V"+IntToStr(i); // 軸名稱</p><p>  Series1->Add( V

114、 , L , clTeeColor );</p><p><b>  }</b></p><p><b>  */</b></p><p>  double a[6] = {StrToFloat(LabeledEdit1->Text),</p><p>  StrToFloat(Labeled

115、Edit2->Text)/10000,</p><p>  StrToFloat(LabeledEdit3->Text),</p><p>  StrToFloat(LabeledEdit4->Text),</p><p>  StrToFloat(LabeledEdit5->Text),</p><p>  StrT

116、oFloat(LabeledEdit6->Text)};</p><p>  UnicodeString b[]={LabeledEdit1->EditLabel->Caption,</p><p>  LabeledEdit2->EditLabel->Caption,</p><p>  LabeledEdit3->EditLa

117、bel->Caption,</p><p>  LabeledEdit4->EditLabel->Caption,</p><p>  LabeledEdit5->EditLabel->Caption,</p><p>  LabeledEdit6->EditLabel->Caption};</p><p

118、>  for(int i=0;i<6;i++)</p><p>  Series1->AddXY(i*15,a[i],b[i],clTeeColor);</p><p><b>  }</b></p><p>  catch(Exception &e){</p><p>  dymcshow =

119、 false;</p><p>  ShowMessage("顯示圖形失敗,請檢查串口");</p><p><b>  }</b></p><p><b>  }</b></p><p>  //-----------------------------------------

120、----------------------------------</p><p>  void __fastcall TComConnection::Button1Click(TObject *Sender)</p><p><b>  {</b></p><p>  ADOQuery2->Connection = this->

121、ADOConnection1;</p><p>  ADOQuery2->SQL->Clear();</p><p>  UnicodeString command = "select time as 時間 ,bmptemp as BMP溫度,bmppress as BMP氣壓,sht1xtemp as SHT1溫度,sht1xhr,light as 光強,rain

122、as 雨量 from SensorData order by time desc";</p><p>  this->ADOQuery2->SQL->Add(command);</p><p>  this->ADOQuery2->Open();</p><p>  this->DBGrid1->DataSourc

123、e = this->DataSource1;</p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  void __fastcall TComConnectio

124、n::Button4Click(TObject *Sender)</p><p><b>  {</b></p><p>  ADOQuery2->Connection = this->ADOConnection1;</p><p>  ADOQuery2->SQL->Clear();</p><p&

125、gt;  UnicodeString command = "select time as 時間 ,bmptemp as BMP溫度,bmppress as BMP氣壓,sht1xtemp as SHT1溫度,sht1xhr,light as 光強,rain as 雨量 from SensorData where time>=:stime and time <=:etime order by time desc&qu

126、ot;;</p><p>  this->ADOQuery2->SQL->Add(command);</p><p>  this->ADOQuery2->Parameters->ParamByName("stime")->Value = this->DateTimePicker2->DateTime;</p&

127、gt;<p>  this->ADOQuery2->Parameters->ParamByName("etime")->Value = this->DateTimePicker3->DateTime;</p><p>  this->ADOQuery2->Open();</p><p>  this->

128、DBGrid1->DataSource = this->DataSource1;</p><p><b>  }</b></p><p>  //---------------------------------------------------------------------------</p><p>  #define

129、PG OlePropertyGet</p><p>  #define PS OlePropertySet</p><p>  #define FN OleFunction</p><p>  #define PR OleProcedure</p><p>  bool TComConnection::DBGrid2Excel(TDataSe

130、t *dataset, String filename)</p><p><b>  {</b></p><p>  DeleteFile( filename );</p><p>  Variant excel = CreateOleObject("Excel.Application");</p><p

131、><b>  try</b></p><p><b>  {</b></p><p>  Variant newxls = excel.PG("WorkBooks").FN("Add");</p><p><b>  int i;</b></p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論