- 博客(23)
- 收藏
- 关注
原创 Python编程.Bluetooth HID Mouse and Keyboard(四)
#!/usr/bin/env pythonimport Tkinter,sys,time,platformimport logclass Point: def __init__(self, x=0, y=0): self.x = x self.y = y return def __str__(self):
2014-01-20 15:32:39 4363 1
原创 Python编程.Bluetooth HID Mouse and Keyboard(三)
调用SDP Helper接口非常简单,基本上跟Sample Code差不多,只不过代码换成了Python编程。#!/usr/bin/env pythonimport ctypes,oshidd_report_desc = bytearray( [ 0x05, 0x01, # UsagePage GenericDesktop 0x09, 0x02, # Usag
2014-01-16 17:39:34 2555
原创 Python编程.Bluetooth HID Mouse and Keyboard(二)
根据Bluetooth HID协议,从Socket连接的角度来看,蓝牙设备其实是L2CAP连接的Host端。下面我就来实践这个Host端的流程。当然,根据上一篇文章的介绍,我首先要用C语言实现一些友好的接口,让Python程序通过ctypes能够很容易地使用。struct bthidd_t { int serv_ctrl; int serv_intr; int sock_ctrl;
2014-01-16 11:42:50 5319 8
原创 Python编程.Bluetooth HID Mouse and Keyboard(一)
有时候在家里用手机或者Pad打字时觉得太慢,很希望有个蓝牙键盘用用。可惜家里只有一个USB蓝牙适配器,没有蓝牙键盘。本想在Windows上实现一个虚拟蓝牙键鼠的软件,把我这个普通键盘变成蓝牙键盘,但后来发现微软的Bluetooth协议栈实在太烂,难以实现这个功能。于是退而求其次,看看在Ubuntu上用Bluez协议栈怎么来实现它。首先用简短的文字来聊聊Bluetooth的HID协议。Bth H
2014-01-15 10:47:15 11735 3
原创 Python编程.利用ctypes调用Windows API
Python是一种容易入门的编程语言,对于已经掌握C/C++或Java等任意一门编程语言的程序员来说,通过Python官网的Tutorial文档,可以在较短时间内掌握基本语法。 Ctypes是我喜欢的Python特性之一,它让你的Python程序可以方便地调用已有的C语言编写的动态链接库。在Windows操作系统上,利用ctypes提供的帮助,Python程序直接调用Windows API变得
2014-01-14 16:18:31 10334 1
转载 开发环境中的环境变量
一些环境变量设置在目录名列表中。这些名字和 PATH 环境变量使用的格式相同。特殊字符 PATH_SEPARATOR (安装编译程序的时候定义)用在目录名之间。在 UNIX 系统中,分隔符是冒号,而 Windows 系统中为分号。C_INCLUDE_PATH--------------编译 C 程序时使用该环境变量。该环境变量指定一个或多个目录名列表,查找头文件,就好像在命令行
2013-02-05 16:31:47 592
转载 HOWTO: using gprof with multithreaded applications
原文地址:http://sam.zoy.org/writings/programming/gprof.html HOWTO: using gprof with multithreaded applications What is gprof? gprof is the GNU Profiler, a tool used when tracking which functions
2012-01-10 23:00:10 762
转载 diff + patch
创建一个patch:# diff -Naur olddir newdir > new.patch给olddir打上new.patch:# cd olddir# patch -p1 patch命令的-p选项(注意中间没有空格),表示打patch时,把patch文件中记录的路径的前num级忽略掉。在上面的例子中,diff对比的是olddir和newdir,故new.
2011-12-17 10:54:38 603
转载 warning: operation on ‘i’ may be undefined
dest[i++]=src[i];这行代码,编译时会遇到警告:warning: operation on ‘i’ may be undefined(对于i变量的操作,有可能是未定义的)改成i++;dest[i] = src[i];则警告消失。
2011-08-30 22:16:32 8178 2
转载 warning: dereferencing type-punned pointer will break strict-aliasing rules
【转载自】http://www.zeali.net/entry/454【以下是原文】warning: dereferencing type-punned pointer will break strict-aliasing rules 在 gcc 2.x 下编译没有
2011-08-28 10:38:53 6696 1
原创 Lock screen when logged in gnome env as root
gnome桌面环境下,root用户不能锁屏,官方的解释是出于各种安全性的考虑。我知道对于Linux主义者,直接用root作为第一身份登录系统是必须被千刀万剐的,可惜我不是完美主义者,我是方便主义者。OK,无论如何,我现在非常需要在root下有一个锁屏的方法——为了应付公司
2011-08-27 18:36:38 1358 1
原创 交叉编译时不要忘记-march编译选项
必须写在这,要不然过一段时间又要忘记。每个编译器都有默认的-march选项,其值一般都随主流芯片走。比如老一点的arm交叉编译器,默认的选项可能是-march=armv4t,新一点的则可能是-march=armv6等等。用老编译器编出来的二进制文件,只要没使用特殊指令
2011-08-27 15:33:54 4048
原创 LOG Helper
在终端打印LOG是最基础、最易用、某种程度上也是最经济的Debug方式。但是Base的规模大了,管理LOG也不是一件轻松的事情。最近项目组在Linux内核里写一个新的mach,和该mach专用的驱动。面对一坨一坨的日益增加的代码,Debug时想要从LOG上一眼找出问题点,以及
2011-03-05 18:12:00 1786
原创 nfs 和 tftp
在Linux各个发行版上,软件的安装方法略有不同,但使用方法基本一样。记录一下nfs和tftp的服务器端配置方法,免得每次都要google。修改了配置之后记得重启服务。//==========================================
2011-01-23 11:24:00 826
原创 用脚本动态创建设备节点
Linux系统的主设备号本来是固定的,这没有什么不好。但是,有许多理由要求Linux系统能够自动为设备动态分配主设备号——只要设备驱动程序提出申请。尤其是当你不打算给你的客户提供驱动程序源代码的时候,为了避免与客户的系统中的其他设备相冲突,采用动态获取主设备号的办法是一个好主意。
2010-12-03 07:43:00 1335
原创 bashrc and vimrc
最近不得不在CentOS上工作,因为这是客户要求使用的Linux图形桌面。但CentOS在易用性上的考虑太少,默认的.bashrc和.vimrc一点也不好用。我只好把Ubuntu上的.bashrc和.vimrc复制过去,幸好有VMware这种东西。VMware每次都帮
2010-10-20 20:29:00 1121
原创 PCI总线驱动概要
在《Linux内核修炼之道》里,文章作者对如何使用Kconfig和Makefile定位内核源码有精彩的阐述。并且该作者还在《Linux那些事儿 之 我是PCI》系列文章中对X86架构下的PCI总线和设备驱动做了很详细的分析。由于工作需要,我在此基础上分析了ARM体系结构的PCI总
2010-10-05 22:08:00 5712 2
原创 Ubuntu的常用编程环境备忘录
使Ubuntu成为时下最流行的发行版之一的一个重要原因就是它只需一张CD的空间,就能够安装一套用户体验很不错的操作系统。但现在一张CD的空间限制已经使Ubuntu工作组越来越锱铢必较,他们必须小心翼翼地筛选应用程序和函数库,以便节省出更多空间增加新的功能和UI效果。在10.04中
2010-10-05 00:43:00 793
原创 BMP格式详解
2009年7月10日BMP格式详解前言记得本科时候讲《计算机体系结构》的老师评价过中外教材的差别,他说按照老外的体系结构教材,你就真的能够做出一个CPU来(虽然只能做出很老很老的CPU),但国内的教材就很难教到这个程度。几个月前我从零开始写了一个简单的bmp解
2010-09-30 15:47:00 1147
原创 Alpha Blend and some Optimizition
2009年2月24日 今天发现了我们的UIFramework中Redraw()函数的动作逻辑在绘制Alpha通道图像时有bug。一般情况下,Alpha Blend 的算法很简单:C = C0 * ( 1 - A1 ) + C1 * A1 【公式1】其
2010-09-30 15:39:00 1064
原创 最简单的samba服务器配置
不管在家里还是在公司,由于我被Source Insight毒害得很深,所以总是Windows和Ubuntu Linux两个系统同时使用。于是两个系统之间数据共享就成为最基本的要求。 使用虚拟机运行Linux的情况稍微简单,直接配置虚拟机的共享路径即可。但也有遗憾之处是Li
2010-09-30 15:34:00 761
原创 线程终止
2009年4月15日 前段时间多线程编程,在调试的时候遇到麻烦。多线程的debug太困难,打log是不好用的,因为log本身也不一定是线程安全的。后来借助eclipse的可视化debug工具以及helgrind,问题算得到了比较好的解决。 这礼拜遇到的bug是,程
2010-09-30 15:03:00 796
原创 前言
本来没有兴趣再开博客了,但公司的web访问管理策略太严格,禁止打开非技术类博客网页,无奈还是要在这里开垦一块自留地,写一些备忘录性质的东西,以及保存一些引用源代码很多的文章,毕竟这里插入代码的功能对于撰写技术文档提供了方便。总的来说还是自用为主,如果顺便帮助了其他人,善莫大焉。以前跟哈萨伯聊起过,多亏了互联网上其他人的分享,使我们的学习变得更方便,可惜我自己对互联网几乎没有贡献。以后会慢慢写一些吧,也算是对互联网分享精神的回馈。
2010-09-30 14:44:00 393
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人