
irda-utils和gnokii红旗5.0已经包含。
2、配置irda
不同的irda有不同的配置方法。这里仅据一例,使用USB转串口的力特Z-TEK ZK-ID5红外适配器(芯片为MA600),到中关村转了一圈,市面上流行的多数红外适配器都是可以支持的,比如力特(除ZK-ID7之外,使用Moschip 7703),水木行等。建议使用ma600/mcs7780/esi/tekram/actisys/girbil/ep7211等芯片的红外适配器。
力特ZK-ID6配置命令如下(可以将这些命令写入一个脚本):
modprobe uhci_hcd modprobe pl2303 modprobe irda echo 9600 >/proc/sys/net/irda/max_baud_rate modprobe irtty-sir modprobe ma600-sir modprobe ircomm-tty irattach /dev/usb/ttyUSB0 -d ma600 -s
运行后,使用ifconfig查看,可以看到一个irda0的接口。
3、测试红外连接
我使用nokia 8250手机,只要支持红外的手机都可以。打开手机的红外连接,对准红外适配器(距离在1米以内,角度为30度以内)。然后运行irdadump命令。可以看到:
06:28:15.560217 xid:rsp 721dfac0 <d91a0000 S=6 s=5 Nokia 8250 hint=b125 [ PnP Modem Fax Telephony IrCOMM IrOBEX ] (27)
这时候连接就已经完成了。
4、配置gnokii
vi /etc/gnokiirc
写入:
[global] port=/dev/usb/ttyUSB0 model = 8250 initlength = default connection = irda serial_baudrate = 9600
5、运行xgnokii
从命令行,启动xgnokii。这时候你会看到一个图形界面。上面有contacts, sms等。点击相应的按钮,就可以下载或者上传通讯录。或者使用软件发送和接受短信了。
注:由于手机都有节电的功能,一段时间不活动会自动关闭红外接口,所以,请确认运行xgnokii的时候,手机的红外接受功能是打开的,一般手机屏幕上都会有显示。
#lsmod 或者cat /proc/modules 查看驱动 开发板资料上肯定有红外模块开发文档,参考文档做 红外如果是板子上就有的 系统肯定加上驱动 上网查查红外测试程序 简单测试下看红外能不能用用于进程间通信,通信机制由 *** 作系统保证,比较稳定。
在linux中可以通过kill -l查看所有信号的类型。
kill -信号类型 进程ID
int kill(pid_t pid, int sig)
入参pid :
pid >0: 发送信号给指定的进程。
pid = 0: 发送信号给 与调用kill函数进程属于同一进程组的所有进程。
pid <0: 取|pid|发给对应进程组。
pid = -1:发送给进程有权限发送的系统中所有进程。
sig :信号类型。
返回值 :成功:0;失败:-1 (ID非法,信号非法,普通用户杀init进程等权级问题),设置errno
以OpenHarmony源码为例,应用ANR后,AbilityManagerService会通知应用dump堆栈信息,就是通过信号量做的。
头文件位置 :
include <signal.h>
函数解释 :
typedef void (*sighandler_t)(int)
sighandler_t signal(int signum, sighandler_t handler)
当接收到指定的信号signum时,就会跳转到参数handler指定的函数执行。其中handler的入参是信号值。
函数原型 :
signum参数指出要捕获的信号类型,act参数指定新的信号处理方式,oldact参数输出先前信号的处理方式(如果不为NULL的话)。
sigaction结构体
sa_handler 信号处理函数
sa_mask 在处理该信号时可以暂时将sa_mask 指定的信号集搁置
sa_flags 指定一组修改信号行为的标志。 它由以下零个或多个的按位或组成
SA_RESETHAND:当调用信号处理函数时,将信号的处理函数重置为缺省值SIG_DFL
SA_RESTART:如果信号中断了进程的某个系统调用,则系统自动启动该系统调用
SA_NODEFER :一般情况下, 当信号处理函数运行时,内核将阻塞该给定信号。但是如果设置了 SA_NODEFER标记, 那么在该信号处理函数运行时,内核将不会阻塞该信号
sa_restorer 是一个替代的信号处理程序,当设置SA_SIGINFO时才会用它。
相关函数
int sigemptyset( sigset_t *set)
sigemptyset()用来将参数set信号集初始化并清空。
执行成功则返回0,如果有错误则返回-1。
完整示例
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)