C++ sink将无线介质接入有限状态机的伪码

C++ sink将无线介质接入有限状态机的伪码,c++,networking,pseudocode,fsm,C++,Networking,Pseudocode,Fsm,此伪代码用于尝试访问无线媒体的接收器,以发送和接收来自传感器的数据 设置pc=0.01 发送一个轮询包 如果没有传感器响应轮询数据包,则设置pc=min(pc+0.01,1.0) 如果成功接收到来自其中一个传感器的数据包,请将pc保持在当前值 如果损坏的数据包指示两个或多个传感器之间发生碰撞,请设置pc=pc/2 重复步骤2 我已经阅读了链接,它真的帮助了我的传感器部分。但我仍然对尝试将上述伪代码转换为FSM感到困惑 有人能推荐一个链接或电子书,对如何将伪代码转换成FSM给出清晰的解释吗?我不确

此伪代码用于尝试访问无线媒体的接收器,以发送和接收来自传感器的数据

  • 设置
    pc=0.01
  • 发送一个轮询包
  • 如果没有传感器响应轮询数据包,则设置
    pc=min(pc+0.01,1.0)
  • 如果成功接收到来自其中一个传感器的数据包,请将
    pc
    保持在当前值
  • 如果损坏的数据包指示两个或多个传感器之间发生碰撞,请设置
    pc=pc/2
  • 重复步骤2
  • 我已经阅读了链接,它真的帮助了我的传感器部分。但我仍然对尝试将上述伪代码转换为FSM感到困惑


    有人能推荐一个链接或电子书,对如何将伪代码转换成FSM给出清晰的解释吗?

    我不确定你在这里真正想要的是什么;简单地编写这个代码将非常简单,而且这个问题看起来不值得我这么做

    下面是一些类似C的伪代码:

    double pc = 0.01;
    int sensorsfd;
    
    void loop(void) {
        for (;;) {
            fd_set readfds, writefds, exceptfds;
            FD_ZERO(&readfds);
            FD_ZERO(&writefds);
            FD_ZERO(&exceptfds);
            FD_SET(sensorsfd, &readfds);
    
            struct timeval tv;
            tv.tv_sec = 0;
            tv.tv_usec = 1; /* 0.001 seconds */
    
            int r;
    
            send_polling_packet();
    
            r = select(sensorsfd+1, &readfds, &writefds, &exceptfds, &tv);
    
            if (r == -1 && errno == EINTR) {
                continue;
            } else if (r == -1) {
                perror("select() failed");
                exit(1);
            } else if (r == 0) {
            /* timeout expired */
                pc = min (pc + 0.01, 1.0);
            } else if (r == 1) {
            /* sensorsfd won't block when reading it */
                packet_t p = read_packet(sensorsfd);
            /* should also handle _no packet_ if the sensors
               socket returns EOF */
                if (packet_corrupted(p)) {
                    pc /= 2;
                } else {
                    handle_packet(p);
                }
            } else {
                /* error in program logic */
            }
        }
    }
    
    伪代码的意思是,我只是写了这个,没有任何机制来测试 信息技术如果你的程序比这复杂得多,你可能会 要将所有
    select(2)
    设置封装到自己的函数中,并且
    可能是从传感器插座处理数据包的所有细节。

    标题很差劲,但它比您原来的好。请改进它;我对人际网络了解不多,所以我会让你来决定。