大侠们麻烦帮忙看一下代码,求指教~~~

public partial class Form1 : Form
{
SerialPort serialport1 = new SerialPort();

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

serialport1.PortName = "COM5";
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("数据接收成功!", "系统提示");
}

 

 

为什么button1发送之后,点击button2没有接受到数据,程序直接就死那了,,求解~

桃花长相依
浏览 321回答 9
9回答

慕沐林林

serialport1.Flush没有是否有缓冲问题 另外点击button2是在发送结束后,端口上的数据也有超时丢弃问题,如果已经丢了,那么读的时候就阻塞了,程序直接就死那

萧十郎

那怎么解决数据超时丢弃问题?求指教

慕森卡

@Philomena: 设置serialport1.ReadTimeout

撒科打诨

在 serialport1.WriteLine(str); 之后加上一行代码试试: serialport1.Flush();    

汪汪一只猫

serialport1没有Flush这个属性

狐的传说

错误 1 “System.IO.Ports.SerialPort”并不包含“Flush”的定义

GCT1015

加的这句serialport1.BaseStream.Flush();不过还是不行,程序还是在接收数据的时候会直接死掉

宝慕林4294392

@Philomena: 应该在事件中接收,参考文章: C# SERIALPORT异步读取总结 C# SerialPort运行方式
打开App,查看更多内容
随时随地看视频慕课网APP