首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Contiki过程停止

Contiki过程停止
EN

Stack Overflow用户
提问于 2021-12-19 11:05:20
回答 1查看 56关注 0票数 0

我正在尝试编写一个小进程线程,它将侦听传入的数据,将其写入闪存,然后再读取它。代码如下所示

代码语言:javascript
复制
PROCESS(test_serial, "serial");
PROCESS(read_file, "readfile");
AUTOSTART_PROCESSES(&test_serial);

PROCESS_THREAD(read_file, ev, data)
{
  PROCESS_BEGIN();
  int r = 0;

  if(cfs_seek(fd, 0, CFS_SEEK_SET) != 0) {
    printf("seek failed\n");
    cfs_close(fd);
  }

  while (total_bytes_written > 0)
  {
    uint8_t testbuff[10] = {0};
    r = cfs_read(fd, testbuff, 10);
    if(r != 10) {
      LOG_ERR("failed to read %d bytes, read only %d",total_bytes_written, r);
      cfs_close(fd);
      total_bytes_written = r;
    }
    total_bytes_written -= r;
  }
  total_bytes_written = 0;
  cfs_close(fd);
  PROCESS_END();
}

PROCESS_THREAD(test_serial, ev, data)
{
  PROCESS_BEGIN();

  while(1) {
    PROCESS_YIELD();
    if(ev == serial_line_event_message) {
      switch (*(uint8_t *)data)
      {
      case BEGINN:
        open_file();
        write_to_flash((uint8_t *)(data + 1));
        break;
      case CONTINUE:
        write_to_flash((uint8_t *)(data + 1));
        break;
      case END:
        write_to_flash((uint8_t *)(data + 1));
        process_start(&read_file, NULL);
        break;
      default:
        break;
      }
    }
  }
  PROCESS_END();
}

写到flash作品,因此我没有包括代码。这段代码非常类似于contiki文档中的示例。

每次我写到闪存时,total_bytes_written都会增加。在接收到所有字节后,我尝试读取它们。问题是,当process.c调用事件计时器的do_poll时,进程似乎停止了,之后不再继续。据我理解,AUTOSTART_PROCESSES将我的流程添加到Contiki的进程列表中。因此,Contiki应该在事件计时器轮询之后恢复我的进程,因为事件没有什么可做的,而且我没有任何其他进程在运行?

EN

回答 1

Stack Overflow用户

发布于 2022-01-05 13:49:12

看起来,这一进程并没有停止。问题是,一旦发生了另一个事件,日志记录就会停止。当我创建一个触发事件日志记录的小脚本时,它有足够的时间在下一个事件之前记录所有内容。现在唯一的错误是如何不间断地应用日志记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70410866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档