Long Luo's Life Notes

每一天都是奇迹

By Long Luo

TI的EK-LM3S8962开发板有着比较丰富的外设,由于个人从小对音乐感兴趣,因此利用其中的蜂鸣器外设来实现音乐播放的功能,下面对此进行逐一解析:

先上张开发板的Layout图:

EK-LM3S8962

要实现音乐播放,首先要明白数字音乐是如何播放出来的?

首先需要了解一个事实,那就是我们所听到的音乐只是一系列不同频率的声音按照一定的节奏播放出来。

但是乐音是有特定的频率的,因此我们首先要定义不同的乐音音节:

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
#ifndef  __MUSIC_H__
#define __MUSIC_H__


// 定义低音音名(数值单位:Hz)
#define L1 262 // c
#define L2 294 // d
#define L3 330 // e
#define L4 349 // f
#define L5 392 // g
#define L6 440 // a1
#define L7 494 // b1

// 定义中音音名
#define M1 523 // c1
#define M2 587 // d1
#define M3 659 // e1
#define M4 698 // f1
#define M5 784 // g1
#define M6 880 // a2
#define M7 988 // b2

// 定义高音音名
#define H1 1047 // c2
#define H2 1175 // d2
#define H3 1319 // e2
#define H4 1397 // f2
#define H5 1568 // g2
#define H6 1760 // a3
#define H7 1976 // b3

// 定义时值单位,决定演奏速度(数值单位:ms)
#define T 3600

// 定义音符结构
typedef struct
{
short mName; // 音名:取值L1~L7、M1~M7、H1~H7分别表示低音、中音、高音的
// 1234567,取值0表示休止符
short mTime; // 时值:取值T、T/2、T/4、T/8、T/16、T/32分别表示全音符、
// 二分音符、四分音符、八分音符…,取值0表示演奏结束
}
tNote;

//
typedef struct _tMusic
{
struct tNote;
char cName[20];
}
tMusic;

//
extern void playNote(const tNote * pNote);
extern void displayNoteName(const tMusic * pMusic);


#endif/*__MUSIC_H__*/

然后呢,我们需要歌谱,歌谱是一系列音节按照一定的节奏和时长播放出来:

阅读全文 »

By Long Luo

linux的文件系统采用单根倒置树结构,在此结构中的最上层是根目录/,然后在此目录下再创建其他的目录。与windows多个根目录不同,Linux只有一个根目录。

文件名称区分大小写。 以.开头的为隐藏文件。 Linux中路径用/来进行分割;windows中使用。 文件有元数据与数据本身两种类型。 默认的基本目录结构如下:

目录 说明 /bin(重点) binary的缩写,存放最常用的命令 /sbin Super User的意思,存放系统管理员使用的系统管理程序 /home(重点) 存放普通用户的主目录,Linux中每个用户都有一个自己的目录,一般是以用户的账号命名 /root(重点) 系统管理员,也称为超级权限者的用户主目录 /lib 系统开机需要的动态连接共享库,作用类似于Windows中的DLL文件。几乎所有的应用程序都要用到这些共享库 /lost+found 一般情况下是空的,当系统非法关机后,这里就存放了一些文件 /etc(重点) 所有的系统管理需要的配置文件和子目录my.conf /usr(重点) 用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录 /boot(重点) 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件 /proc(别乱动) 是一个虚拟目录,是系统内存的映射,访问这个目录来获取系统信息 /srv(别乱动) service缩写,该目录存放一些服务启动之后需要提取的数据 /sys(别乱动) Linux2.6内核一个很大的变化,该目录安装了2.6内核中新出现的一个文件系统 /tmp 存放一些临时文件 /dev 类似Windows的设备管理器,把所有的硬件用文件的形式存储 /media(重点) Linux系统会自动识别一些设备,如U盘、光驱等,识别后,Linux会把识别的设备挂在到该目录下 /mnt(重点) 此目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以看里面的内容 /opt 为主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下 /usr/local(重点) 这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装程序 /var(重点) 存放着在不断扩充着的东西,习惯上将经常被修改的目录放在这个目录下,包括各种日志文件 /selinux 全称security-enhanced linux,类似于Windows的360,SELinux是一种安全子系统,它能控制程序只能访问特定文件

文件系统结构总结:

Linux的目录中只有一个根目录/ Linux的各个目录存放的内容是规划好的,不要乱放文件。 Linux是以文件的形式管理设备的,因此Linux系统中一切皆为文件。 Linux的各个文件目录下存放什么内容,需要有一个准确的认识。

在 Linux 系统中,所有内容都是以文件的形式保存和管理的,即「一切皆文件」。普通文件是文件,目录(Windows 下称为文件夹)是文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。

linux只有一个根目录,而且文件和目录被组织成一个单根倒置树结构, 此结构最上层是根目录,用“/”表示

根文件系统(rootfs):root filesystem 标准Linux文件系统(如:ext4)

如下图:

关于目录结构,有些比较重要的目录我们要需要记住:

/etc/resolv.conf Linux 系统DNS客户端配置文件,DNS(Domain Name System)在网站的运行中起到了至关重要的作用,其主要负责将网站域名解析为对应的IP地址。

/etc/hostname 主机名配置文件 hostnamectl set-hostname itlaoxin 这个命令会直接修改配置文件

/etc/hosts 设定用户IP与名字(或域名)的对应解析表,相当于本地(局域网内)的DNS解析文件 Linux系统下的这个/etc/hosts类似于C:

/etc/fstab:配置开机设备自动挂载的文件

/etc/inittab:系统启动时设定运行级别等配置的文件

./etc/profile及/etc/bashrc:配置系统的环境变量/别名等的文件

/etc/profile.d:用户登录后执行的脚本所在的目录

/etc/init.d:软件启动程序所在的目录(centos7之前),centos7之后这个目录已经不用了。

/etc/motd:配置用户登录系统之后显示提示内容的文件

/etc/redhat-release:查看Red Hat版本号和名称信息的文件

/etc/sysctl.conf:Linux内核参数设置文件

/var/log:记录系统及软件运行信息文件所在的目录

var/log/secure:用户登录信息日志文件

/var/log/dmesg:记录硬件信息加载情况的日志文件

/proc/cpuinfo 当前cpu相关的信息

/proc/meminfo 当前内存信息

/proc/loadavg 当前平均负载相关的信息

/proc/mounts 当前挂载相关的信息

文件类型

使用命令查看文件,首字母会标记该文件的文件类型,有以下几种类型:

-: 普通文件 d: 目录文件 b: 块文件 c: 字符文件 l: 符号链接文件 p: 管道文件 pipe s: 套字节文件 socket

参考文献

https://www.gnu.org/software/bash/manual/bash.html#Bash-Startup-Files

By Long Luo

一、 问题描述

Java聊天室是用Java程序实现的,由客户端和服务器端组成。先启动服务器端,再启动客户端,服务器验证身份后客户便可登陆聊天室。

对于客户来说: - 注册、登陆和退出聊天室时都有相关提示信息; - 用户应该可以看到所有在线的用户; - 聊天时可以群聊,也可以选择某个聊天对象私聊。

对于服务器来说: - 登录聊天室时必须输入正确的用户名和密码,未注册用户必须先注册; - 可以显示当前使用的端口,IP地址及在线人数; - 可以显示所有用户注册、登陆及退出等信息,且在用户登陆和退出时可以实时刷新在线用户列表 - 可以显示所有聊天记录,并可以将记录保存在文件中。

二、 软件设计

完成这个作业参考了马士兵的Java系列视频及从网络上下载的代码,对其进行了修改和完善,主要是增加了服务器窗口,实时显示相关信息、在线用户列表等。

对于网络聊天器来说,核心思想是基于套接字的编程。在这里,打个小小的比方,我们的程序在Win32环境下表示为一个进程,也可以比喻成一所房子,该进程的套接字就好比是一扇门。我们的服务器,也就是房子的主人,如果他没睡觉的情况下,也就是位于运行状态时,是一直在倾听且欢迎着门外的敲门声的。

客户端程序运行时,会向服务器发起一个连接,即敲服务器家里的门,在程序上是通过创建一个套接字来完成的。当服务器听到了敲门声之后,他会创建一个新的门,专门为这个客户服务,在Java代码上是通过serverSocket.accept()来实现的。这个门也就只为这个客户而开,当客户离开之后,服务器也会将这扇门关闭。

客户端:

  • ChatClient.java,完成客户端窗口的绘制及发起连接、关闭、聊天;

服务器端:

  • ChatServer.java,服务器端,启动服务器端口并进行监听;
  • ServerFrame.java,服务器窗口,主要是服务器窗口绘制;
  • ServerProcess.java,服务器和客户端连接的处理,包括登陆、注册、退出、信息的发送。
阅读全文 »

By Long Luo

未觉池塘春草梦,阶前梧叶已秋声。

一、尘事

忆昔午桥桥上饮, 坐中多是豪英。 长沟流月去无声。 杏花疏影里, 吹笛到天明。

二十余年如一梦, 此身虽在堪惊。 闲登小阁看新晴。 古今多少事, 渔唱起三更。

第一次读到这首词的时候,是在4年前大学的图书馆里,不过当时限于阅历,无法领悟,只是觉得意境太优美,直到现在还能完整的写出来。

眼下是深圳广大无业游民中的一员,个人的七百多个日日夜夜投进深圳的长河里激不起一丝的浪花,而对于自己却是走完了不短的一段路程。遥想当年刚刚走出校门,对未来踌躅满志,意气风发,虽然不能像主席一样指点江山,激扬文字,谈笑间樯橹灰飞烟灭,也曾幻想着指点钞票,喜中大奖,不过却总是离中500万差几个球。待到走入社会,却发现自己是个愣头青,在社会的墙壁上碰的鼻青脸肿,这社会上要学的东西太多太多,不光是技术、做人,还有各种各样的或明或暗的规则…

想起爸妈还在远方的工地上挥汗如雨,自己的这点辛苦又算得了什么呢?想起爸妈说给我的话,如同一盏灯,越过了那一抹淡淡的天幕,照亮我堆积在心中难言的情愫,也指引着我前行的方向…

没有伞的孩子要学会努力奔跑!

二、梦里不知身是客,一晌贪欢

接过房东那串钥匙,刹那间,我已变成了一位客居他乡的游子,从此,昂贵的房租将按月提醒我寄居他处的艰辛。

在这里,我不得不守住一些规矩,谁都可以住在我的隔壁,与我一同分享日出日落的风景和晚来时风雨萧萧的寂寞。房东离我很近,客套中自有一份难以缩短的距离。

租房住,始终感到自己是个漂泊的人。如同一件寄存在他处的简单行李,随时都可能搬到别处,因为房东,因为邻居,也许因为我自己。 

By L. Luo于2011年07月14日晚 at Nanshan District, Shenzhen, China.

By Long Luo

既要读万卷书,更要行万里路!由于上周工作太累,最近心事重重,决定自己一个人去散散心。一直想去珠三角电子行业配套最完善的东莞去看看,想一想,思考思考…….

一、商业和城市的诞生

命运是一种很奇妙的东西,也许没有改革开放,那些东莞本地土著和内陆的农民没有什么区别。可是邓小平的改革开放,让许多人的人生轨迹发生了太大的转变,他们一跃而成了当地的工厂主,出租房的老板,从而身价倍增………..

自从远古时候的猴子变成了人之后,主宰这个世界的规律就从物理化学变成了经济学。有的猴子下地后学会了种地,有的继续打猎,有的会做石斧等等生产工具,他们需要交换就集中在一个地方交易,慢慢地发展成了集市,乡镇,城市……..

(未完待续!)

二、政策改变了深圳和东莞

政策是一种非常非常强大的资源。

一个地方的价值升高了,归根结底是这下面沉淀了太多的钱了,不管是公路,铁路,公园,地铁,劳动力……….

三、被抛弃的东莞?

东莞目前存在的一个很大的问题:东莞的行业还都是劳动密集型的,现在的打工者发现北上广深这些地方,繁华的大城市的灯红酒绿,这些都不属于我们,他们要的只是我们的青春,廉价的劳动力,等我们被新一代的廉价劳工取代后,我们又没有价值了…….

工厂没有人来开动怎么办?由于大家都无法集中在一个行业认认真真干,导致技术水平无法积累下来,所以中国的一些东西无法卖出高价……..

四、松山湖承载着东莞腾飞转型的希望!

松山湖很漂亮,看的出来东莞是下了血本去创造的。东莞是希望能够让高附加值的产业替代………

东莞的房价也很高了,…………

By Long Luo@May, 2nd 2011 at BaiShiZhou, Shenzhen, China. ModifiedBy Long Luo 2018年10月29日23点40分 at Shenzhen, China.

0%