目錄[-]
在專案中需要使用遊戲手柄對裝置進行一些操作,在此選擇了微軟xbox手柄,通過在linux下呼叫裝置描述檔案來獲取遊戲手柄的輸入資料,使用步驟以及**描述如下。
• microsoft x-box one s pad 遊戲手柄在ubuntu下的驅動程式;
sudo apt-get install joystick
• 在linux系統下,向系統中插入硬體時,作業系統回味每乙個裝置分配乙個event號,在開發遊戲手柄驅動時,需要首先找到遊戲手柄對應的event以及執行緒,通過以下指令可以獲取;
cat /proc/bus/input/devices
• linux下,檢視系統中插入裝置對應的所有event以及執行緒:
ls /dev/input
• 檢視埠輸出:
cat /dev/input/js0 | hexdump
#include "fcntl.h"//unix 下通用標頭檔案,包含檔案的open,close函式
#include "stdio.h"//perror
#include "stdlib.h"
#include "linux/joystick.h"
#include "string.h"//memset
#include #include #include #include #include #include #include #include "../include/microbox.h"
//microbox_acti_type-> 1:button;2:axis
/*==button==*/
#define microbox_type_button 1
//microbox_acti_button_number-> 0:a; 1:b; 2:x; 3:y
#define microbox_number_button_a 0
#define microbox_number_button_b 1
#define microbox_number_button_x 2
#define microbox_number_button_y 3
#define microbox_number_button_lb 4
#define microbox_number_button_rb 5
#define microbox_number_button_copy 6
#define microbox_number_button_file 7
#define microbox_number_button_earth 8
#define microbox_number_button_leftjoy_pressed 9
#define microbox_number_button_rightjoy_pressed 10
//microbox_acti_button_value-> 0:沒有被按下; 1:按鈕被按下
#define microbox_value_up 0
#define microbox_value_down 1
/*==axis==*/
#define microbox_type_axis 2
//microbox_acti_axis_number-> 0:左側搖桿x軸;1:左側搖桿y軸;2:左側搖桿t軸
//3:右側搖桿x軸;4:右側搖桿y軸;5:右側搖桿t軸;6:左側+按鈕x軸;7:左側+按鈕y軸
#define microbox_number_axis_leftjoy_x 0
#define microbox_number_axis_leftjoy_y 1
#define microbox_number_axis_leftjoy_t 2
#define microbox_number_axis_rightjoy_x 3
#define microbox_number_axis_rightjoy_y 4
#define microbox_number_axis_rightjoy_t 5
#define microbox_number_axis_plusjoy_x 6
#define microbox_number_axis_plusjoy_y 7
typedef struct microbox_map
microbox_map_t;
//開啟手柄對應的檔案
int microbox_open(const char *file_name)else
}//讀取手柄對應的檔案
int microbox_read(int microbox_fd,microbox_map_t *map)
type = js.type;
number = js.number;
value = js.value;
time = js.time;
map->time = time;
if (type == microbox_type_button)
}else if (type == microbox_type_axis)
}else
printf("\rtime:%8d a:%d b:%d x:%d y:%d lb:%d rb:%d copy:%d file:%d earth:%d lp:%d rp:%d xx:%-6d xy:%-6d xz:%-6d rx:%-6d ry:%-6d rz:%-6d px:%-6d py:%-6d",
map->time, map->btn_a, map->btn_b, map->btn_x, map->btn_y, map->btn_lb, map->btn_rb, map->btn_earth, map->btn_copy, map->btn_file, map->btn_lft_joy_pressed, map->btn_rit_joy_pressed,
map->axis_lft_joy_x, map->axis_lft_joy_y, map->axis_lft_joy_t, map->axis_rit_joy_x, map->axis_rit_joy_y, map->axis_rit_joy_t, map->axis_plus_joy_x, map->axis_plus_joy_y);
}//關閉手柄對應的檔案
void microbox_close(int microbox_fd)
int main(void)
fflush(stdout);
if (microbox_value_map.btn_earth == 1)
} }
如何在ROS中使用PCL 資料格式(1)
在ros中點雲的資料型別 在ros中表示點雲的資料結構有 sensor msgs pointcloud sensor msgs pointcloud2 pcl pointcloud 關於pcl在ros的資料的結構,具體的介紹可查 看 wiki.ros.org pcl overview 關於senso...
如何在AndroidStudio中使用AIDL
本章節介紹如何在androidstudio中使用aidl 2.在aidl下建立乙個包,包裡建立乙個 aidl檔案,右鍵aidl new aidl aidl file 紅框就是建立完成後的樣子 3.在aidl檔案寫要被呼叫的方法,此方法不能有許可權修飾符 4.首先build下,然後建立乙個servic...
如何在Oracle中使用Sequence
sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 建立sequence的語法很簡單,...