down

字符设备驱动leds

北城余情 提交于 2020-02-12 02:45:16
内核版本:4.12.9 编译器:arm-linux-gcc-4.4.3 本驱动基于jz2440 v2开发板,实现3个led设备的驱动程序。 代码如下: 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/fs.h> 4 #include <linux/init.h> 5 #include <linux/delay.h> 6 #include <asm/uaccess.h> 7 #include <asm/irq.h> 8 #include <asm/io.h> 9 #include <linux/cdev.h> 10 #include <linux/uaccess.h> 11 12 #define DEVICE_NAME "leds" 13 #define LED_MAJOR 231 14 15 #define LED_COUNT (4) 16 int major; 17 int minor; 18 static struct cdev led_cdev; 19 20 static struct class *leds_class; 21 static struct device *leds_class_devs[4]; 22 23 24 /* bit0<=>D10, 0:亮, 1:灭

OpenCV--图像金字塔

ぐ巨炮叔叔 提交于 2020-02-10 18:13:09
图像金字塔 高斯金字塔 高斯金字塔:向下采样方法(缩小) 高斯金字塔:向上采样方法(放大) img=cv2.imread("AM.png") cv_show(img,'img') print (img.shape) 效果: up=cv2.pyrUp(img) cv_show(up,'up') print (up.shape) 效果: down=cv2.pyrDown(img) cv_show(down,'down') print (down.shape) 效果: up=cv2.pyrUp(img) #先向上取样再向下取样,有损失 up_down=cv2.pyrDown(up) cv_show(up_down,'up_down') 效果: cv_show(np.hstack((img,up_down)),'up_down') 效果: up=cv2.pyrUp(img) up_down=cv2.pyrDown(up) cv_show(img-up_down,'img-up_down') #原图片-先向上取样再向下取样 效果: 拉普拉斯金字塔 down=cv2.pyrDown(img) down_up=cv2.pyrUp(down) l_1=img-down_up cv_show(l_1,'l_1') 效果: 来源: https://www.cnblogs.com/SCCQ/p

JavaScript 多级联动浮动菜单

心不动则不痛 提交于 2020-02-09 02:55:08
请到这里看09-08-18更新版本 类似的多级浮动菜单网上也很多实例,但大部分都是只针对一种情况或不够灵活,简单说就是做死了的。 所以我就想到做一个能够自定义菜单的,有更多功能的多级浮动菜单。 而其中的关键就是怎么根据自定义的菜单结构来生成新菜单, 关键中的难点就是怎么得到下级菜单结构和容器对象的使用。 理想的做法是每次有下级菜单时,从对象直接取得下级菜单结构,放到容器对象中, 并且容器能重用,而不是每次都重新生成。 但想了很久也想不到适合的做法,直到做了 多级联动下拉菜单 终于得到了灵感。 放弃了直接取得下级菜单结构,而是每次都从原来的菜单结构中获取当前需要的下级菜单结构。 容器对象也不是自动生成,而是由用户先定义好(后来也做到能自动生成了)。 放下了这些包袱后,后面的开发就顺畅了。 特点: 1.根据自定义菜单结构生成菜单; 2.多级联动功能; 3.自定义浮动位置(上下左右); 4.自定义延迟效果; 5.js控制编辑菜单; 6.可根据需要自动生产容器对象; 效果: //--> */ /*--> */ //--> 程序原理 程序是根据传统浮动菜单扩展而来,这里说一下几个比较关键或有用的地方: 【延时功能】 这个很多人 都懂,就是设个setTimeout计时器,这里有两个计时器,分别是容器计时器和菜单计时器。 容器计时器的作用是鼠标移到容器外面时隐藏容器

UVA-1588

房东的猫 提交于 2020-02-08 19:12:57
只用C来写 题目: https://vjudge.net/problem/UVA-1588 1 #include<stdio.h> 2 #include<string.h> 3 #define LEN 1000 4 5 int l(int lenth1,int lenth2,int keep) 6 { 7 int lenth; 8 int m=lenth1-lenth2; 9 if(keep<=m)lenth=lenth1; 10 else lenth=keep+lenth2; 11 return lenth; 12 } 13 14 int lp(int lenth1,int lenth2,int keep) 15 { 16 return (lenth2-keep-1+lenth1); 17 } 18 int main() 19 { 20 char down[LEN]={'0'}; 21 char up[LEN]={'0'}; 22 while(scanf("%s",down)!=EOF) 23 { 24 25 int lenth1,lenth2,i; 26 int check=0,keep,LONG1,LONG2; 27 int LONG; 28 char* temp; 29 scanf("%s",up); 30 lenth1=strlen(down); 31 lenth2

python实现飞机大战游戏

≯℡__Kan透↙ 提交于 2020-02-07 01:16:32
左边就是效果图了,直接上代码 bullet.py import pygame class Bullet1 ( pygame . sprite . Sprite ) : def __init__ ( self , positon ) : pygame . sprite . Sprite . __init__ ( self ) self . image = pygame . image . load ( "images/bullet1.png" ) . convert_alpha ( ) self . rect = self . image . get_rect ( ) self . rect . left , self . rect . top = positon self . speed = 12 self . active = True self . mask = pygame . mask . from_surface ( self . image ) def move ( self ) : self . rect . top - = self . speed if self . rect . top < 0 : self . active = False def reset ( self , position ) : self . rect . left , self .

堆排列~~手写堆

岁酱吖の 提交于 2020-02-06 07:01:21
堆 简单来说堆就是维护一个数据集合,堆的实质是一个二叉树; 堆的性质: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 附上图 嘿嘿~: 今天我们说的小顶堆的 堆排列 介个问题( 我才不会告诉你们我只学了小顶堆 ~小声bb)~~ 储存问题 (这里说一下,因为我们这次是手写堆的教程,跟STL中堆有所不同,4、5操作在STL中是无法完成的,,,还有就是 储存问题 STL 中堆是使用 优先队列 进行存储; 手写堆 是使用一个 一维数组 进行存储;(嗯,对的 ,一个一维数组;) (一般为了方便会把根节点记为1而不是0) 在数组中储存的位置一般就是,第一个为根节点,接下来是根节点的左儿子,,, (简单来说就是我们第X位置存放根节点的话 它的左儿子为 第2X个位置; 右儿子 第2X+1个位置; ) 主要操作 主要就是两个操作down(x)还有up(x) 所谓 down(x); 就是从上到下进行处理; 举个栗子~~ 若将 1处位置—>4改为10 此时与堆的性质不符,将1处与其左右儿子相比较,找出最小值,交换两处位置,(因为堆顶为最小值) 同理与2处与其左右儿子相比较,,最总结果为: 同理up(x)操作为从下到上搜索 例如 将 5处 9改为—>2; ( 与down不同,up只与其父节点比较,,, ) 2<8 将 3处 与 5处

同步调用WebService和异步调用WebService

冷暖自知 提交于 2020-02-06 03:51:05
一、异步调用 asynchronous call(异步调用):一个可以无需等待被调用函数的返回值就让操作继续进行的方法 举例:   异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了。   同步调用就是你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去。 二、同步调用异步调用比较 同步调用:   异步调用:   三、jax-ws的同步和异步   在旧的基于JAX-RPC的webservice编程model中,是不支持异步的service 调用的,在最新的Jax-ws webservice 编程model中,加入了对webservice的异步调用的支持。   首先我来讲一下它的原理,大家不要以为在异步的调用下,从client到server 之间的soap message 流也是异步的,其实不是,Soap/Http 协议在同步跟异步的调用下是一样的,都是客户端的service在运行时打开一个connectin,发送请求,然后接收返回,这些都在同一个connection中。这种方式对我们有什么影响呢?从客户端程序的角度来讲,没有影响,客户端的编程模型是由WSDL中的messages跟port types 来定义的,只要这些东西没有改变,request 跟response是不是在同一个Tcp/ip 的session

习题:Down or Right

烈酒焚心 提交于 2020-02-04 20:54:42
题目 传送门 思路 首先我们考虑限制 \(n-1\le(r_i-r_j)+(c_i-c_j)\) 具体到图像上表示什么 画个图就能明白,就是从将一个正方形沿对角线切开,每一次询问要从一个顶点询问另一个块中的某一个点 之后我们考虑策略 从 \((1,1)\) 开始走,在保证走到的那一个点能到达终点的情况下尽可能向右走,不行在向下走 一直走到对角线 之后从 \((n,n)\) 开始走,能往上走就往上走,不能就往左,一直到对角线 用反证法可以证明这两条路径一定相遇 代码 #include<iostream> #include<vector> #include<algorithm> using namespace std; int n; int x,y; string s1; string s2; bool ask(int a,int b,int c,int d) { cout<<'?'<<' '<<a<<' '<<b<<' '<<c<<' '<<d<<endl; fflush(stdout); string s; cin>>s; if(s=="YES") return 1; return 0; } int main() { ios::sync_with_stdio(false); cin>>n; x=1; y=1; for(int i=1;i<=2*n;i++) { if(x+y==n

vue 组件系列-dataloading

感情迁移 提交于 2020-02-04 17:42:06
// referenced: https://github.com/bedlate/vue-data-loading <template> <div class="vue-data-loading"> <div class="loading-header" :style="{height: pullHeight + 'px'}" v-show="PULL_DOWN === pull.type"> <div class="header-text" v-show="!pull.available"> <slot :name="PULL_DOWN + '-before'">下拉刷新数据</slot> </div> <div class="header-text" v-show="pull.available && PULL_DOWN !== loadingType"> <slot :name="PULL_DOWN + '-ready'">松开刷新数据</slot> </div> <div class="header-text" v-show="PULL_DOWN === loadingType"> <slot :name="PULL_DOWN + '-loading'">刷新中...</slot> </div> </div> <div class="loading-content">

手写堆

荒凉一梦 提交于 2020-01-31 10:36:48
堆排序 输入一个长度为n的整数数列,从小到大输出前m小的数。 输入格式 第一行包含整数n和m。 第二行包含n个整数,表示整数数列。 输出格式 共一行,包含m个整数,表示整数数列中前m小的数。 数据范围 1≤m≤n≤105, 1≤数列中元素≤109 输入样例: 5 3 4 5 1 3 2 输出样例: 1 2 3 思路: 将小根堆(完全二叉树)存储在一维数组中,假设一节点的下标是 x ,则其父节点下标为 [x/2] ,左右子节点下标分别为 2x ,2x+1 小根堆的建立可用down()操作来实现,从最后一个节点的父节点开始,使其保证有小根堆的性质,从下标为n/2到下标为1根结点 代码: # include <iostream> # include <algorithm> using namespace std ; const int N = 100010 ; int n , m ; int a [ N ] ; int idx ; void down ( int u ) { int t = u ; if ( u * 2 <= idx && a [ u * 2 ] < a [ t ] ) t = u * 2 ; if ( u * 2 + 1 <= idx && a [ u * 2 + 1 ] < a [ t ] ) t = u * 2 + 1 ; if ( u != t ) { swap