[原创] 天然气报警之上位机的建立

fxw451   2011-3-31 10:34 楼主

       天然气报警之上位机的建立

       这两天才匆匆忙忙把上位机调试完,有很多不完善的地方,界面也比较难看,等有时间的时候好好整理下。这个界面是用VB建立的,模仿的是eZ430-RF2500 Sensor Monitor,eZ430-RF2500 Sensor Monitor是个比较好玩的界面,就模仿这个建立一个适合我的上位机界面。
       下图是我接入传感器检测装置所测得的天然气含量。

1.jpg

图(一)
       下个模块是在没有插入带电池的无线模块时的上位机界面,该节目实现功能和TI给出的界面基本功能是一样的.

2.jpg

图(二)

       通过显示两个模块的距离来显示硬件设备中两个无线模块的距离。

3.jpg    4.jpg

 

 

天然气报警之上位机建立.pdf (93.71 KB)
(下载次数: 51, 2011-3-31 10:34 上传)

 

上位机界面:

VB天然气.rar (13.22 KB)
(下载次数: 47, 2011-3-31 10:37 上传)

 

 

By fxw451      

2011-3-31      


 

[ 本帖最后由 fxw451 于 2011-3-31 10:37 编辑 ]

回复评论 (8)

具体软件部分,我在详细的介绍下我是怎么加上我这个天然气模块的。

 

首先在demo_ED中,对天然气采集所需要的AD进行设置

  1.     ADC10CTL1 = INCH_1 + ADC10DIV_4;       // Temp Sensor ADC10CLK/5
        ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + ADC10SR;
        for( degC = 240; degC > 0; degC-- );    // delay to allow reference to settle
        ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
        __bis_SR_register(CPUOFF + GIE);        // LPM0 with interrupts enabled
        results[2] = ADC10MEM;

我采用的是INCH_1通道,其他就是配置了,最后就是results[2] = ADC10MEM,将采集的数据给results[2],而results采集的结果,我这里是有三个,电压,温度和天然气含量。

然后就是 bj = results[2];       msg[3] = bj;,好在其他函数里调用要用到

 

然后在demo_AP中,需要添加天然气的数据如下有详细的程序

  1. void transmitDataString(char addr[4],char rssi[3], char msg[MESSAGE_LENGTH] )
    {
      char temp_string[] = {" XX.XC"};
      int temp = msg[0] + (msg[1]<<8);

  2.   if( !degCMode )
      {
        temp = (((float)temp)*1.8)+320;
        temp_string[5] = 'F';
      }
      if( temp < 0 )
      {
        temp_string[0] = '-';
        temp = temp * -1;
      }
      else if( ((temp/1000)%10) != 0 )
      {
        temp_string[0] = '0'+((temp/1000)%10);
      }
      temp_string[4] = '0'+(temp%10);
      temp_string[2] = '0'+((temp/10)%10);
      temp_string[1] = '0'+((temp/100)%10);
     
      if( verboseMode )
      {
        char output_verbose[] = {"\r\nNode:XXXX,Temp:-XX.XC,Battery:X.XV,Strength:XXX%,RE:no,R:XXX "};

  3.     output_verbose[46] = rssi[2];
        output_verbose[47] = rssi[1];
        output_verbose[48] = rssi[0];
       
        output_verbose[17] = temp_string[0];
        output_verbose[18] = temp_string[1];
        output_verbose[19] = temp_string[2];
        output_verbose[20] = temp_string[3];
        output_verbose[21] = temp_string[4];
        output_verbose[22] = temp_string[5];
       
        output_verbose[32] = '0'+(msg[2]/10)%10;
        output_verbose[34] = '0'+((msg[2]%10))*4;
       
        output_verbose[59] = '0'+(msg[3]%10);  ////
        output_verbose[60] = '0'+((msg[3]*10)%10);  ////,R:XXX
       
        output_verbose[7] = addr[0];
        output_verbose[8] = addr[1];
        output_verbose[9] = addr[2];
        output_verbose[10] = addr[3];
        TXString(output_verbose, sizeof output_verbose );
      }
      else
      {
        char output_short[] = {"\r\n$ADDR,-XX.XC,V.C,RSI,N#"};

  4.     output_short[19] = rssi[2];
        output_short[20] = rssi[1];
        output_short[21] = rssi[0];
       
       
        output_short[8] = temp_string[0];
        output_short[9] = temp_string[1];
        output_short[10] = temp_string[2];
        output_short[11] = temp_string[3];
        output_short[12] = temp_string[4];
        output_short[13] = temp_string[5];
      
        output_short[15] = '0'+(msg[2]/10)%10;
        output_short[17] = '0'+((msg[2]%10))*4;
       
        output_short[22] = '0'+(msg[3]);      ///
       
        output_short[3] = addr[0];
        output_short[4] = addr[1];
        output_short[5] = addr[2];
        output_short[6] = addr[3];
        TXString(output_short, sizeof output_short );
      }
    }

其实程序就这样,大家可能刚开始学这个东西的时候需要花费很长的时间,去了解程序里的每个函数是什么意思,以及芯片是如何配置的。等大家学到一定程度的时候就很容易去编程了,当然我编的也不一定就好,这个只作为一个参考,有错误之处请大家及时通知我,我好及时的修改,以免影响大家。

点赞  2011-3-31 10:50
顺便把例程在发给大家,看看我修改的和demo有什么区别。




fxw451-eZ430-RF2500 Wireless Sensor Monitor.rar (842.95 KB)
(下载次数: 42, 2011-3-31 10:54 上传)
点赞  2011-3-31 10:54
QQ:2213825928 语音芯片、模块。串口MP3芯片、模块 http://mk020.taobao.com
点赞  2011-3-31 11:09
分享了,学习学习
点赞  2011-5-3 09:35
output_short[4] = addr[1];
    output_short[5] = addr[2];
    output_short[6] = addr[3];
    TXString(output_short, sizeof output_short
上面的程序学习了
追求卓越,成功就会在不经意间追上你
点赞  2011-5-5 20:52
多谢楼主分享,看完后很受启发!
点赞  2011-5-11 20:20

求上位机源码

求此上位机源码,sjupc@126.com  谢谢楼主
点赞  2011-6-8 10:43
学习学习学习
点赞  2012-11-6 23:23
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复