小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 6754|回复: 2

求救

[复制链接]
发表于 2013-5-11 20:34:20 | 显示全部楼层 |阅读模式
我想做个功能:当上位机接收一个来自下位机发送一个数据包时,在上位机的一个label上显示数据内容:设置如下

void DataCallBack(byte[] CallbackDataValue)
            {


                /*数据回传回调函数
                 * 当有数据从下位机到达上位机后,将执行到此函数
                 * CallbackDataValue[0]为类型位
                 * CallbackDataValue[1]为命令位
                 * CallbackDataValue[2]为数据位
                 * 包头包尾已经去掉
                 *
                 * 协议说明
                 * 0x03   雷达
                 * 0x89   拍照
                 * 0x60   电量
                 * 0x61   湿度
                 * 0x62   辐射
                 * 0x63   温度
                 *
                 * 数据位不允许超过10,步长1
                 *
                */


                    foreach (byte b in CallbackDataValue)
                    {
                        builder.Append(b.ToString("X2") + " ");


                    }
                    DelegateUI(builder.ToString());
                    builder.Clear();
                    label15.Text = "yifei";
                    label17.Text = "yifei";

                    //label17.Text = CallbackDataValue[2].ToString();
               


               
                if (CallbackDataValue[0] == 0x03)
                {
                    this.Invoke((EventHandler)(delegate
                    {


                        try
                        {


                            if (Int32.Parse(CallbackDataValue[1].ToString()) == 0)//雷达数据:弧度值
                            {
                                x_data = 0;
                            }
                            else
                            {
                                x_data = Int32.Parse(CallbackDataValue[1].ToString());
                            }


                            if (Int32.Parse(CallbackDataValue[2].ToString()) == 0)//雷达数据:距离值
                            {
                                y_data = 0;
                            }
                            else
                            {
                                y_data = Int32.Parse(CallbackDataValue[2].ToString());
                            }


                            RobotEngine2.WR_DEBUG("RADER", "x_data is:" + x_data.ToString() + ";++y_data is :" + y_data.ToString());


                        }
                        catch
                        {
                            x_data = 0;
                            y_data = 0;
                        }
                        if (RadarStatus)
                        {
                            GetTarget(x_data, y_data);
                        }


                    }));
                }
               
                else if (CallbackDataValue[0] == 0x99)
                {
                    //标志位为0x99
                    //CallbackDataValue[1]即为数据内容。
                   //请自行拓展
                   // label15.Text = CallbackDataValue[1].ToString();
                   // label17.Text = CallbackDataValue[2].ToString();
                }
               
                else
                {


                    RobotEngine2.WR_DEBUG("DATACALLBACK", "+++++++DATACALLBACK NOTHING+++++++++");
                }


            }  
      



但并不能显示字符“yifei”!请大家帮忙找找是什么原因

1.jpg
回复

使用道具 举报

发表于 2013-5-11 20:38:46 | 显示全部楼层
这个回调函数其实等于另一个线程在跑,而线程是不能直接更新UI的,所以必须用委托来让界面显示。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-11 21:34:36 | 显示全部楼层
老大真牛,给个具体办法让我能先实现想要的功能吧老大,急啊!高了好几天了,我C#很差
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-23 04:50 , Processed in 1.312942 second(s), 21 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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