多輸入之輪詢

2022-01-16 14:13:27 字數 2333 閱讀 6150

目錄

**倉庫

方式一方式二

這裡我們採用兩種方式的輸入,使用查詢的方式來讀取具體的輸入,輪詢的前提就是所有輸入裝置都是非阻塞的

關於這裡的io模型,select參考《嵌入式linux應用程式開發標準教程》裡面的第六章

對於觸控螢幕的庫tslib,支援非阻塞開啟,也就是傳遞引數1即可

struct tsdev *ts_open(const char *name, int nonblock)

o_nonblock (non-blocking) 它在讀取不到資料時會回傳-1,並且設定errno為 eagain

具體的使用**可以參考tslib-1.4.tar.gz/tests/ts_print.c

標準輸入這裡可以有兩種方式:

方式一 設定終端輸入為非阻塞

struct termios tttystate;

//get the terminal state

tcgetattr(stdin_fileno, &tttystate);

//turn off canonical mode

tttystate.c_lflag &= ~icanon;

//minimum of number input read.

tttystate.c_cc[vmin] = 0;

// 立即返回

tttystate.c_cc[time] = 0;

//set the terminal attributes.

tcsetattr(stdin_fileno, tcsanow, &tttystate);

然後從流中讀取

int num_read,ch;

char buf_read[10];

num_read = fread(buf_read, 1, 1, stdin);

if(num_read)

方式二 :使用阻塞乙個字元,然後使用select的超時為0來達到非阻塞的效果

static int stdindevinit(void)

然後讀取輸入的時候用select來監視讀取的流,select的超時為0也就是沒有資料就馬上退出

int stdget(t_inputevent* out_input_event)

}

iret = ts_read(g_ttsdev, &tsamp, 1);

if (iret < 0)

還有就是判斷超時,沒有判斷大小,所以應該先判斷大小先,這裡應該沒什麼關係

static int isoutof500ms(struct timeval *ptpretime, struct timeval *ptnowtime)

static int isoutof500ms(struct timeval *ptpretime, struct timeval *ptnowtime)

else

}

tslib庫,這裡如果有問題看之前的觸控螢幕驅動文章

修改/etc/ts.conf第1行(去掉#號和第乙個空格),# module_raw input改為module_raw input

設定環境變數

export tslib_tsdevice=/dev/event0

export tslib_calibfile=/etc/pointercal

export tslib_conffile=/etc/ts.conf

export tslib_plugindir=/lib/ts

export tslib_consoledevice=none

export tslib_fbdevice=/dev/fb0

3.校準ts_calibrate

開啟telnettelnetd -l /bin/sh

執行程式./show_file -f simsun1.ttc -s 12 main.c

pc上可以使用telnet再登入開發板檢視cpu

keras搬磚系列 keras多輸入多輸出模型

使用函式式模型的乙個典型的場景就是搭建多輸入,多輸出模型。考慮這樣乙個模型,希望 一條新聞會被 和點讚多少次。模型的主要輸入是新聞的本身,也就是乙個詞語的序列,但是我們可能還需要額外的輸入,新聞發布的日期等,所以這個模型的損失函式將會由兩個部分組成,輔助的損失函式基於新聞本身做出的 的情況,主損失函...

多執行緒支援多輸入

main.c input manager.c touchscreen.c stdin.c 輸入模組分為三層,input manager.c通過鍊錶管理底層各種輸入裝置,每個裝置向上註冊inputopr結構體,提供該裝置的各種操作函式和資料。其中input manager.c實現了幾個函式供main....

Python 使用input()實現多輸入

用map split 以及input 可以實現用input 同時輸入多個數。1.map map 函式接收兩個引數,乙個是函式,乙個是序列,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。2.split 拆分字串。通過指定分隔符對字串進行切片,並返回分割後的字串列表 list...