纯净物
关于PC双串口通信……显示端口被关闭_(:з」∠)_

求帮助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]

现在老大就坐我对面,简直要飙泪了(。

番茄星人
写过串口
展开Biu

没用过C#写过串口

估计三种情况

1.需要管理员权限

2.串口打开失败(加句输出语句检查串口打开是否成功了)

3.指定的串口被占用了(可能是程序中打开了串口退出时没有关闭上导致的)

[查看全文]