温湿度采集系统,单片机;串行通信;数据交换 第10页

温湿度采集系统,单片机;串行通信;数据交换 第10页

第四章  软件系统实现

 

·4.1 数据部分实现

在整个系统的设计过程中,数据的接受和发送是最为重要的部分,因为数据的处理都是以这个部分为前提,因此,在进行设计时,一定要掌握C#.NET环境下,串口通信部分的实现,以及串口通信协议。下面分别介绍串口打开、关闭、数据接受与发送等部分程序的代码。

(1) 打开串口程序如下:

      private void myopen()               //定义myopen()函数

      {

        try

        {

          if (!this.seriPort1.IsOpen)    //当串口打开时

           {

              this.serialPort1.Open();     //打开一个串口连接

              this.tsbtn_openSerialPort.Text = “关闭串口”;

              this.tsbtn_openSerialPort.Tag = 1;

              this.tsbtn_autoMonitor.Enabled = true;

              this.btn_Send.Enabled = true;

                          this.tsl_connection.Image = global::SerialPortTerminal.Properties.Resources.connect;

              this.tsl_connection.ToolTipText = “串口连接已开启”;

              this.tssl.Properties.Resources.connect;

              this.tssl_logs.Text = “串口连接已开启”;

              this.tssl_logs.ToolTipText = “串口连接已开启”;

             }

          }

              catch (Exception ex)          //捕获异常,当前串口已被占用

              {

                MessageBox.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);  

           }

      }

 

(2) 关闭串口程序如下:

         private void myclose()            //定义myclose()函数

        {

           if (this.ialPort1.Close();     //关闭一个串口连接

 this.tsbtn_openSerialPort.Text =“打开串口”; 

              this.tsbtn_openSerialPort.Tag = 0;

              this.tsbtn_autoMonitor.Tag = 0;

              this.tsbtn_autoMonitor.Text = “开始监控”;

              this.tsbtn_autoMonitor.Enabled = false;

              this.btn_Send.Enabled = false;

              this.tsl_connection.Image = global::SerialPortTerminal.Properties.Resources.disconnect;

              this.tsl_connection.ToolTipText =“串口连接已关闭”;

              this.tssl_logs.Image = global::SerialPortTerminal.Properties.Resources.disconnect;

              this.tssl_logs.Text =“串口连接已关闭”;  

              this.tssl_logs.ToolTipText =“串口连接已关闭”;

            }

        }

          private void openSerialPort_Click(object sender, EventArgs e)

         {(this.openSerialPort.Tag); //定义一个串口标志变量

         if (i == 0)     //当串口未打开时

          {

            myopen();    // 执行打开串口函数

           }

         else

          {

            myclose();  //否则,执行关闭串口函数

           }

        }

 

(3) 数据接收程序:

                  private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)

       {

         int iSum = 0;                  //定义一个变量

         string strTemp1 = “”;          //初始化变量

         byte[] bTemp = new byte[4096]; //赋值接收字符串最大长度

         if (serialPort1.IsOpen)        //如果串口已打开

         {

          (1000);         //控制线程

          iSum =t1.BytesToRead;   //赋值按字节读取

          int iRel = serialPort1.Read(bTemp, 0, iSum);

          serialPort1.Close();         // 关闭串口

          //strTemp1 = Encoding.Unicode.GetString(bTemp, 0,iSum).ToString();         //转换字符

                    strTemp1 = strTemp1 + Encoding.ASCII.GetString(bTemp, 0,iSum).ToString();        //字符按ASCII编码

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

  • 上一篇文章:
  • 下一篇文章:
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有