野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10829|回复: 4

火哥求助 上位机接收数据处理

[复制链接]
发表于 2015-5-5 13:09:57 | 显示全部楼层 |阅读模式
我想用上位机实时显示四个节点传来的数据,但在串口接收事件中不知道怎么处理,自己写了一个但是根本不能显示
  1. private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//与上面对应,串口数据接收事件
  2.         {
  3.             try
  4.             {
  5.                 int n = serialPort1.BytesToRead;
  6.                 byte[] arr = new byte[n];
  7.                 serialPort1.Read(arr,0,n);              
  8.                 if (arr[0] == 0xAA && arr[3] == 0XCC)
  9.                 {
  10.                     switch (arr[1])
  11.                     {
  12.                         case 0x01: textBox1.Text = arr[2].ToString(); break;
  13.                         case 0x02: textBox2.Text = arr[2].ToString(); break;
  14.                         case 0x03: textBox3.Text = arr[2].ToString(); break;
  15.                         case 0x04: textBox4.Text = arr[2].ToString(); break;
  16.                     }
  17.                 }                              
  18.             }
  19.             catch
  20.             {

  21.             }
  22.         }
复制代码
火哥 求助啊

主题推荐

回复

使用道具 举报

发表于 2015-5-5 15:56:40 | 显示全部楼层
接收数据之后你还要调用显示函数来显示呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-5 20:12:25 | 显示全部楼层
flyleaf 发表于 2015-5-5 15:56
接收数据之后你还要调用显示函数来显示呀

是的是的  不过现在解决了   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-5 20:13:15 | 显示全部楼层
flyleaf 发表于 2015-5-5 15:56
接收数据之后你还要调用显示函数来显示呀

是的是的  不过现在解决了   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-5 20:14:40 | 显示全部楼层
没有用线程写

int k = 0;
        byte[] arr = new byte[8];
        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//与上面对应,串口数据接收事件
        {      
            arr[k++] = (byte)serialPort1.ReadByte();
            if (k == 8)
            {
                k = 0;
                if ((arr[0] == 0xAA) && (arr[6] == 0x51) && (arr[7] == 0XCC))
                {
                    switch (arr[1])
                    {
                        case 0x01: textBox1.Text = arr[2].ToString() + "   m/s"; break;
                        case 0x02: textBox2.Text = arr[2].ToString() + "   d/b"; break;
                        case 0x03: textBox3.Text = arr[2].ToString() + "   c/t"; break;
                    }
                }
            }
        }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-30 06:33 , Processed in 0.030171 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表