风无痕丶 2020-08-21 10:15 采纳率: 0%
浏览 148

C#对串口传输来的16进制数据进行判断,使对应的信号灯亮灭。

C#新手自学一个串口小项目,通过串口接收单片机数据,单片机每次发来1bit数据55(帧头)、01/00(灯亮/灭)、02(地址,),怎么实现先判断帧头、再判断灯状态,最后通过地址使想要的信号灯亮/灭?我使用标准位进行判断没有反应,各位大佬指导下。说得不太清楚,用图片说明吧。
接收单片的数据:
图片说明

实现的功能:(55 00 02)/(55 01 02)
图片说明

图片说明

我写的标志位判断:

                        int falge = 0;//接收数据标志位
            int led_falge = 0;//灯状态标志位
            int led_dz = 0; //灯地址标准位

            if (falge == 0)
            {
                if (sb.ToString() == "55 ")
                {
                    falge = 1;
                }
                else
                {
                    falge = 0;
                }//复位
            }
            if (falge == 1)
            {
                if (sb.ToString() == "02 ")
                {
                    led_falge = 1;
                }
                else
                {
                    led_falge = 0;
                }

            }
            if (led_falge == 1)
            {
                if (sb.ToString() == "02 ")
                {
                    led_dz = 2;
                }
            }

            if (led_dz == 2)
            {
                /* 灯亮 并且复位接收数据标志位*/
                pictureBox6.Image = imageList1.Images[2];
                // falge = 0;
            }
            else
            {
                /*灯灭的代码 记得复位数据接收标志位 */
                pictureBox6.Image = imageList1.Images[0];
                // falge = 0;
            }

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-08-21 11:05
    关注

    调试输出下 sb.ToString()
    这个到底是多少。
    也就是你判断的逻辑对不对。

    flag单词拼写你也错了。虽然不是代码问题,但是体现了你的认真程度。

    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法