在阅读C# 与VB.NET 网络通信开发实战 一书中,出现一点问题!想做一个单机串口通信的小型程序,可是提示错误 1 “DataReceived”的重载均与委托“System.IO.Ports.SerialDataReceivedEventHandler”不匹配 C:\Documents and Settings\Administrator\桌面\4.8\SerialPort Communition\WindowsFormsApplication1\Form1.cs 26 40 WindowsFormsApplication1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private SerialPort serialPort = new SerialPort();
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//下行有问题
serialPort.DataReceived += new System.IO .Ports .SerialDataReceivedEventHandler(DataReceived); string[] portNames = System.IO.Ports.SerialPort.GetPortNames();
for (int i = 0; i < portNames.Length - 1; i++)
{
comboBox1.Items.Add(portNames [i]);
}
button2.Enabled = false;
} private void button1_Click(object sender, EventArgs e)
{
if (serialPort.IsOpen)
{
serialPort.Close();
}
try
{
serialPort.PortName = comboBox1.Text;
serialPort.BaudRate = 9600;
serialPort.Parity = System.IO.Ports.Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = System.IO.Ports.StopBits.One; serialPort.Open(); label2.Text = comboBox1.Text + "connect";
button1.Enabled = false;
button2.Enabled = true;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString ());
} } private void button2_Click(object sender, EventArgs e)
{
try
{
serialPort.Close();
label2.Text = serialPort.PortName + " disconnected";
button1.Enabled = true;
button2.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString ());
}
} private void button3_Click(object sender, EventArgs e)
{
try
{
serialPort.Write(txtDataToSend.Text + Environment.NewLine);
txtDataReceived.AppendText(">" + txtDataToSend.Text + Environment.NewLine);
txtDataReceived.ScrollToCaret();
txtDataToSend.Text = string.Empty;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString ());
}
} private void DataReceived(System.IO.Ports.SerialDataReceivedEventArgs e)
{
txtDataReceived.BeginInvoke(new myDelegate (updateTextBox));
} public delegate void myDelegate();
public void updateTextBox()
{
txtDataReceived.AppendText(serialPort .ReadExisting());
txtDataReceived.ScrollToCaret();
} }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private SerialPort serialPort = new SerialPort();
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//下行有问题
serialPort.DataReceived += new System.IO .Ports .SerialDataReceivedEventHandler(DataReceived); string[] portNames = System.IO.Ports.SerialPort.GetPortNames();
for (int i = 0; i < portNames.Length - 1; i++)
{
comboBox1.Items.Add(portNames [i]);
}
button2.Enabled = false;
} private void button1_Click(object sender, EventArgs e)
{
if (serialPort.IsOpen)
{
serialPort.Close();
}
try
{
serialPort.PortName = comboBox1.Text;
serialPort.BaudRate = 9600;
serialPort.Parity = System.IO.Ports.Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = System.IO.Ports.StopBits.One; serialPort.Open(); label2.Text = comboBox1.Text + "connect";
button1.Enabled = false;
button2.Enabled = true;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString ());
} } private void button2_Click(object sender, EventArgs e)
{
try
{
serialPort.Close();
label2.Text = serialPort.PortName + " disconnected";
button1.Enabled = true;
button2.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString ());
}
} private void button3_Click(object sender, EventArgs e)
{
try
{
serialPort.Write(txtDataToSend.Text + Environment.NewLine);
txtDataReceived.AppendText(">" + txtDataToSend.Text + Environment.NewLine);
txtDataReceived.ScrollToCaret();
txtDataToSend.Text = string.Empty;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString ());
}
} private void DataReceived(System.IO.Ports.SerialDataReceivedEventArgs e)
{
txtDataReceived.BeginInvoke(new myDelegate (updateTextBox));
} public delegate void myDelegate();
public void updateTextBox()
{
txtDataReceived.AppendText(serialPort .ReadExisting());
txtDataReceived.ScrollToCaret();
} }
}
解决方案 »
- XML 节点的复制
- 用HttpWebRequest取远程文件的大小为什么返回值为-1?
- 晕死了,100分求解,sockets中写byte[]数据的问题.
- winform中树与数据库绑定后显示树节点信息的问题(在线等)
- C#线程异常退出?
- 在程序里面用方括号括住的内容有什么用的?比如“[STAThread]”。多谢
- 请问c#类中的成员变量、字段(域)和属性有什么联系和区别?
- 监视多用户登录的文件访问
- WPF 自定义窗体 拖动改变窗体大小时,如何用代码实现虚线框的效果?
- 未将对象引用设置到对象的实例 C# 结构体
- [经验分享]DrawRectangle边框宽度
- 下面的这段代码在VS里面自动生成。这段代码是什么意思?
Object sender,
SerialDataReceivedEventArgs e
)将 private void DataReceived(System.IO.Ports.SerialDataReceivedEventArgs e)
{
txtDataReceived.BeginInvoke(new myDelegate (updateTextBox));
}
修改为
private void DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
txtDataReceived.BeginInvoke(new myDelegate (updateTextBox));
}
即可。