国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

lv6 嵌入式開發(fā)-Flappy bird項目(信號機制、定時器功能實現(xiàn))

這篇具有很好參考價值的文章主要介紹了lv6 嵌入式開發(fā)-Flappy bird項目(信號機制、定時器功能實現(xiàn))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1 信號(signal)

2 設置信號響應方式 – signal

3 設置定時器

4 示例


問題:

getch()阻塞獲取鍵盤按鍵輸入, 怎么操作才能不影響小鳥下落和管道移動?

getch如果阻塞,下面的程序都是無法執(zhí)行。通過信號機制方式實現(xiàn)。

1 信號(signal)

在Linux中,軟中斷信號(signal,簡稱為信號)是在軟件層次上對中斷的一種模擬,用來通知進程發(fā)生了異步事件。內(nèi)核可以因為內(nèi)部事件而給進程發(fā)送信號,通知進程發(fā)生了某個事件。

信號響應的方式:

1.忽略信號,即對信號不做任何處理;

2.捕捉信號,即信號發(fā)生時執(zhí)行用戶自定義的信號處理函數(shù)。

3.執(zhí)行缺省操作,Linux對每種信號都規(guī)定了默認操作。

信號的檢測與處理流程圖

lv6 嵌入式開發(fā)-Flappy bird項目(信號機制、定時器功能實現(xiàn)),嵌入式開發(fā),linux

2 設置信號響應方式 – signal

#include  <unistd.h>
#include <signal.h>

typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler); 

成功時返回原先的信號處理函數(shù),失敗時返回SIG_ERR ?

signum:指明了所要處理的信號類型 ?

handler:描述了與信號關聯(lián)的動作 ?? ? ? ? ? ? ?

????????SIG_DFL代表缺省方式; SIG_IGN 代表忽略信號; ?? ? ? ? ? ? ?

????????指定的信號處理函數(shù)代表捕捉方式

示例

// 頭文件省略
void handler (int signo) {

     printf(“HELLO!\n”); 
}

int  main() {
     signal(SIGINT, handler);
      while ( 1 ) ;
      return 0;
}

3 設置定時器

struct itimerval {
    struct timeval it_interval; /* 計時器重新啟動的間歇值 */
    struct timeval it_value;    /* 計時器安裝后首次啟動的初 };                               始值,之后就沒有用 */
struct timeval {
    long tv_sec;       /* 秒 */
    long tv_usec;      /* 微妙*/
};

計時器的實現(xiàn)

int setitimer(int which, const struct itimerval *value,            
                struct itimerval *ovalue)

參數(shù): which:間歇計時器類型, ? ?

? ? ? ? ? ? ? ? ? ?ITIMER_REAL ? ? //數(shù)值為0,發(fā)送的信號是SIGALRM。

????????????struct itimerval *value:將value指向的結構體設為計時器的當前值,

? ? ? ? ? ? struct itimerval *ovalue:保存計時器原有值。一般設置為NULL。

返回值: 成功返回0。失敗返回-1。

4 示例

#include <stdio.h>
#include <curses.h>
#include <signal.h>
#include <sys/time.h>

int x=10,y=10;
int a=5,b=10;
void handler(int sig)
{
	move(a,b);
	addch('B');
	refresh();
	b++;

}
int main(int argc, const char *argv[])
{
	char ch;
	initscr();//進入curses模式
	curs_set(0);
	noecho();//禁止字符顯示
	keypad(stdscr,1);//允許使用功能鍵
	start_color();//啟動顏色機制
	init_pair(1,COLOR_WHITE, COLOR_RED);
	init_pair(2,COLOR_GREEN,COLOR_WHITE);

	signal(SIGALRM, handler);

	/*設置定時時間*/
	struct itimerval timer;
	timer.it_value.tv_sec = 3;//首次啟動定時時間
	timer.it_value.tv_usec = 0;
	timer.it_interval.tv_sec = 1;//之后每次的定時時間
	timer.it_interval.tv_usec = 0;
	/*啟動定時*/
	setitimer(ITIMER_REAL, &timer, NULL);

	while(1){
		ch = getch();
		if(ch == 'Q')
		{
			attron(COLOR_PAIR(1));
			move(x,y);
			addch('A');
			refresh();
			y++;
			attroff(COLOR_PAIR(1));
		}
	}

	while(1);
	endwin();//退出curses模式
	return 0;
}

5 練習

使用信號機制實現(xiàn)每隔1s打印字符串“Flappy bird”,提交代碼。

方式1

#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>

void handle(int sig)
{
	
	printf("Flappy bird\n");
	
}

int main(int argc,char *argv[])
{
	struct sigaction act;
	struct itimerval timevalue;
	int ret;

	
	act.sa_handler = handle;
	act.sa_flags = 0;
	sigemptyset(&act.sa_mask);

	timevalue.it_interval.tv_sec = 1;
	timevalue.it_interval.tv_usec = 0;
	timevalue.it_value.tv_sec = 5;
	timevalue.it_value.tv_usec = 0;

	setitimer(ITIMER_REAL, &timevalue,NULL);
	ret = sigaction(SIGALRM,&act,NULL);

	if(ret < 0)
	{
		perror("sigaction");
		return 0;
	}

	
	while(1)
	{

	}

	return 0;
}

方式2文章來源地址http://www.zghlxwxcb.cn/news/detail-729663.html


#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>

void handle(int sig)
{
	
	printf("Flappy bird\n");
	
}

int main(int argc,char *argv[])
{

	struct itimerval timevalue;


	timevalue.it_interval.tv_sec = 1;
	timevalue.it_interval.tv_usec = 0;
	timevalue.it_value.tv_sec = 5;
	timevalue.it_value.tv_usec = 0;

	setitimer(ITIMER_REAL, &timevalue,NULL);
	signal(SIGALRM,handle);


	
	while(1)
	{

	}

	return 0;
}

到了這里,關于lv6 嵌入式開發(fā)-Flappy bird項目(信號機制、定時器功能實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • lv3 嵌入式開發(fā)-3 linux shell命令(文件搜索、文件處理、壓縮)

    lv3 嵌入式開發(fā)-3 linux shell命令(文件搜索、文件處理、壓縮)

    目錄 1 查看文件相關命令 1.1 常用命令 1.2 硬鏈接和軟鏈接 2 文件搜索相關命令 2.1?查找文件命令 2.2 查找文件內(nèi)容命令 2.3 其他相關命令 3 文件處理相關命令 3.1?cut? 3.2 sed 過濾 3.3 awk 匹配 4 解壓縮相關命令 4.1?解壓縮文件的意義 4.2?解壓縮相關命令 cat - concatenate files and pri

    2024年02月10日
    瀏覽(24)
  • lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句)

    lv3 嵌入式開發(fā)-5 linux shell腳本編程(概念、變量、語句)

    ?Shell腳本是利用 shell 的功能所寫的一個程序。這個程序是使用純文本文件,將一些 shell 的語法與命令(含外部命令)寫在里面,搭配正則表達式、管道命令與數(shù)據(jù)流重定向等功能 ?第一個Shell腳本文件 變量來源于數(shù)學,是計算機語言中能儲存計算結果或能表示值的抽象概念

    2024年02月10日
    瀏覽(56)
  • lv7 嵌入式開發(fā)-網(wǎng)絡編程開發(fā) 03 TCP/IP與五層體系結構

    lv7 嵌入式開發(fā)-網(wǎng)絡編程開發(fā) 03 TCP/IP與五層體系結構

    目錄 1 TCP/IP協(xié)議族體系結構 1.1?OSI與TCP/IP 1.2?TCP/IP 的體系結構? 1.3?TCP/IP 體系結構的另一種表示方法 1.4?沙漏計時器形狀的 TCP/IP 協(xié)議族 2 五層協(xié)議的體系結構 2.1 各層的主要功能? 2.2 互聯(lián)網(wǎng)中客戶-服務器工作方式 2.3?同時為多個客戶進程提供服務? 3 練習 是事實上的國際標

    2024年02月07日
    瀏覽(25)
  • Python (Pygame) 游戲開發(fā)項目實戰(zhàn): 飛揚的小鳥 (Flappy Bird, 像素鳥)

    Python (Pygame) 游戲開發(fā)項目實戰(zhàn): 飛揚的小鳥 (Flappy Bird, 像素鳥)

    原文鏈接:https://xiets.blog.csdn.net/article/details/131791045 版權聲明:原創(chuàng)文章禁止轉載 專欄目錄:Pygame 專欄(總目錄) 使用 Python Pygame 開發(fā)一個 Flappy Bird 小游戲,也叫 飛揚的小鳥、像素鳥。 Flappy Bird 是一款簡單而富有挑戰(zhàn)性的益智休閑游戲。玩家只需要點擊屏幕即可操作。點

    2024年02月13日
    瀏覽(16)
  • 嵌入式開發(fā)--電子鋼琴項目(Linux+C開發(fā))附上源碼

    嵌入式開發(fā)--電子鋼琴項目(Linux+C開發(fā))附上源碼

    復盤一下之前做的一個小項目,溫習一下c語言和Linux的知識,唔,就是這樣子。 所用軟件以及工具如下: 1、VMware-workstation-full搭配Ubuntu18.04的Linux操作系統(tǒng),VMware是桌面虛擬計算機軟件,提供用戶可在單一的桌面上同時運行不同的操作系統(tǒng)和進行開發(fā)、測試 、部署新的應用程

    2024年02月08日
    瀏覽(35)
  • AI嵌入式K210項目(1)-芯片開發(fā)板介紹

    AI嵌入式K210項目(1)-芯片開發(fā)板介紹

    在人工智能大潮滾滾而來的時代,作為一個從事嵌入式行業(yè)多年的程序猿倍感焦慮,有被替代的焦慮,也有跟不上新技術步伐的無奈,本系列文章將介紹一個從硬件設計到ai訓練、最后到模型部署的完整案例;第一階段我將介紹使用C語言進行裸機開發(fā),在熟悉了硬件和系統(tǒng)之

    2024年01月17日
    瀏覽(100)
  • AI嵌入式K210項目(19)-安裝CanMV IDE開發(fā)軟件

    AI嵌入式K210項目(19)-安裝CanMV IDE開發(fā)軟件

    前幾章我們介紹K210使用C語言裸機開發(fā)方法,大家對K210內(nèi)部的硬件和各種加速器有了初步的了解,但是開發(fā)人工智能相關程序,使用C語言的話復雜度比較高,因此接下來我們逐步學習基于K210芯片使用python開發(fā)人工智能相關程序,包含顏色識別,人臉識別,口罩識別等,也包

    2024年01月25日
    瀏覽(19)
  • 嵌入式物聯(lián)網(wǎng)單片機項目開發(fā)實例-4G DTU邊緣數(shù)據(jù)采集網(wǎng)關開發(fā)

    鏈接:https://pan.baidu.com/s/163D-kElFqXov629YaSrWDw?pwd=1688 提取碼:1688 [1.EC200S_STM32F103_4G CAT1網(wǎng)絡TCP和UDP的透傳字符串] [2.EC200S_STM32F103_4G CAT1網(wǎng)絡TCP和UDP的透傳十六進制包含0x00] [3.EC200S_STM32F103_4G CAT1通過外置MQTT協(xié)議發(fā)送定位和固定數(shù)據(jù)到ONENET] [4.EC200S_STM32F103_4G CAT1通過外置MQTT協(xié)議發(fā)送

    2024年01月16日
    瀏覽(26)
  • 【Pygame】細致講解開發(fā)Flappy Bird小游戲

    【Pygame】細致講解開發(fā)Flappy Bird小游戲

    方式1: # 加載圖片 # 加載音樂 調(diào)用sound.play()即可播放音效。 方式2: 利用python的字典查找圖片。 通過python的內(nèi)置模塊os(operatingsystem) 來提供一些和操作系統(tǒng)有關的用法,使用os.listdir方法列出文件夾中的所有文件,利用os.splitext 分割文件名和后綴。 文件名+后綴(“小鳥”+”

    2023年04月13日
    瀏覽(61)
  • 嵌入式Linux實戰(zhàn)開發(fā)之項目總體概述(基于IMX6ULL)

    嵌入式Linux實戰(zhàn)開發(fā)之項目總體概述(基于IMX6ULL)

    現(xiàn)在越來越多的智能設備融入到我們的生活,然而,豐富的設備之下也是有一套基本的運行框架,只是根據(jù)不同的需求增減相應的功能從而滿足自身的需要。而電子產(chǎn)品量產(chǎn)工具項目,就是實現(xiàn)基礎的功能,可以作為一個基礎的模版,學成之后便可進行擴展,根據(jù)自身需求,

    2024年02月13日
    瀏覽(84)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包