- UID
- 174408
- 在线时间
- 0 小时
- 最后登录
- 2016-12-22
- 注册时间
- 2012-8-10
- 宅魂
- 259 点
- 贡献
- 142 点
- 宅币
- 3526 枚
- 灵石
- 0 块
- 元气(技能点)
- 3 点
- 活跃
- 0 ℃
- 听众
- 5
- 收听
- 0
该用户从未签到
序章
- 积分
- 4879
|
求帮助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]
现在老大就坐我对面,简直要飙泪了(。
|
|