//注:新手剛學習,如有錯誤,歡迎指正。
//飲水不忘挖井人,感謝帶我入行的前輩。
1、簡介
使用contiki操作系統,開始一個進程之後,進程會進行等待一些事件或者超時消息等。
列如:
(1)可以用在某些週期性的應用,比如週期的讀取溫度溼度傳感器信息,週期性的採樣的行爲。
(2)等待某一個事件,比如等待加速度信息。
2、邏輯簡介
(1)開始這個進程
process_start(&adc_sensor_process, NULL);
(2)向這個進程post事件信息
process_post(&adc_sensor_process, at_cmd_event, &cmd_type);
3、代碼實現
(1)先初始化進程
void gsm_process_init(void)
{
gsm_cmd = fifo_create(&fifo_ram, sizeof(uint8_t), 16);
at_cmd_event = process_alloc_event();
process_start(&adc_sensor_process, NULL);
}
(2)進程的具體實現
PROCESS(adc_sensor_process, " adc_sensor_process ");
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(adc_sensor_process, ev, data)
{
PROCESS_BEGIN();
While(1)
{
PROCESS_WAIT_EVENT_UNTIL((ev == cmd_ack_event)||(ev == ack_timeout_event));
If(ev == cmd_ack_event)
{
Printf(“ cmd_ack_event \n”);
}
If (ev == ack_timeout_event)
{
printf("Hello, world\n");
}
}
PROCESS_END();
}
(3)在某處post這個事件
process_post(&adc_sensor_process, NULL, NULL);