第四章  软件系统实现
·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] ... 下一页 >>