想实现的功能是:点击Button1向串口发送第一条命令,TextBox1显示串口返回的数据.点击Button2发送第二条命令,TextBox2显示串口返回的数据.
下面的代码只是实现了点击Button1向串口发送第一条命令,TextBox1显示串口返回的数据
因为是才学C#,很多东西不是很懂.下面的代码应该怎么改才能实现我想要的功能.哪位懂的朋友讲讲要实现我想要的功能的原理,有代码最好.using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;namespace PortsTest2
{
    public partial class Form1 : Form
    {
        public delegate void _SafeAddtrTextCall(string text);
        private void safeAddtrText(string text)
        {
            if (this.InvokeRequired)
            {
                _SafeAddtrTextCall call = delegate(string s) { textBox1.Text += s; };                this.Invoke(call, text);            }
            else
            {
                textBox1.Text += text;
            }
        }        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM5";
            serialPort1.BaudRate = 2400;
            serialPort1.DataBits = 8;
            serialPort1.StopBits = StopBits.One;
            serialPort1.Parity = Parity.Even;
            serialPort1 .DataReceived +=new SerialDataReceivedEventHandler(serialPort1_DataReceived);
        }        private void button1_Click(object sender, EventArgs e)
        {
            string str = "FEFEFE68AAAAAAAAAAAA681300DF16";
                        
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }            try
            {
                serialPort1.Open();                serialPort1.Write(HexToByte(str), 0, HexToByte(str).Length);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("未能打开端口,请检查是否已经连接串口.\n" + ex.Message);
            }
        }        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            string tmpstr = "";
            for (int i = 0; i < serialPort1.BytesToRead; i++)
            {
               tmpstr += Convert.ToString(serialPort1.ReadByte (),16)+" ";
              
            }
            tmpstr = tmpstr.ToUpper();
            safeAddtrText(tmpstr );
        }        private static byte[] HexToByte(string hexString)//string转16进制byte[]
        {
            byte[] returnBytes = new byte[hexString.Length / 2];
            for (int i = 0; i < returnBytes.Length; i++)
                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
            return returnBytes;
        }        public static string ToHexString(byte[] bytes) // 16进制byte[]转string
        {
            string hexString = string.Empty;
            if (bytes != null)
            {
                StringBuilder strB = new StringBuilder();
                for (int i = 0; i < bytes.Length; i++)
                {
                    strB.Append(bytes[i].ToString("X2"));
                }
                hexString = strB.ToString();
            }
            return hexString;
        }        private void button2_Click(object sender, EventArgs e)
        {
            string str = "FEFEFE68AAAAAAAAAAAA681300DF16";            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }            try
            {
                serialPort1.Open();                serialPort1.Write(HexToByte(str), 0, HexToByte(str).Length);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("未能打开端口,请检查是否已经连接串口.\n" + ex.Message);
            }
        }
    }
}