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没有接受到数据,程序直接就死那了,,求解~
串口通信是双向的,你用串口1发送数据,就不能用串口1接收数据,应该用另外一个串口接收数据,并且这两个串口必须能够正常通信,要用串口线连接着,你的button2_Click事件要使用另外一个串口来接收数据,要保证你电脑里确实存在这两个串口,串口号要写对,这里有关于Serialport的介绍。http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
serialport1.Flush没有是否有缓冲问题
另外点击button2是在发送结束后,端口上的数据也有超时丢弃问题,如果已经丢了,那么读的时候就阻塞了,程序直接就死那
那怎么解决数据超时丢弃问题?求指教
@Philomena: 设置serialport1.ReadTimeout
在 serialport1.WriteLine(str); 之后加上一行代码试试:
serialport1.Flush();
serialport1没有Flush这个属性
错误 1 “System.IO.Ports.SerialPort”并不包含“Flush”的定义
加的这句serialport1.BaseStream.Flush();不过还是不行,程序还是在接收数据的时候会直接死掉