C# serialPort控件无法触发DataReceived事件 100

我要实现的功能:上位机C#软件通过串口向单片机发送命令,单片机收到命令后通过串口向上位机发送数据,上位机收到数据再解析。我的代码如下:有些框架代码我省略了usingSys... 我要实现的功能:上位机C#软件通过串口向单片机发送命令,单片机收到命令后通过串口向上位机发送数据,上位机收到数据再解析。我的代码如下:
有些框架代码我省略了
using System.IO.Ports;

private void Form1_Load(object sender, EventArgs e)
{

Control.CheckForIllegalCrossThreadCalls = false;
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); //定义事件

}
private void button1_Click(object sender, EventArgs e) //串口初始化按钮
{
try
{

serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = 38400;
serialPort1.Open();

}
catch
{
MessageBox.Show("串口打开错误!", "错误");

}
}

private void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{

serialPort1.Read(receivebuf, 0, receivebuf.Length); //此处设置断点后,无法执行到这一步,就是该事件未触发
//下面是数据处理的代码,略
}

private void button2_Click(object sender, EventArgs e) //通过定时器触发向下位机发送采集数据命令
{
button3.Enabled = true;
timer1.Interval = 3 * 1000;
timer1.Start();

}

private void timer1_Tick(object sender, EventArgs e)
{

byte[] sendbuf = new byte[6] { 0xef, 0xc0, 0x00, 0x00, 0xc0, 0xfe };
serialPort1.Write(sendbuf, 0, 6);

}
}
}
我是用同一个串口COM1进行通信,经检测,上位机能发送数据给下位机,但是下位机发送数据给上位机的时候未触发DataReceived事件,我用串口调试助手试了下,完全正常通信
展开
 我来答
jimodeduzou
2014-03-11 · TA获得超过3202个赞
知道大有可为答主
回答量:2567
采纳率:66%
帮助的人:1293万
展开全部
个人不是特别推荐使用DataReceived事件. 因为这种方法很被动, 出现问题很难确认到底哪里有问题
你可以尝试下述调试方法:
1: 你试试把时间发送命令,修改成按钮发送一次, 调试一下,看看是否能触发. 因为DataReceived事件在定时触发里面,如果间隔段设置不好,容易出问题,因为串口助手是软件,你实际发送接收命令面对的是物理机器, 同步是大问题.

2:不要使用DataReceived事件和定时器配合使用, 自己手动读取判定. 时间间隔设置要看你对设备本身的熟悉程度.
匿名用户
2014-03-11
展开全部
把 serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); //定义事件代码放到form_load外面试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
164789415
2016-02-26
知道答主
回答量:7
采纳率:0%
帮助的人:2.6万
展开全部
你解决这个问题了吗?我也是这个情况啊
http://zhidao.baidu.com/question/747540858614013892.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式