WPF如何串口接收内容

cl17726 2013-03-19 05:00:58
我用了如下方法初始化
                SerialPort serialPort1 = new SerialPort();
serialPort1.PortName = "COM4";
serialPort1.BaudRate = 9600;
if(serialPort1.IsOpen){
MessageBox.Show("串口早就打开了有木有!");
}else{
MessageBox.Show("正在打开呢!");
try{
serialPort1.Open();
serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);

}catch{
MessageBox.Show("打开不鸟哦!");
}
}



想添加一个函数
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
int rx = serialPort1.ReadByte();
MessageBox.Show(Convert.ToString(rx));
}

可是提示serialPort1是不存在的,另外不知道如何触发这个函数.
...全文
618 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
leafmao 2013-03-20
  • 打赏
  • 举报
回复
引用 6 楼 cl17726 的回复:
引用 5 楼 leafmao 的回复:引用 4 楼 leafmao 的回复: 你的serialPort1是在方法里定义的吧,那就只在该方法里有效,所以提示serialPort1是不存在的。 解决办法参照1楼的。 想触发那个事件的话,绑定接收事件即可: serialPort1.DataReceived += new SerialDataReceivedEvent……
可以这样读string received=serialPort1.ReadExisting();或者 int len=serialPort1.BytesToRead; byte[]received=new byte[len]; serialPort1.Read(received,0,len); 放在private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)方法里
ariesget 2013-03-20
  • 打赏
  • 举报
回复
引用 10 楼 cl17726 的回复:
引用 9 楼 ariesget 的回复:引用 8 楼 cl17726 的回复: 引用 3 楼 llxaphy1314 的回复:serialport 当用户发送数据,且串口有返回时才能接受到数据。 当接受到数据触发serialPort1_DataReserialPort1ceived事件 serialPort1的生命周期太短,所以在接收的处理函数有问题。 。。。。……
你的serialPort1_DataReceived方法里写。 private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { SerialPort serialPort1 = sender as SerialPort; int rx = serialPort1.ReadByte(); MessageBox.Show(Convert.ToString(rx)); }
cl17726 2013-03-19
  • 打赏
  • 举报
回复
引用 9 楼 ariesget 的回复:
引用 8 楼 cl17726 的回复: 引用 3 楼 llxaphy1314 的回复:serialport 当用户发送数据,且串口有返回时才能接受到数据。 当接受到数据触发serialPort1_DataReserialPort1ceived事件 serialPort1的生命周期太短,所以在接收的处理函数有问题。 。。。。你的serialPort1只是个局部变量,作用域只在方法内啊。。这……
在接收的函数里面设置?>还是在using下面设置?
ariesget 2013-03-19
  • 打赏
  • 举报
回复
引用 8 楼 cl17726 的回复:
引用 3 楼 llxaphy1314 的回复:serialport 当用户发送数据,且串口有返回时才能接受到数据。 当接受到数据触发serialPort1_DataReserialPort1ceived事件 serialPort1的生命周期太短,所以在接收的处理函数有问题。
。。。。你的serialPort1只是个局部变量,作用域只在方法内啊。。这些都是最基本的东西。serialPort1_DataReceived函数内又没定义serialPort1,编译器哪知道你这写出来的serialPort1变量是啥。所以得加上SerialPort serialPort1 = sender as SerialPort;
cl17726 2013-03-19
  • 打赏
  • 举报
回复
引用 3 楼 llxaphy1314 的回复:
serialport 当用户发送数据,且串口有返回时才能接受到数据。 当接受到数据触发serialPort1_DataReserialPort1ceived事件
serialPort1的生命周期太短,所以在接收的处理函数有问题。
cl17726 2013-03-19
  • 打赏
  • 举报
回复
引用 1 楼 ariesget 的回复:
SerialPort serialPort1 = sender as SerialPort; int rx = serialPort1.ReadByte();
在绑定的serialPort1_DataReceived函数内执行吗?
cl17726 2013-03-19
  • 打赏
  • 举报
回复
引用 5 楼 leafmao 的回复:
引用 4 楼 leafmao 的回复: 你的serialPort1是在方法里定义的吧,那就只在该方法里有效,所以提示serialPort1是不存在的。 解决办法参照1楼的。 想触发那个事件的话,绑定接收事件即可: serialPort1.DataReceived += new SerialDataReceivedEventHandler(this.serialPort1_DataRec……
serialPort1_DataReceived 里如何读取串口数据呢
leafmao 2013-03-19
  • 打赏
  • 举报
回复
引用 4 楼 leafmao 的回复:
你的serialPort1是在方法里定义的吧,那就只在该方法里有效,所以提示serialPort1是不存在的。 解决办法参照1楼的。 想触发那个事件的话,绑定接收事件即可: serialPort1.DataReceived += new SerialDataReceivedEventHandler(this.serialPort1_DataReceived); ……
原来LZ已经绑定过了,那只要串口打开的时候接收到数据会自动触发该事件的
leafmao 2013-03-19
  • 打赏
  • 举报
回复
你的serialPort1是在方法里定义的吧,那就只在该方法里有效,所以提示serialPort1是不存在的。 解决办法参照1楼的。 想触发那个事件的话,绑定接收事件即可: serialPort1.DataReceived += new SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
xili刘大大爷 2013-03-19
  • 打赏
  • 举报
回复
serialport 当用户发送数据,且串口有返回时才能接受到数据。 当接受到数据触发serialPort1_DataReceived事件
hjx595 2013-03-19
  • 打赏
  • 举报
回复
http://blog.csdn.net/wuyazhe/article/details/5598945 用委托。。。 或者在接收事件里面写 this.Invoke((EventHandler)(delegate { }));
ariesget 2013-03-19
  • 打赏
  • 举报
回复
SerialPort serialPort1 = sender as SerialPort; int rx = serialPort1.ReadByte();

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧