求帮助QVQ我开着串口啊……用VSPD设置了两个虚拟相连的串口,然后使用串口调试助手也可以互相发送信息。但是在C#里面设置老是显示——serialPort1.Write(outdata);端口被关闭…… 我也算是按教材打的代码?= = 因为第一片段是利用SeriaPort控件查询方式,没有serialPort2_DataReceived,然后事件又需要绑定……第二片段,没有timer控件,但是之前给出的设计窗口又有它的存在……所以我两个结合了(。 代码如下 [mw_shl_code=csharp,true]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 WindowsFormsApplication0410 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //串口初始化 private void Form1_Load(object sender, EventArgs e) { serialPort1.PortName = "COM1"; serialPort1.BaudRate = 9600; serialPort1.Open(); serialPort2.PortName = "COM2"; serialPort2.BaudRate = 9600; serialPort2.Open(); } //发送数据 private void button1_Click(object sender, EventArgs e) { string outdata = textBox1.Text; if (outdata == "") { MessageBox.Show("发送的数据不能为空!", ""); } serialPort1.Write(outdata); } //接收数据 private void timer1_Tick(object sender, EventArgs e) { string data; data = serialPort2.ReadExisting(); textBox2.Text = textBox2.Text + data; } private void serialPort2_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string data; data = serialPort2.ReadExisting(); this.Invoke(new EventHandler(timer1_Tick)); } //关闭串口,退出程序 private void button2_Click(object sender, EventArgs e) { serialPort1.Close(); serialPort2.Close(); Close(); } } }[/mw_shl_code] 现在老大就坐我对面,简直要飙泪了(。