大家好:我用serialport写了一个串口通讯程序老是说system.timeout操作超时。下面是程序:请大家帮忙分析一下谢谢!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;namespace 串口通讯
{
public partial class Form1 : Form
{
//bool opened = false;
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ } private void button1_Click(object sender, EventArgs e)
{
if (button2.Enabled == true)
{
MessageBox.Show("请打开串口!", "系统提示");
}
else
{
//serialPort1.Open();
byte[] Data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(Data);
serialPort1.WriteLine(str);
MessageBox.Show("发送数据成功!", "系统提示");
}
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
if (button2.Enabled == true)
{
MessageBox.Show("请打开串口!", "系统提示");
}
else
{
try
{
byte[] Data1 = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text += Convert.ToString(DateTime.Now) + Encoding.Unicode.GetString(Data1) + "\r\n";
}
catch (Exception ex)
{
MessageBox.Show("tcfdtfg" + ex);
}
//serialPort1.Close();
timer1.Enabled = true;
} } private void button2_Click_1(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
timer1.Enabled=true;
button2.Enabled = false;
button3.Enabled = true;
textBox1.Text = "发送区";
textBox2.Text = "接收区"; } private void button3_Click_1(object sender, EventArgs e)
{
serialPort1.Close();
button2.Enabled = true;
button3.Enabled = true;
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;namespace 串口通讯
{
public partial class Form1 : Form
{
//bool opened = false;
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ } private void button1_Click(object sender, EventArgs e)
{
if (button2.Enabled == true)
{
MessageBox.Show("请打开串口!", "系统提示");
}
else
{
//serialPort1.Open();
byte[] Data = Encoding.Unicode.GetBytes(textBox1.Text);
string str = Convert.ToBase64String(Data);
serialPort1.WriteLine(str);
MessageBox.Show("发送数据成功!", "系统提示");
}
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
if (button2.Enabled == true)
{
MessageBox.Show("请打开串口!", "系统提示");
}
else
{
try
{
byte[] Data1 = Convert.FromBase64String(serialPort1.ReadLine());
textBox2.Text += Convert.ToString(DateTime.Now) + Encoding.Unicode.GetString(Data1) + "\r\n";
}
catch (Exception ex)
{
MessageBox.Show("tcfdtfg" + ex);
}
//serialPort1.Close();
timer1.Enabled = true;
} } private void button2_Click_1(object sender, EventArgs e)
{
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.Open();
timer1.Enabled=true;
button2.Enabled = false;
button3.Enabled = true;
textBox1.Text = "发送区";
textBox2.Text = "接收区"; } private void button3_Click_1(object sender, EventArgs e)
{
serialPort1.Close();
button2.Enabled = true;
button3.Enabled = true;
}
}
}
(2)通过委托进行TextBox数据修改