为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

桃花长相依 2018-12-06 13:22:37
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没有接受到数据,程序直接就死那了,,求解~
查看完整描述

9 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

serialport1.Flush没有是否有缓冲问题

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

查看完整回答
反对 回复 2019-01-21
?
萧十郎

TA贡献1815条经验 获得超13个赞

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

查看完整回答
反对 回复 2019-01-21
?
慕森卡

TA贡献1806条经验 获得超8个赞

@Philomena: 设置serialport1.ReadTimeout

查看完整回答
反对 回复 2019-01-21
?
撒科打诨

TA贡献1934条经验 获得超2个赞

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

serialport1.Flush();

 

 

查看完整回答
反对 回复 2019-01-21
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

serialport1没有Flush这个属性
查看完整回答
反对 回复 2019-01-21
?
狐的传说

TA贡献1804条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-01-21
?
GCT1015

TA贡献1827条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-01-21
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

@Philomena: 应该在事件中接收,参考文章:

C# SERIALPORT异步读取总结

C# SerialPort运行方式

查看完整回答
反对 回复 2019-01-21
  • 9 回答
  • 0 关注
  • 318 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信