目的:我想用两个窗体互相连续传送telegramm(这里需要循环语句,问题1),也就是需要两个窗体都定义协议类型,然后进行协议的接收和发送(问题2),下面是我的代码:
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;namespace Simple_Serial
{
    public partial class Form1 : Form
    {
        // Add this variable        string RxString;
        
        Form2 secondForm = new Form2();        public Form1()
        {
            InitializeComponent();
            secondForm.Show();
        }        private void buttonStart_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = "COM1";
            serialPort1.BaudRate = 9600;            serialPort1.Open();
            if (serialPort1.IsOpen)
            {
                buttonStart1.Enabled = false;
                buttonStop1.Enabled = true;
                textBox1.ReadOnly = false;
            }
        }        private void buttonStop_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
                buttonStart1.Enabled = true;
                buttonStop1.Enabled = false;
                textBox1.ReadOnly = true;
            }        }        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            // If the port is closed, don't try to send a character.            if (!serialPort1.IsOpen) return;            // If the port is Open, declare a char[] array with one element.
            char[] buff = new char[1];            // Load element 0 with the key character.            buff[0] = e.KeyChar;            // Send the one character buffer.
            serialPort1.Write(buff, 0, 1);            // Set the KeyPress event as handled so the character won't
            // display locally. If you want it to display, omit the next line.
            e.Handled = true;        }
        private void DisplayText(object sender, EventArgs e)
        {
            textBox1.AppendText(RxString);
        }
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            RxString = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(DisplayText));        }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen) serialPort1.Close();        }        private void textBox1_TextChanged(object sender, EventArgs e)
        {        }        private void Form1_Load(object sender, EventArgs e)
        {        }
    }
}
以上代码是窗体1的,现在他可以往串口1上面写数据,仅仅是数据,还不是telegramm,由于不会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;namespace Simple_Serial
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }        private void buttonStart_Click(object sender, EventArgs e)
        {
            serialPort2.Open();
            if (serialPort2.IsOpen)
            {
                buttonStart2.Enabled = false;
                buttonStop2.Enabled = true;
                textBox2.ReadOnly = false;
            }
        }        private void buttonStop_Click(object sender, EventArgs e)
        {
            if (serialPort2.IsOpen)
            {
                serialPort2.Close();
                buttonStart2.Enabled = true;
                buttonStop2.Enabled = false;
                textBox2.ReadOnly = true;
            }
        }        private void textBox1_TextChanged(object sender, EventArgs e)
        {
                    }
    }
}
以上代码是窗体2的,我模仿窗体1生成的窗体2,而现在的目的就是如我帖子刚开头写的一样,希望各位高手帮帮忙,或者给点资料或者链接。谢谢啦!