示例#1
0
        ///-----------------------------------------------------------------
        /// <summary>
        /// 对    象:SCIPort
        /// 事    件:DataReceived
        /// 功    能:串口接收数据
        /// 函数调用:(1)SCIReceiveData,串口接收函数
        ///          (2)SCIUpdateRevtxtbox,更新文本框中的内容
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        ///-----------------------------------------------------------------
        private void SCIPort_DataReceived(object sender,
                                          System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            String str = String.Empty;
            bool   Flag; //标记串口接收数据是否成功
            int    len;  //标记接收的数据的长度

            byte[] ch2 = new byte[2];
            //调用串口接收函数,并返回结果
            Flag = sci.SCIReceiveData(ref recvData);
            if (Flag)//串口接收数据成功
            {
                len = recvData.Length;
                //对于字符串形式,考虑到可能有汉字,
                //直接调用系统定义的函数,处理整个字符串
                str = Encoding.GetEncoding("GB2312").GetString(recvData);
                if (str != null)
                {
                    Data[ind] = str;
                }
                else
                {
                    Data[ind] = null;
                }
            }
            //接收数据失败
            else
            {
                this.textBox1.Text = "数据接收失败!";
            }
        }
示例#2
0
        public void FindSCI()
        {
            for (int i = 0; i < SCIPorts.Length; i++)
            {
                sci = new SCI(SCIPorts[i], 115200);
                if (sci.SCIOpen())
                {
                    sci.SCISendFrameData(ref userShake);

                    Thread.Sleep(500);
                    if (sci.SCIReceiveData(ref recvData))
                    {
                        if (recvData.Length == 0 || !System.Text.Encoding.Default.GetString(recvData).Contains("I am an KL36"))
                        {
                            sci.Close();
                            continue;
                        }
                        if (System.Text.Encoding.Default.GetString(recvData).Contains("I am an KL36"))   //记录UART_User串口的Com号
                        {
                            PublicVar.g_SCIComNum = SCIPorts[i];
                            sci.Close();
                            break;                                                              //找到UART_User串口后,跳出循环
                        }
                    }
                }
            }
        }
        ///-----------------------------------------------------------------
        /// <summary>
        /// 对    象:SCIPort
        /// 事    件:DataReceived
        /// 功    能:串口接收数据
        /// 函数调用:(1)SCIReceiveData,串口接收函数
        ///          (2)SCIUpdateRevtxtbox,更新文本框中的内容
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        ///-----------------------------------------------------------------
        private void SCIPort_DataReceived(object sender,
                                          System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            String str = String.Empty;
            bool   Flag;//标记串口接收数据是否成功

            byte[] ch2 = new byte[2];
            //ComDevice.Encoding = System.Text.Encoding.GetEncoding("GB2312");

            //调用串口接收函数,并返回结果
            Flag = sci.SCIReceiveData(ref PublicVar.g_ReceiveByteArray);
            if (Flag == true)//串口接收数据成功
            {
                str = Encoding.GetEncoding("GB2312").GetString(PublicVar.g_ReceiveByteArray);
                SCIUpdateRevtxtbox(textBox1, str);
            }
        }
示例#4
0
      ///-----------------------------------------------------------------
      /// <summary>
      /// 对    象:SCIPort
      /// 事    件:DataReceived
      /// 功    能:串口接收数据
      /// 函数调用:(1)SCIReceiveData,串口接收函数
      ///          (2)SCIUpdateRevtxtbox,更新文本框中的内容
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
      ///-----------------------------------------------------------------
      private void SCIPort_DataReceived(object sender,
                                        System.IO.Ports.SerialDataReceivedEventArgs e)
      {
          String str = String.Empty;
          bool   Flag; //标记串口接收数据是否成功
          int    len;  //标记接收的数据的长度

          //调用串口接收函数,并返回结果
          Flag = sci.SCIReceiveData(ref PublicVar.g_ReceiveByteArray);
          if (Flag == true)  //串口接收数据成功
          {
              len = PublicVar.g_ReceiveByteArray.Length;
              // 对于字符串形式,考虑到可能有汉字,
              //直接调用系统定义的函数,处理整个字符串
              str = Encoding.GetEncoding("GB2312").GetString(PublicVar.g_ReceiveByteArray);
              if (str != null && str == TbSCISend.Text)
              {
                  SCIUpdateRevtxtbox(TbShow, "字符串数据:    " + str);
              }
              else
              {
                  SCIUpdateRevtxtbox(TbShow, "字符串数据:    无  ");
              }
              //十进制和十六进制形式按字节进行处理
              for (int i = 0; i < len; i++)
              {
                  //十进制都是按照三位来显示,字节之间有空格表示区分
                  SCIUpdateRevtxtbox(TbShow, "十进制数据:    " +
                                     PublicVar.g_ReceiveByteArray[i].ToString("D3") + "  ");
                  //十六进制都是按照两位来显示,字节之间有空格表示区分
                  SCIUpdateRevtxtbox(TbShow, "十六进制数据: " +
                                     PublicVar.g_ReceiveByteArray[i].ToString("X2") + "  ");
              }

              //数据接收成功
          }
      }