使用Glade来进行GTK开发效率比较高,下面是一个例子。
将以下代码保存为test.glade文件。
1 | <!-- 文件名:test.glade --> |
将以下代码保存为test.py文件。
1 | #!/usr/bin/env python |
然后运行查看效果。
使用Glade来进行GTK开发效率比较高,下面是一个例子。
将以下代码保存为test.glade文件。
1 | <!-- 文件名:test.glade --> |
将以下代码保存为test.py文件。
1 | #!/usr/bin/env python |
然后运行查看效果。
PyGTK创建Dialog的函数如下:gtk.Dialog(title=None, parent=None, flags=0, buttons=None)
原文地址:http://www.pygtk.org/docs/pygtk/class-gtkdialog.html#constructor-gtkdialog
下面是一个例子:
1 | #!/usr/bin/env python |
这几天终于把Arch Linux + Xfce + slim配置好了,做个笔记备忘。
# pacman -S xorg hal# pacman -S xfce4 xfce4-goodies# pacman -S $(pacman -Sgq xfce4-goodies | grep -v xfce4-xfapplet-plugin)# pacman -S fortune-mod# pacman -S gstreamer0.10-base-plugins# pacman -S gstreamer0.10-plugins# pacman -S dbus# /etc/rc.d/dbus start# pacman -S gamin手动启动
你只需要运行: $ startxfce4
从终端启动,例如使用xinit/startx 需要配置Xinitrc (简体中文)。
如果还没有~/.xinitrc 文件,系统里有一份实例文件供参考:$ cp /etc/skel/.xinitrc ~/.xinitrc
在最后添加(因为权限的问题推荐在启动xfce之前添加ck-launch-session dbus-launch启):
exec ck-launch-session dbus-launch –exit-with-session startxfce4
在XFCE中关机和重启
在/etc/sudoers文件末尾添加如下一行:
%users ALL=(root) NOPASSWD: /usr/lib/xfce4/session/xfsm-shutdown-helper
# gpasswd -a 你的用户名 users
声音
安装ALSA
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture_(简体中文)
要求有本地化的ALSA程序和管理
# pacman -S alsa-lib alsa-utils# pacman -S alsa-oss
所有ALSA程序都很可能需要依赖alsa-lib。
使用ALSA驱动如何让xfce4-mixer来控制音量
新版的xfce4-mixer使用了gstreamer作为后端,这样就不用直接与驱动交流,更加统一。与驱动打交道的工作交给了gstreamer。因此如果你xfce4-mixer无法正常工作,就需要配置好gstreamer。首先当然你得安装xfce4-mixer。
pacman -S xfce4-mixer gstreamer0.10-base-plugins
你需要至少安装gstreamer0.10-good-plugins,考虑安装gstreamer0.10-bad-plugins
pacman -S gstreamer0.10-good-plugins gstreamer0.10-bad-plugins
然后删除面板上的mixer插件,然后重新添加一次,或者先登出然后再登录一次,对gstreamer做更改后必须这样做才能让操作生效。
介绍
SLiM是Simple Login Manager(简单登录管理器)的缩写。SLiM是简单、轻量级和容易配置的,相对较易在低端和高端的系统中使用。对于那些希望寻找一个不依赖于GNOME或者KDE,可以在Xfce、Openbox、Fluxbox等环境下使用的登录管理器的人来说,SLiM也是非常合适的。
安装
可以在extra软件仓库中找到SLiM: # pacman -S slim
同时还可以安装主题包: # pacman -S slim-themes archlinux-themes-slim
配置
启用SLiM
单用户环境
要将SLiM配置为加载某个特定的环境,只需编辑~/.xinitrc如下:
将[session-command]替换为适当的会话命令。例如:
要启动Xfce:
exec ck-launch-session dbus-launch –exit-with-session startxfce4
打开 /etc/rc.conf。# vi /etc/rc.conf
添加一个服务slim
DAEMONS=(syslogd klogd !pcmcia network netfs crond slim)
修改默认运行等级
# vi /etc/inittab 这样就差不多了,细节上的以后再慢慢琢磨。
安装ibus
# pacman -S ibus
# pacman -S ibus-qt
安装输入法
ibus-pinyin:拼音输入法
ibus-table:一个框架,五笔信赖于它
# pacman -S ibus-{pinyin,table}
# yaourt -S ibus-table-wubi
在~/.bashrc文件中添加如下内容:
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
然后执行命令运行ibus: # ibus-daemon
1、首先用Arch Linux的引导盘引导进入live CD。ISO文件下载地址:http://www.archlinux.org/download/
2、以root身份执行脚本: # /arch/setup 然后你就会看到 ArchLinux 安装框架的屏幕。
3、根据自己的情况进行选择
注意在第4项进行磁盘分区时要小心选择,否则操作失误会丢失数据。

安装完后重启即可进入Arch Linux
超级终端:使用minicom加ckermit组合,也可以单独使用Gtkterm来代替SecureCRT。
将Port设为设备名,如ttyUSB0。speed改为115200。如图:

ckermit安装好后,进行配置
vi /etc/kermit/kermrc
set line /dev/ttyUSB0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
USB下载驱动
dnw_for_linux.tar.gz下载地址: http://115.com/file/aqy4rodm
其中secbulk.c是PC端USB驱动。dnw.c是写入工具,这个是经过我修改的,可以将程序下载到指定的地址。
编译并加载secbulk.c内核模块
$cd secbulk
$make -C /lib/modules/`uname -r`/build M=`pwd` modules
编译成功后在当前目录下可以看到secbulk.ko
用insmod命令加载模块,这需要root权限
$sudo insmod ./secbulk.ko
编译dnw写入工具
$cd dnw
$gcc -o dnw dnw.c
编译成功后生成可执行档dnw
使用DNW下载
先使用kermit选择下载模式后再用dnw下载程序。
出现“USB host is connected. Waiting a download.”
Usage: dwn <addr> <filename>
$sudo ./dnw 30000000 led.bin
至此 在linux 下刷机完成
另有usb2ram,使用方法类似。
编译usb2ram需要先安装libusb-dev
Usage: usb2ram addr filename
$sudo usb2ram 30000000 led.bin
弄了两天,经过了N次失败后现在终于编译成功了,赶紧做个笔记。
1、下载crosstool(http://www.kegel.com/crosstool/crosstool-0.43.tar.gz)
2、下载编译过程中需要用到的源代码,虽然crosstool也会自动下载不过速度很慢,建议还是自己先下载好,源代码的版本根据自己的情况选择:
binutils-2.15 http://ftp.gnu.org/gnu/binutils/
gcc-3.4.5 http://ftp.gnu.org/gnu/gcc/
glibc-2.3.6 ftp://ftp.gnu.org/gnu/glibc/
glibc-linuxthreads-2.3.6 ftp://ftp.gnu.org/gnu/glibc/
linux-2.6.10 http://ftp.cc.uoc.gr/mirrors/ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.gz
linux-libc-headers-2.6.12.0 http://ep09.pld-linux.org/~mmazur/linux-libc-headers/linux-libc-headers-2.6.12.0.tar.bz2
将以上七个压缩包放在同一个目录下。
3、编译过程依赖这几个软件,没有的请自行安装。Bison、flex 、build-essential、patch 、libncurses5-de
还有gcc的编译依赖于gmp、mpfr、mpc这几个软件,没有的请先安装。
mpc-0.9.tar.gz http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
mpfr-3.0.1.tar.bz2 http://www.mpfr.org/mpfr-current/mpfr-3.0.1.tar.bz2
gmp-5.0.2.tar.bz2 ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.bz2
这几个软件之间也存在依赖关系,请按顺序依次安装gmp、mpfr、mpc
4、修改配置
1)、ubuntu10.10自己的GCC是4.4版本,使用这个版本的进行编译会出错,建议使用gcc-4.1。
sudo apt-get install gcc-4.1
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc
2)、修改sh,ubuntu10.10默认的sh是用的dash
如果运行 ls -la /bin/sh 看到链接是dash,则需要修改一下。不改的话编译会出错。
我是直接运行命令 sudo ln -sf /bin/bash /bin/sh 修改。改完后重启下,或者切换工作台以使其生效。
3)、修改编译脚本
解压crosstool然后进入解压目录,这里我选择demo-arm.sh这个脚本。
cp demo-arm.sh arm.sh
修改arm.sh
vi arm.sh
TARBALLS_DIR=(刚刚下载的源码存放目录)
RESULT_TOP=(生成工具链要安装到的目录)
eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh –notest #这个根据自己的情况选择
然后修改gcc-3.4.5-glibc-2.3.6.dat这个文件
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.4.5
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.10
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
再修改arm.dat这个文件
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-linux #生成的工具链名称
TARGET_CFLAGS=”-O”
还有ubuntu10.10自带的ar、ld是2.20版本的,而这个编译时需要的是2.13~2.19版本的,所以会出错。
解决方法:
(1)、像上面的gcc一样,再安装个低版本的ls、ar。
(2)、如果不想再另外安装就可以用这个方法。修改glibc-2.3.6.tar.bz2这个压缩包内的configure文件。将3920行和3981行处的”2.1[3-9])”改为”2.[1-2][0-9])”。
5、开始编译
都配置好了之后就可以开始了
./arm.sh
漫长的等待开始了……,我的是奔腾双核处理器,整个过程花了半个多小时
6、测试
现在用刚刚编译安装好的arm-linux-gcc来编译一个C程序试试。
先将arm-linux-gcc的安装目录添加到环境变量中。
1 | //文件名:hello.c |
$ arm-linux-gcc -o hello hello.c
$ file hello
hello: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped
这就说明这个已经成功了!
7、现在可以恢复之前的系统配置了
将gcc修为gcc-4.4
将sh修改dash
如果嫌麻烦不想自己编译的可以直接下载已经编译好的来用,下面这个就是我编译好:
gcc-3.4.5-glibc-2.3.6.tar.gz http://115.com/file/e65akpi1
1 | ;I2C串口总线驱动程序 |
IIC(Inter - Integrated Circuit)总线是菲利浦公司推出的芯片间串行传输总线。它用两根线实现了完善的全双工同步数据传送。
I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
I2C总线在传送数据过程中共有三种类型信号,它们分别是:
开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:数据接收完后,受控单元向主控单元发送一个应答信号。
开始信号是必需的,结束信号和应答信号可以不要。
数据传输格式如下:
主控写: 开始| 寻址字节(写)| 应答| 数据| 应答| …| 数据| 应答| 结束
主控读: 开始| 寻址字节(读)| 应答| 数据| 应答| …| 数据| 非应答| 结束
下划线部分表示主控发送,被控接收;其余为主控接收,被控发送。
时钟脉冲如图所示:

手柄
joystick模块管理计算机上的手柄设备(可能多于一个)。手柄设备包括轨迹球、类似电视游戏机的游戏手柄,允许使用多个按钮和’hats’。
pygame.joystick.get_count函数可以获得系统中手柄的个数。比如:
count = pygame.joystick.get_count()
如果系统没有手柄,数量是0。
如果系统有手柄,可以通过pygame.joystick.Joystick来创建手柄对象:
j = pygame.joystick.Joystick(0)
其中的整数是手柄的id,取值范围从0到count-1。
创建对象后,需要先初始化
j.init()
初始化后,事件队列中就可以收到来自手柄的事件了。事件类型分为:
JOYAXISMOTION joy, axis, value
JOYBALLMOTION joy, ball, rel
JOYHATMOTION joy, hat, value
JOYBUTTONUP joy, button
JOYBUTTONDOWN joy, button
要注意pygame.JOYAXISMOTION事件的value值在-1.0和1.0之间。值0.0表示轴在正中间。游戏手柄设备一般只有-1、0、1三个值,而没有中间的值。而老的模拟手柄并不一定能完全达到-1到1的区间,中间的值也可能是0附近的一个值。模拟手柄通常会有一点噪声,从而会产生很多很小很快的运动事件。当轨迹球滚动时,pygame.JOYBALLMOTION事件会发生。它会报告轨迹球总共滚动了多少距离。当按钮被按下和释放时,会产生pygame.JOYBUTTONDOWN和pygame.JOYBUTTONUP事件。当hat的位置改变时,pygame.JOYHATMOTION事件会产生。事件的位置属性包括一对值,它们是-1或者0或者1。位置(0,0)表示hat在正中间。
要获得手柄的轴数可以使用
j.get_numaxes()
要获得手柄上轨迹球的个数,可以使用
j.get_numballs()
要获得手柄上的按键数,可以使用
j.get_numbuttons()
要获得手柄上hat控制器的个数,可以使用
j.get_numhats()
除了通过事件获得手柄的输入外,也可以直接查询手柄的状态。通过
j.get_axis(axis_number)
可以获得某个轴的位置。通过
j.get_ball(ball_number)
可以获得某个轨迹球的相对位置。通过
j.get_button(button)
可以获得某个按键的状态。通过
j.get_hat(hat_number)
可以获得hat控制器的当前位置。