ASP.NET实现电视节目评比短信息互动平台


1.方案分析

  在一年一度的春节联欢晚会上,不可缺少的一个项目就是手机短信投票。当晚会结束时可能会对春晚中的节目进行评比,为了体现其公平性,就会通过手机短信平台的方式,统计全国亿万观众发送的短信数量,以评比哪个节目是全国观众最喜爱的节目,哪个名星是最受欢迎的等,这一功能通过短信猫可以轻松实现。

  注意:发送手机短信的一种方法是利用短信猫发送手机短信,本例中使用的是北京人大金仓信息技术有限公司生产的串口短信猫(DG-C1A)。

  所谓短信猫,其实是一种工业级GSM MODEM,通过串口与计算机连接,可以通过AT指令控制进行短信收发的设备。国内目前应用较多的短信猫,都是以SIEMENS或WAVECOM模块为核心组装而成的,与普通手机相比更为稳定高效。

  2.实施过程

  在观看娱乐电视节目中,主持人经常带动场外的电视观众来参与活动当中,例如,在春节联欢晚会中,通过编辑短信来选取观众最喜欢的春晚节目,那么本实例将实现为“春晚”节目评比短信息互动平台,电视观众根据规定的格式编辑短信发送到短信息互动平台进行节目评比。

  程序实现具体步骤:

  (1)新建一个网站,默认主页为Default.aspx。

  (2)在页面中添加4个TextBox文本框,分别用于显示短信猫的COM端口、波特率、机器号码和短信猫的授权号码。

  (3)在页面中添加1个Button按钮,用于获取参与观众的短信。

  (4)添加一个表格用于控制网页布局。

  (5)添加一个GridView控件用于显示参与观众的短信。

  (6)程序主要代码如下。

  首先导入必要的命名空间。

usingSystem.Data.OleDb;

  然后将Basic.dll添加到项目当中,用于调用dllforvc.dll程序集中的函数。关于Basic.dll和dllforvc.dll的相关知识在本章的7.4.2节已经有所阐述,读者朋友可自行参考
当页面加载时,系统通过调用dllforvc.dll中的GSMModemGetSnInfoNew 方法、GSMModemGetDevice方法和GSMModemGetBaudrate方法,分别用于显示短信猫的机器号码、COM端口以及波特率,具体代码如下。

  protectedvoidPage_Load(objectsender,EventArgse)
  {
    //机器号码
    this.txtJQHM.Text=Basic.GMS.GSMModemGetSnInfoNew(txtCOM.Text,txtBTL.Text);
    this.txtCOM.Text=Basic.GMS.GSMModemGetDevice();  //COM1
    this.txtBTL.Text=Basic.GMS.GSMModemGetBaudrate();  //波特率
  }

  当单击【获取参与观众短信】按钮时,首先通过GSMModemInitNew方法连接设备,如果连接不成功,将会弹出提示信息,提示用户连接失败。如果连接成功,就会调用GSMModemSMSReadAll方法读取全部的短信内容,具体代码如下。
 protectedvoidButton1_Click(objectsender,EventArgse)
  {
    //连接设备
    if(Basic.GMS.GSMModemInitNew(txtCOM.Text,txtBTL.Text,null,null,false,txtPower.Text)==false)
    {
     this.Page.RegisterStartupScript("","<script>alert('连接失败!"+Basic.GMS.GSMModemGetErrorMsg()+"')</script>");
      return;
    }
    //接收短信
    stringcontent=Basic.GMS.GSMModemSMSReadAll(0);
    if(content==null)
    {
      this.getMessage();
      return;
    }
    content=content.Replace("||","|");//替换||为|
    string[]str_sp=content.Split('|');//进行分离
    intk=0;
    string[,]str_Sp=newstring[2,str_sp.Length/2];
    for(inti=0;i<str_sp.Length/2;i++)
    {
      for(intj=0;j<2;j++)
      {
        str_Sp[j,i]=str_sp[k];
        if(k%2!=0)
          this.InsertMessage("insertintoRecivedBox(Mobile,Content)values('"+Convert.ToString(str_Sp[0,i])+"','"+Convert.ToString(str_Sp[1,i])+"')");
        k++;
      }
    }
    this.getMessage();
  }

  在按钮【获取参与观众短信】的Click事件中调用了两个方法,分别为getMessage方法和InsertMessage方法,它们主要用于获取短信和将短信插入到数据库当中,下面代码是getMessage方法。
  privatevoidgetMessage()
  {
    OleDbConnectioncon=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath("message.mdb")+";PersistSecurityInfo=False");
    OleDbDataAdapterdap=newOleDbDataAdapter("selectmobileas手机号码,contentas短信息,SendTimeas日期fromSendedBox",con);
    DataSetds=newDataSet();
    dap.Fill(ds,"cj");
    this.GridView1.DataSource=ds.Tables["cj"].DefaultView;
    GridView1.DataBind();
  }

  下面的代码是InsertMessage方法,通过参数strSql将短信息内容添加到数据库中。

  privatevoidInsertMessage(stringstrSql)
  {
    //将短信息内容添加到数据库中
    OleDbConnectioncon=newOleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath("message.mdb")+";PersistSecurityInfo=False");
    con.Open();
    OleDbCommandcmd=newOleDbCommand(strSql,con);
    cmd.ExecuteNonQuery();
    con.Close();
  }


  3.补充说明短信猫的型号和功能还有很多,本书关于短信猫的所有应用都是通过北京人大金仓信息技术有限公司的串口短信猫来实现的。在使用短信猫处理有关短信方面的技术时,首先要保证短信猫与计算机的串口连接良好,然后通过作者编写的Basic.dll组件去调用短信猫厂商提供的dllforvc.dll程序集,若直接将dllforvc.dll引用到项目中,会弹出错误窗口


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3