张 臻
硕士研究生
南京信息工程大学601信箱,南京210044
0 引言
随
着开放源代码运动的飞速发展,Linux操作系统越来越受到人们的重视。其良好的可裁减性与可移植性,卓越的效率和稳定性,以及支持多种处理器体系架构的
特点,使得Linux越来越广泛的应用于嵌入式领域。同时,ARM9处理器高主频的处理速度、大容量的闪存芯片和MMU控制单元的支持,使得运行嵌入式
Linux变得稳定而高效。本文设计与实现的打印终端系统,正是基于这两个软硬件平台搭建起来的。
1 嵌入式打印终端系统的设计原理
图1 打印终端原理图
嵌
入式打印终端原理连接图如图1所示。主要由开发板、主机、打印机和扫描仪四部分组成。主机是一台PC机。 ......
Linux设备驱动编程之定时器
2006-10-26 13:34
作者:
出处:Linux
责任编辑:方舟
相关专题:
Linux设备驱动程序开发入门
Linux内核中定义了一个timer_list结构,我们在驱动程序中可以利用之:
struct timer_list {
struct list_head list;
unsigned long expires; //定时器到期时间
unsigned long data; //作为参数被传入定时器处理函数
void (*function)(unsigned long);
};
下面是关于timer的API函数:
增加定时器
void add_timer(struct timer_list * timer);
删除定时器
int del_timer(struct timer_list * timer);
修改定时器的expire
int mod_timer(struct timer_list *timer, unsigned long expires);
使用定时器的一般流程为:
(1)timer、编写function;
(2)为timer的expires、data、function赋值;
(3)调用add_timer将timer加入列表;
(4)在定时器到期时,function被执行;
(5)在程序中涉及timer控制的地方适当地调用del_timer、mod_timer删除timer或修改timer的expires。
我们可以参考drivers\char\keyboard.c中键盘的驱动中关于tim ......
在Linux下Jdk的安装和Java环境变量的设置
在Linux下Jdk的安装和Java环境变量的设置
1、到www.sun.com下载最新版本的j2sdk for linux
2、安装jdk1.4.2 for linux,以下是在Redhat Linux 9下为例:
以root身份登录
(1)打开一个终端
(2)输入命令ls -l 查看安装文件的权限
(3)输入命令chmod a+x j2sdk-1_4_2_01-linux-i586-rpm.bin,给所有的用户添加执行的权限。
(4)安装jdk
./j2sdk-1_4_2_01-linux-i586-rpm.bin
此步完成后,会生成j2sdk-1_4_2_01-linux-i586.rpm的文件
查看权限
ls -l
给j2sdk-1_4_2_01-linux-i586.rpm赋执行权限
chmod +x j2sdk-1_4_2_01-linux-i586.rpm
安装j2sdk-1_4_2_01-linux-i586.rpm
rpm -ivh j2sdk-1_4_2_01-linux-i586-rpm
出现授权协议,按Enter键接受
&n ......
T-SQL Script
Output format
SELECT CONVERT(VARCHAR(100), GETDATE(), 0)
03 6 2010 4:19PM
SELECT CONVERT(VARCHAR(100), GETDATE(), 1)
03/06/10
SELECT CONVERT(VARCHAR(100), GETDATE(), 2)
10.03.06
SELECT CONVERT(VARCHAR(100), GETDATE(), 3)
06/03/10
SELECT CONVERT(VARCHAR(100), GETDATE(), 4)
06.03.10
SELECT CONVERT(VARCHAR(100), GETDATE(), 5)
06-03-10
SELECT CONVERT(VARCHAR(100), GETDATE(), 6)
06 03 10
SELECT CONVERT(VARCHAR(100), GETDATE(), 7)
03 06, 10
SELECT CONVERT(VARCHAR(100), GETDATE(), 8)
16:23:28
SELECT CONVERT(VARCHAR(100), GETDATE(), 9)
03 6 2010 4:23:40:110PM
SELECT CONVERT(VARCHAR(100), GETDATE(), 10)
03-06-10
SELECT CONVERT(VARCHAR(100), GETDATE(), 11)
10/03/06
SELECT CONVERT(VARCHAR(100), GETDATE(), 12)
100306
SELECT CONVERT(VARCHAR(100), GETDATE(), 13)
06 03 2010 16:24:39:763
SELECT CONVERT(VARCHAR(100), GETDATE(), 14)
16:24:50:823
SELECT CONVERT(VARCHAR(100), GETDATE(), 20)
2010-03-06 16:25:04
SELECT ......
SQL 中的存储过程:
1.在建立存储过程之前检查所命名的存储过程是否应经存在。(因为如果同名存储过程已经存在,新的存储过程将不被建立)
if exists(select * from sysobject where name='proc name' and type='p')
drop proc proc name
go
2.定义存储过程
create proc test
@gradel int, --定义变量
@gradeh int output --定义输出变量
as
...
go
3.执行存储过程
declare @l int,@h int
exec proc test 34,@h output
print @h
----------------------------------------------
下面以一个例子说明:
输入两个分数,要求写两个存储过程,一个对输入分数排序,另一个查询两分数段之间的成绩:
一共有三个表:
s表:(s#:学生号,sname:学生姓名,age:年龄,sex:性别)
c表:(c#:课程号,cname:课程名,teacher:老师)
sc表:(s#,c#,grade)
if exists(select * from sysobjects where name='sort'
and type='p')
drop proc sort
go --定义一个存储过程用于排序
create proc sort
@high int,
@low int,--定义两个输入参数
@hi int output,
@lo int output--定义两 ......
sql server 临时表的使用 以及给临时表插入主键列
--某时间段内某组服务器的消费排行
CREATE PROCEDURE biling_order_consume
@begin_date datetime,
@end_date datetime
AS
select identity(int,1,1) as ID,charge_credit into #tmp from crm_biling
where @begin_date <= convert(datetime,convert(varchar(12),charge_time,101),101)
and @end_date >=convert(datetime,convert(varchar(12),charge_time,101),101)
order by charge_credit desc
select * from #tmp
运行结果
id charge_credit
1 9541
2 564
3 468
4 123
这个第二次运行时提示#tmp已经存在.可以用一下代码删除
drop table #tmp ......