我真的要疯掉了,如果能帮我解决,我以身相许!
我真的要疯掉了,如果能帮我解决,我以身相许!
serialPort1 发送串口数据
serialPort1.Close();
serialPort1.PortName = "COM1";
serialPort1.DataBits = 8;
serialPort1.BaudRate = 9600;
serialPort1.ReadTimeout = 2000;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.Open();
byte[] data1 = Encoding.Unicode.GetBytes(getHostIpName());
string str = Convert.ToBase64String(data1);
serialPort1.WriteLine(str);
MessageBox.Show("数据发送成功!", "系统提示");
serialPort1 获得串口数据
public partial class Form1 : Form
{
delegate void HandleInterfaceUpdateDelegate(string text); //委托,此为重点
HandleInterfaceUpdateDelegate interfaceUpdateHandle;
public Form1()
{
InitializeComponent();
SerialPort serialPort1 = new SerialPort();
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 9600;
serialPort1.ReadTimeout = 1000; //读超时
serialPort1.StopBits = StopBits.One;
serialPort1.Parity = Parity.Space;
interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(UpdateTextBox); //实例化委托对象
serialPort1.DataReceived += new SerialDataReceivedEventHandler
(serialPort1_DataReceived);//DataReceived事件委托
serialPort1.ReceivedBytesThreshold = 1;
serialPort1.RtsEnable = true;
serialPort1.Open();
}
private void UpdateTextBox(string text)
{
textBox1.Text = text;
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(2000);
byte[] readBuffer = new byte[serialPort1.ReadBufferSize];
serialPort1.Read(readBuffer, 0, readBuffer.Length);
this.Invoke(interfaceUpdateHandle, new string[] { Encoding.UTF8.GetString(readBuffer, 0,
100) });
}
发送数据没有问题,可是接受数据时,serialPort1_DataReceived 有反应,
可这句代码 serialPort1.Read(readBuffer, 0, readBuffer.Length);
他老是提示“端口被关闭。”
我实在不知道为什么,我明明在Form1()初始化中添加了这句代码啊 serialPort1.Open();
在线求大师!