0%

IOS  解析点阵字库

IOS控制点阵屏显示,加载点阵字库,目前已经实现,有感兴趣的留言,我把它整理出来。

我实现的是 1616的中文和168的英文显法。

字库制作

制字方案的生成和成嵌入式系统上生成字模文件的方案是一样的。

IOS从字库中取到字模

字模显示

开发IOS应用在发布的时候需要将全部的NSLog中去掉,怎么弄呢?可以使用一个宏来控制:

在系统包含的公共头文件中加入下面的语句:

1
2
3
4
5
#ifndef __OPTIMIZE__
# define NSLog(...) NSLog(__VA_ARGS__)
#else
# define NSLog(...) {}
#endif

一般情况下,Release版本系统会定义 OPTIMIZE 宏,而Debug版本不会,根据这个差别使用不同的NSLog,从而达到上面的目的。

习惯了HHKB之后表示经常把 caps lock 与 ctrl 键按错,就想在Mac上能不能把caps lock改成ctrl呢,研究了下,发现其实很简单:在键盘设置里面的修饰键就可以改过来,直接的选项,交换就行了。

不过嘛,看起来有点怪,因为caps lock上有个灯,大小状态还是这个灯显示的,但按下的意义又完全变了。

头文件及keil C的一点经验·

许多初学者使用网上下载的程序时都会遇到这样一个问题,就是头文件找不到。我想就这个问题说明一下。/

·首先,我们用到的KEIL有几种版本的,头文件也不同。有reg51.h和at89x51.h两种比较常见。at89x51和reg51这两个文件有点不同,reg51没有对IO口的位地址进行定义。所以我们在使用reg51的时候,可能会有一些相关语句通不过,比方说P0_1=1;这样的位操作。

文件都放在Keil的KEILC\C51\INC目录下,大家可以看看自己的KEIL版本使用了哪个头文件,也有些KEIL封装了reg51和at89x51两个头文件,都可以用。/

·头文件定义在程序的第一行,方法是#include ,如果提示这个文件找不到可以改为#include 试试。

·下面是一些使用心得,网上的.使用Keil C调试某系统时积累的一些经验

1
2
3
4
5
6
7
8
9
10
1、在Windows2000下面,我们可以把字体设置为Courier,这样就可以显示正常。
2、当使用有片外内存的MCU(如W77E58,它有1K片外内存)的时候,肯定要设置标志位,并且编译方式要选择大模式,否则会出错。
3、当使用Keil C跟踪程序运行状态的时候,要把引起Warning的语句屏蔽,否则有可能跟踪语句的时候会出错。
4、在调用数组的时候,Keil C是首先把数组Load进内存。如果要在C中使用长数组的时候,我们可以使用code关键字,这样就实现了汇编的DB的功能,Keil C是不会把标志code的数组Load入内存的,它会直接读取Rom。
5、拉高管脚的执行速度远远比检查管脚电平的要快。当编程涉及到有关通信,时序是很重要的。
6、在等待管脚电平变化的时候,我们需要设置好超时处理,否则程序就会因为一个没有预计的错误而死锁。
7、能用C语言实现的地方,尽量不要用汇编,尤其在算法的实现,用汇编是晦涩难懂。
8、程序的几个参数数组所占篇幅很大,其中液晶背景数组最长,有四千个Byte,因而把那些初始化数组都放在另外一个C文件,在主文件使用使用关键字extern定义,这样就不会对主文件的编写造成干扰。
9、所有函数之间的相关性越低越有利于以后功能的扩展。
10、6.20版在编译带code关键字的数组时,编译通过但是单片机运行结果是错误的,改用6.14版后正常。

      听了《尚学堂》关于UML学习的两天的课,自己感觉这课还不错吧,关键是讲的人结合了软件开发中的具体的经验,UML是一门工具,只有结合具体的应用场景,才能看见其价值。   这让课程主要讲了这几个方面:类图,顺序图,状态图,用例编写,其它的也基本上只是提到了一下。虽然结合的是Java的开发讲的,结合了一些Java的具体的框架,自己在这方面有些不懂。   不同的图相当于一种分析的解度,类图是静态的建模,顺序图对动态的建模。状态图用来描述一个特定的对象的所有可能的状态,以及由各种事件发生而引起的状态之间的转化。活动图用来描述事物或对象的活动变化流程。

对于类图:关键是理解和分析各种类之间的关联关系。学习中应注重与思想,而不仅仅停留在图的表面上,图只不过是思想的一种反映罢了,对于程序设计,还要结合具体的代码,例如,每一种关系,代码上是如何表现的,相反,图能够直观的反映代码的结构,比如学习设计模式,如果把设计模式都用类图表示出来。非常的直观,也很好记忆,也能更好的理解,用到这一设计模式,首先想到的是这一设计模式的类组,然后跟据自己的特定的情况,写代码就是了。

对于顺序图:顺序图反映了一种动态的过程,比如在哪课程中举的”登陆“过程例子,用顺序图非常直观的分析了这一过程,分析了各个模块(类)之间要进行的哪些交互,通过对这一过程的分析,设计者了解了程序完成某一件事情都需要做些什么,通过对交互图的认真分析,对于设计者,也可以得出类的功能划分——这一点原来自己一直感到很困惑,看老师演示这一过程,感觉自己有一点认识吧。通过功能来设计类,通过类图来理解系统,从静态和动态两个不同的方面认识系统,不同的角度,但却是一个整体。对于交互图的另一种:协作图,课程中只是提到了一下,演示了一下顺序图和协作图通过Rose的转换,说是一般用在公司的白板描述中,为了节约白板空间,自己不知这个描术是不是准确。

对于状态图:状态图应该是很重要的,这是一种程序员和客户都能看懂的图,在程序的设计阶段分析系统的各种可能的状态非常重要,否则的话,可能在开发的后期会导制系统结构的大的修改。课程中用一个开发校园一卡通作为例子,分析卡在不同时刻的状态,和不同的时刻的状态转化关系,非常直观。同时也用DVD机在工作过程中的状态用了演示。状态图对于系统的分析应该很有帮助吧。

这门课程最后还重点讲了如何作需求分析,如何写用例文档。提了一下GRASP(基于职责设计对象)模式。

  • 空间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # 2/10/16 base trans. wrote by srcdog on 20th, April, 2009
    # ld elements in base 2, 10, 16.

    import os,sys

    # global definition
    # base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]
    base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]

    # bin2dec
    # 二进制 to 十进制: int(str,n=10)
    def bin2dec(string_num):
    return str(int(string_num, 2))

    # hex2dec
    # 十六进制 to 十进制
    def hex2dec(string_num):
    return str(int(string_num.upper(), 16))

    # dec2bin
    # 十进制 to 二进制: bin()
    def dec2bin(string_num):
    num = int(string_num)
    mid = []
    while True:
    if num == 0: break
    num,rem = divmod(num, 2)
    mid.append(base[rem])

    return ''.join([str(x) for x in mid[::-1]])

    # dec2hex
    # 十进制 to 八进制: oct()
    # 十进制 to 十六进制: hex()
    def dec2hex(string_num):
    num = int(string_num)
    mid = []
    while True:
    if num == 0: break
    num,rem = divmod(num, 16)
    mid.append(base[rem])

    return ''.join([str(x) for x in mid[::-1]])

    # hex2tobin
    # 十六进制 to 二进制: bin(int(str,16))
    def hex2bin(string_num):
    return dec2bin(hex2dec(string_num.upper()))

    # bin2hex
    # 二进制 to 十六进制: hex(int(str,2))
    def bin2hex(string_num):
    return dec2hex(bin2dec(string_num))

    if __name__ == '__main__':
    print bin2hex('111110')
    print hex2bin('f1')
    print dec2hex('255')
    收藏于 2011-03-09
    来自于百度空间

在隐藏的列的表头上,光标放到隐藏的列的那个位置向两边拉,就把隐藏的列拉出来了。

Excel 2010 测试通过。

下面的方案是可行的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt`</pre>
整个文件:<!--more-->

<pre>`\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$lang$,$endif$$if(papersize)$$papersize$,$endif$]{$documentclass$}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
% use microtype if available
\IfFileExists{microtype.sty}{\usepackage{microtype}}{}
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[utf8]{inputenc}
$if(euro)$
  \usepackage{eurosym}
$endif$
\else % if luatex or xelatex
  \usepackage{fontspec}
  \ifxetex
    \usepackage{xltxtra,xunicode}
  \fi
  \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
  \newcommand{\euro}{€}
$if(mainfont)$
    \setmainfont{$mainfont$}
$endif$
$if(sansfont)$
    \setsansfont{$sansfont$}
$endif$
$if(monofont)$
    \setmonofont{$monofont$}
$endif$
$if(mathfont)$
    \setmathfont{$mathfont$}
$endif$
\fi
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$if(natbib)$
\usepackage{natbib}
\bibliographystyle{plainnat}
$endif$
$if(biblatex)$
\usepackage{biblatex}
$if(biblio-files)$
\bibliography{$biblio-files$}
$endif$
$endif$
$if(listings)$
\usepackage{listings}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
$if(tables)$
\usepackage{longtable}
$endif$
$if(graphics)$
\usepackage{graphicx}
% We will generate all images so they have a width \maxwidth. This means
% that they will get their normal width if they fit onto the page, but
% are scaled down if they would overflow the margins.
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width&gt;\linewidth\linewidth
\else\Gin@nat@width\fi}
\makeatother
\let\Oldincludegraphics\includegraphics
\renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=\maxwidth]{#1}}
$endif$
\ifxetex
  \usepackage[setpagesize=false, % page size defined by xetex
              unicode=false, % unicode breaks when used with xetex
              xetex]{hyperref}
\else
  \usepackage[unicode=true]{hyperref}
\fi
\hypersetup{breaklinks=true,
            bookmarks=true,
            pdfauthor={$author-meta$},
            pdftitle={$title-meta$},
            colorlinks=true,
            urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$,
            linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$,
            pdfborder={0 0 0}}
\urlstyle{same}  % don't use monospace font for urls
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(strikeout)$
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$endif$
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
$if(numbersections)$
$else$
\setcounter{secnumdepth}{0}
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt$endif$
$if(verbatim-in-note)$
\VerbatimFootnotes % allows verbatim text in footnotes
$endif$
$if(lang)$
\ifxetex
  \usepackage{polyglossia}
  \setmainlanguage{$mainlang$}
\else
  \usepackage[$lang$]{babel}
\fi
$endif$
$for(header-includes)$
$header-includes$
$endfor$
$if(title)$
\title{$title$}
$endif$
\author{$for(author)$$author$$sep$ \and $endfor$}
\date{$date$}
\begin{document}
$if(title)$
\maketitle
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
{
\hypersetup{linkcolor=black}
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
}
$endif$
$body$
$if(natbib)$
$if(biblio-files)$
$if(biblio-title)$
$if(book-class)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
\bibliography{$biblio-files$}
$endif$
$endif$
$if(biblatex)$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}

~~~~~~~~~~~~~~~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
\documentclass[]{article}

\usepackage[T1]{fontenc}

\usepackage{lmodern}

\usepackage{amssymb,amsmath}

\usepackage{ifxetex,ifluatex}

**\usepackage[body={18cm,24cm}]{geometry}**

**\geometry{papersize={21cm,29.7cm}}**

\usepackage{fixltx2e} % provides \textsubscript

% use microtype if available

\IfFileExists{microtype.sty}{\usepackage{microtype}}{}

% use upquote if available, for straight quotes in verbatim environments

注意加粗的两行。

&nbsp;

IOS 视图控制器

视图控制器之间的切换

在响应的位置,创建需要的视图控制器,然后preset过去。

视图控制器之间传递数据

  1. 通知中心 最简单的方式,缺点就是两个类之前没有关系。
  2. 代理模式 采用协议的方式,需要向外传数据的类定义代理,接受数据的类实现协议。协议赋值采用 assign。 # IOS 控件 * UILabel * UIControl 处理事件 * UIButton 处理状态 工厂方法:buttonWithType 贴图的方法,要使用custorm Type cancel 事件,来电话和锁屏触发 * 风火轮(UIActivityIndicatorView) 显示与停止,显示到状态栏。