- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 Contiki 中为 Zolertia REmote 编写一个程序,它将从传感器读取一个值,并且根据这个值以及 Remote 上的用户按钮是否被长时间按下,LED 将被打开打开、变暗或将保持关闭状态。到目前为止,我拥有的部分代码是这样的:
同时(1){
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
ldr = adc_zoul.value(ZOUL_SENSORS_ADC1);
printf("ADC1 = %u raw\n", ldr);
if (ldr >= 16500) {
PROCESS_YIELD();
if (ev == button_press_duration_exceeded) {
GPIO_SOFTWARE_CONTROL(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK);
GPIO_SET_OUTPUT(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK);
GPIO_SET_PIN(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK); /*Set High*/
}
else {
pwm_enable(pwm_num.freq, pwm_num.duty, 0, pwm_num.timer, pwm_num.ab);
pwm_start(pwm_num.timer, pwm_num.ab, pwm_num.port, pwm_num.pin);
}
}
else if (ldr < 16500 && ldr >= 6600) {
PROCESS_YIELD();
if(ev == button_press_duration_exceeded) {
pwm_enable(pwm_num.freq, pwm_num.duty, 0, pwm_num.timer, pwm_num.ab);
pwm_start(pwm_num.timer, pwm_num.ab, pwm_num.port, pwm_num.pin);
}
else {
GPIO_SOFTWARE_CONTROL(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK);
GPIO_SET_OUTPUT(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK);
GPIO_CLR_PIN(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK); /*Set Low*/
}
}
else {
GPIO_SOFTWARE_CONTROL(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK);
GPIO_SET_OUTPUT(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK);
GPIO_CLR_PIN(EXAMPLE_PORT_BASE, EXAMPLE_PIN_MASK); /*Set Low*/
}
etimer_reset(&et);
我的问题是当 ldr 值从低于 6600 变为高于 16500 时,因此无论如何 LED 灯都应该变暗。然而,事实上,除非我按下用户按钮,否则它不会变暗,即使是一秒钟。然后,只要 ldr 值保持在 16500 以上,一切正常 - 当我按下按钮时,led 完全打开,当我释放它时,led 变暗。但是,当 ldr 变化并从 16500 以上变为 [6600,16500),并且在未按下按钮时 LED 应该熄灭,它实际上变暗,直到我再次按下用户按钮甚至一秒钟。
如我所见,问题是即使 ldr 值发生变化,除非我按下用户按钮,否则它不会被读取。我认为这与命令 PROCESS_YIELD(); 的使用有关,它告诉程序等待事件发生。但是,如果我删除此命令,则 LED 根本不会亮起或变暗。所以,我的猜测是我必须触发一个事件才能读取 ldr 值。
有没有人知道如何做到这一点?提前致谢!
最佳答案
您可能需要使用以下内容:
Process_wait_event_until(ev==XXXXXX);
而不是 process yield
。
关于Contiki - 如何触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868196/
Contiki 调度程序是抢占式的吗? Tinyos 不是;有 nanork,我不确定它的发展处于什么状态。 最佳答案 Contiki 支持抢占式线程。引用: https://github.com/c
我想使用 Contiki OS 中的广播函数来广播整数数组。然而,当给出整数数组作为输入时, packetbuf_copyfrom() 函数似乎对我不起作用。当通过 Cooja 的“ radio 消息
我正在使用 Contiki 操作系统编写程序。 我有 remote_firmware.c 文件和一个名为 parser 的文件夹,其中包含文件 parser.h 和 parser.c 我在其中编写了方
我正在尝试在 Contiki 中为 Zolertia REmote 编写一个程序,它将从传感器读取一个值,并且根据这个值以及 Remote 上的用户按钮是否被长时间按下,LED 将被打开打开、变暗或将
我试图理解 examples/cc26xx/cc26xx-ble-client-demo 中存在的 IPv6-over-BLE UDP-client 演示示例,该代码具有以下头文件: #include
嗨,我尝试将 cooja simluator 中的 mqtt mote 连接到桌面上的 mosquitto 服务器。但它一直无法连接,我能够 ping rpl 路由器,但不能 ping 我的 mqtt
我有以下问题,我的模拟结果卡在 while 循环中。在我看来,原因是我们无法在循环结束之前在mote 1.0上执行recv_uc。然而,是 mote 1.0 本身调用 unicast_send(&
我想将模拟的时间戳值作为 int 发送。更清楚地说,如果节点输出是: 00:39.841 ID:6 unicast message ready to be sent 我希望能够在消息中输入值
因为 Contiki 提供的内置列表不符合我的需求(使用太多内存),我实现了自己的列表版本,该版本已针对我打算如何使用它进行了优化。 在任何时候,这些列表中都会有一个由多个进程/原线程对其进行操作(即
在我的一个 Contiki 应用程序中,我从进程 (P) 调用某个函数 (f)。当驻留在 (f) 中的循环中至少有一个 'printf' 时,(P) 中的 'printf' 会正确显示结果。然而,当同
在我的代码中,我需要声明两个进程。在第一个过程中,我想这样调用第二个: PROCESS_THREAD(Initialization_process, ev, data) { PROCESS_
我正在开发一个需要 msp430 数学函数的应用程序。使用 powf、sqrt 等函数时,会发生内存溢出 (ROM)。一个这样的例子是,当我使用这个 float i 变量而不使用静态时,我的代码可以工
是否有可能在 contiki os 中列出所有正在运行的进程并在调试输出(即 UART)上输出结果? 最佳答案 在 contiki platform.c 和 main() 中插入: struct pr
我正在使用无线传感器网络负责人评估其在我的工作中的性能。我想测量延迟和总能耗以找到每个节点中的剩余能量。所以我的问题是我有一些 tx rx cpu cpu_idle 的值,我不知道如何使用它们来计算我
我正在 Contiki 作为我的学术工作,现在我有一个问题,我应该从 Contiki 中的示例文件夹中具体引用哪个文件来模拟场景,例如 - 具有 ipv6 节点的 30 个节点物联网,所有这些节点都将
我刚刚开始研究Contiki-OS。我对 Contiki - Antelope 感兴趣。我尝试使用 AQL(Antelope 查询语言)在串行 Cooja 模拟中创建关系、属性和插入元组。像这样: c
在不更改任何其他文件的情况下,我尝试运行 ccm-star-tests在 cooja 模拟器中的 z1 微粒上。 对于encryption节点输出为: Testing verification ...
我想将全局地址转换为链接级地址(或者即使可以进行相反的操作),我在 uip6.c 文件中有以下函数。我想将 rep (其中 rep 为我提供带有 fe80 之类的前缀的 lladdress)转换为 s
如何在recv_uc 函数中打印接收到的数据?在这种情况下是 var 的值。我使用 packetbuf_copyfrom(&var, 5) 将 var 放入发送的数据包中。 PROCESS(sendi
我想为 Contiki OS 添加一个第三方库。确切地说,我正在尝试添加 nettle 3.0 密码学库。 我是否应该使用 contiki 平台的特殊标志来构建相关库,不确定具体是什么?海合会 msp
我是一名优秀的程序员,十分优秀!