C#中serialport控件做的串口发送和接收Form程序不对

如下图:textbox1输入一个字符‘a’,点发送,通过虚拟串口看到Com1打开,并发送数据,窗口提示“数据发送成功”,再点接收按钮,就卡死了程序如下:usingSyst... 如下图:textbox1输入一个字符‘a’,点发送,通过虚拟串口看到Com1打开,并发送数据,窗口提示“数据发送成功”,再点接收按钮,就卡死了

程序如下:
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(data);
serialPort1.WriteLine(str);
MessageBox.Show("数据发送成功!", "系统提示");
}

private void button2_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text = Encoding.Unicode.GetString(data);
serialPort1.Close();
MessageBox.Show("数据接收成功!", "系统提示");
}

}
}
展开
 我来答
匿名用户
2015-01-06
展开全部

ReadLine是阻塞读,如果发出去的数据已经过时,没有读到数据,当然卡死。

界面可以按照一些串口软件来编写,例如格西烽火、串口调试助手等都不错。

匿名用户
2015-01-05
展开全部
线程读数

可以查例子
追问
能详细一些吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Elegant°
2015-01-05
知道答主
回答量:7
采纳率:0%
帮助的人:5.2万
展开全部
貌似没有这么简单,我也是弄半天才弄好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2015-01-05 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4952万
展开全部
可以给你做一份
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式