linux 网络键盘,鼠标
因为公司的板子上键盘不好按,所以写个网络版的,方便调试。
client .c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
int connect_server(char * ipaddr, int myport)
{
int sockfd;
struct hostent *he;
struct sockaddr_in their_addr;
if((he=gethostbyname(ipaddr))==NULL) {
herror("gethostbyname");
return -1;
}
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
return -1;
}
their_addr.sin_family = PF_INET;
their_addr.sin_port = htons(myport);
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(their_addr.sin_zero),0);
if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {
perror("connect");
return -1;
}
return sockfd;
}
int main(void)
{
int fds[16] = {-1};
int fd_max = -1;
char serverip[24] = {0};
int socketfd = -1;
int ret = 0;
struct input_event event_key;
char input[5*1024] = {0};
int fd = open("/proc/bus/input/devices", O_RDWR);
char dev[24] = "/dev/input/";
int len = read(fd, input, 5*1024);
printf("len = %d \n", len);
close(fd);
char *p;
p = input;
int j = 0;
strcpy(serverip, "192.168.168.114");
socketfd = connect_server(serverip, 7838);
if(socketfd == -1)
{
printf("connect_server faild \n");
return -1;
}
struct timeval select_timeout;
fd_set readfds;
select_timeout.tv_sec= 4;
select_timeout.tv_usec = 0;
for(; p != NULL; j++)
{
p = strstr(p, "event");
if (p)
{
memcpy(dev+11, p, 6);
printf("%s\n", dev);
p+= 6;
fds[j] = open(dev, O_RDWR);
相关文档:
C语言中的抽象函数定义也就是使用了函数指针,这里用signal函数解释一下抽象函数定义的含义和规则。
signal函数定义为:
void ( * signal (int signum , void (*handler)(int) ) )(int);
可以这样定义
typedef void(* handler) (int)
handler signal(int signum,handler) ......
1 系统平台的硬件结构
本文使用的系统平台硬件功能框图如图1所示,该平台采用Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司ARM920T处 理器核的32b微控制器,资源丰富,带独立的16kB的指令Cache和16kB数据Cache,LCD控制器、RAM控制器,NAND闪存控制器,3路 UART、4路DMA、4路带PWM的Timer、并行I/O口、8路10位A ......
内核驱动分类
驱动实现功能:
读
写
打开
设置
最终目的操作硬件设备:数据传输和数据控制
硬件参考手册,内核提供的功能:操作时序,总线如何操作,内核API
1.字符设备(char)
2.块设备(block)
3.网络设备(net)
内核模块操作命令
make
加载:sudo modprobe ./Mo ......
1号进程,pid为1的进程,又称init进程。
linux系统启动后,第一个被创建的用户态进程就是init进程。它有两项使命:
1、执行系统初始化脚本,创建一系列的进程(它们都是init进程的子孙);
2、在一个死循环中等待其子进程的退出事件,并调用waitid系统调用来完成“收尸”工作;
init进程不会被暂 ......
随着Linux的普及,如何在Linux平台下进行编程,尤其是汇编成为大家关注的一个问题,但是这方面资料却很少。在遍访网站和论坛后,我把收集到的资料结合本人总结的一些经验跟大家分享一下。
Nasm介绍
Linux下的汇编编译器有多种,语法也不尽相同,其中GAS是比较基本的汇编工具。但是GAS采用的不是我们通常在DOS体系下使用 ......