C# SerialPort串口通讯控制道闸,发送数据有动作,但数据接收不到,DataReceived事件总是不触发?

 我来答
Sxzy灬丨小柒
2015-01-15 · TA获得超过623个赞
知道小有建树答主
回答量:1223
采纳率:50%
帮助的人:270万
展开全部

用串口调试工具确保代码无误.

设置好串口和比特率点击open,然后编辑内容发送.用下面的方法接收.

  private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            try
            {
                if (serialPort1.IsOpen)
                {
                    StringBuilder strb = new StringBuilder();
                    byte[] l_byte = new byte[4096];
                    Thread.Sleep(3000);//每次接收中间加延迟,便于接收完整数据.
                    int l_int = serialPort1.Read(l_byte, 0, l_byte.Length);
                    if (l_int > 0)//不是空数据
                    {
                        strb.Append(Encoding.UTF8.GetString(l_byte, 0, l_int));
                        string res = strb.ToString();

如果res = "hello" 那你的代码就没问题.

查晓筠0i5
2015-01-15 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4905万
展开全部
需要给你完成一份吗
追问
什么意思?有示例代码能给我发份更好
追答
需要定做可以丘上说
我id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甫幼冬6
2015-01-15 · TA获得超过205个赞
知道小有建树答主
回答量:169
采纳率:50%
帮助的人:119万
展开全部
贴代码上来,我看看
更多追问追答
追问
不管什么代码,就是不往接收事件上跳。发送是正常的,因为设备是动作了。
追答
额。。首先确认SerialPort的DataReceived事件有没有关联上,然后确认设备是否真的有返回数据,可以用串口调试助手手动发送指令,看看有数据返回没,如果有,那就在找找上位机程序的问题,如果没有返回数据,那就是下位机设备的问题了;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式