2008年4月4日

东京游记之樱花记



日本被誉为“樱花之国”,这个季节正是整个JP岛国的花团锦簇、五彩绚丽之时,赏樱花被JP奉为文化,说实在的总感觉JP做什么事都搞得表面很正式化,让你感觉像个正人君子,呵呵!


不要认为樱花是日本原产的,如同许多事物一样,樱花来自于我们伟大的中国,应该是从云南与喜马拉雅地域传入JP,据传可能是一个僧人从云南带到JP的(不会又是那个和尚吧,做人不能太CNN哦)。然而在中国,如果有人看樱花时说樱花是从JP移植过来的,那Enoch真的无语了。更有见于文章称中国樱花来自日本,这实在是,哎!

有诗为证。

白居易:“小园新种红樱树,闲绕花枝便当游”;于若瀛:“三月雨声细,樱花疑杏花”。

JP把樱花做大做强,便有了原产地的假象,但改变不了历史事实,如同一些过去的伤痕是不会被历史所遗忘一样的。赏樱花只是随便看看就可以了,无需像JP一样搞得那么正式化,JP所谓的文化,我们可以不必当真。





春光乍泄,抓紧这美好的时光,带上你的伙伴,去呼吸新鲜空气,拥抱大自然吧。

春光乍泄,抓紧这美好的时光,带上你的伙伴,去呼吸新鲜空气,拥抱大自然吧。

Technorati Tags: ,,

阅读全文...

2008年4月2日

播求(Buakaw)

播求(Buakaw)也许大家对这个名字谋生,我也是最近看电视直播K1自由搏击才了解他。

播求的父亲是一位职业泰拳手,受其父影响,播求在很小的时候也开始了泰拳训练。播求在少年时期就已经在泰拳擂台上崭露头角,虽然这时的播求还小,但从他的目光中却已经可以看到斗士的精神。

2004斗年的K1大赛决赛场上,播求VS魔裟斗(Masato),魔裟斗是日本的一位年轻泰拳王,是当年日本的冠军,播求最后兵不血刃的用外围技术战胜了魔裟斗,成为了世界上最强。

在2005年的K1总决赛上,本来夺冠呼声最高的播求,遭遇荷兰自由搏击名将(shootboxing的02、04冠军)安迪·苏瓦,在加时战后点数惜败。失败原因很多,赛后播求总结经验,尤其加强了对拳法的训练。

在06年世界泰拳锦标赛上,播求一记右摆拳击腹K।O了老泰拳王乔丹,在而后的K1 World Max 2006的总决赛上,半决赛中播求在第二回合一记左拳K।O了日本冠军佐藤嘉洋,而准决赛里播求的拳法更让新星Drago重击读秒,更意想不到的是在总决赛中再次与安迪·苏瓦遭遇时,本来以为会势均力敌的决赛,在第二回合时,播求一个防御性的下潜摇闪,紧跟一记左勾拳,将安迪读秒,随后又是一记右勾拳读秒,此时的安迪已经是被打得晕头转向,最后播求一个反击右直拳,再次击倒,这时裁判判定安迪被TKO,播求成为Max历史上第一个双冠王。
07年日本选拔赛的表演赛上和世界最终选拔赛上,隔了一年的播求的闪避和组合能力有所提高,虽然对手都是高手,但在世上最强王者播求面前也只有找招架之功,没有还手之力。开幕战上,播求更是以大优势击败了K1 GP的两届冠军“巨人膝”萨米·西尔特的同门师弟-Nicky Holtzken,晋级总决赛。总决赛配到的是魔裟斗(Masato),最终点数惜败。

播求曾经参加了中国功夫与泰拳的比赛,对手是中国的散打王孙涛,在职业选手面前,半职业的中国的散打根本不能对付,抗击打能力太差,虽然在首局孙涛靠抱摔赢了,第二局播求不防守采取近身战,靠腿部重击将孙涛KO。


阅读全文...

博客工具WLW

      WLW(Windows Live Writer)是微软发布的一款免费的桌面应用程序,您可以使用它轻松发布丰富的内容到您的网络日志。而且WLW支持众多的网络日志平台,可以利用它轻松的在多个博客服务和博客帐号之间转换,不用登录即可编辑和发表博客。
      WLW可以自动侦测并保存您的网络日志的视觉主题。所以,您可以在博客发布之前,在写日志的过程中真切地看到日志的外观和排版,再也不必浪费时间来联机预览了。无须任何HTML知识,你可以利用WLW轻松插入和编辑如超链接、表格、图片、视频、标签及地图等,非常容易使用。
      目前WLW支持的博客系统有:
  - Windows Live Spaces
  - Blogger
  - LiveJournal
  - TypePad
  - Wordpress
  - All blogs that support RSD (Really Simple Discoverability)
  - Metaweblog API
  - Moveable Type API
      最新的信息请点击【这里】,是Windows Live Writer的官方博客。
      最新中文版Windows Live Writer软件下载请点击【这里】。
 

阅读全文...

思科是什么(What is the Cisco?)

<可以自由转载,但请注明以下内容,谢谢合作!>

<作者:Enoch Wang 引用自:http://chinawangquan.spaces.live.com>

思科 Cisco 是旧金山英文名字 San Francisco 的最后五个字母,思科公司的图标正是旧金山的金门大桥,创始人的意思是要建起连接不同网络的桥梁。

思科是由里奥纳多•波萨克(Leonard Bosack)和桑迪•勒纳(Sandy Lerner)创始。斯坦福大学当时各院系之间都有自己的网络中心,被通过一种称为路由器的设备连接,而当时二人为斯坦福大学不同的院系计算中心主管,两人正处于恋爱之中,而当时各个院系的网络路由器设备不同,什么厂家的、什么协议的都有,互不兼容,情书传递起来很不方便,于是两人干脆发明了一种能支持各种网络服务器、各种网络协议的路由器。于是思科赖以生存的“多协议路由器”便诞生了。

思科(Cisco)年记:

1984思科在硅谷成立;当思科的两位创始人Leonard Bosack和Sandy Lerner在斯坦福大学里,用一种完全创新的技术,通过计算机隔着校园聊天的时候,没人能想到,这种技术竟改变了整个世界;Leonard Bosack和Sandy Lerner,选用了金门大桥来象征他们的网络公司--思科就好像连接世界的"金桥",让世界各地的网络紧密联结、畅通无阻; 随着时代的进步,思科不断推动着商业的发展;与此同时,思科的品牌形象和标志也在不断更新。
1985年 推出第一款产品 -- MEIS Subsystem;第一个标识。
1990年 召开Networkers用户讨论会;第二个标识。
1993年
完成首次收购行动:Crescendo通信公司(Crescendo Communications);推出思科认证网络专家计划(CCIE);推出Cisco2000远程接入路由器平台,为远程办公提供"无协议接入服务";公司员工总数1459人。
1996年 推出第一个中文客户支持网站;公司员工总数8259人。
1998年
第一支电视广告播出,启动"Are You Ready?"宣传活动;组建互联网业务解决方案部门(IBSG);公司员工总数14,623人。
2000年 发布互联网家庭计划;第一部电影通过互联网发布;
2002年 第一百万台IP电话售出;公司员工总数35,670人。
2003年 通过收购Linksys Group进入家庭网络市场。
2006年 收购亚特兰大科技(Scientific-Atlanta);公司员工总数35,670人;新标识。


阅读全文...

谷歌是什么(What is the Google?)

谷歌是什么?

    谷歌是Google公司在2006年开始采用中文名称,在这一过程中曾经招致各方面的批评。一种批评的言论是,谷歌中的“谷”也可以理解为“峡谷”,意味着走下坡路。市场研究公司BDA中国的分析师则表示:“将Google中文名称定为‘谷歌’的那个人简直不懂中文,这一名称对于Google的营销没有任何帮助。”
    据施密特说,谷歌是山谷之歌,但山谷之歌,和Google何干?让我们猜猜谷歌是什么意思吧。
    • 谷歌,就是李谷一唱歌,但李谷一,又和Google何干,形象大使?
    • 硅谷之歌(还算比较合适),又和Google何干,在中国还唱硅谷之歌,找抽啊?
    • “谷歌”被引申为“谷哥”,莫非是硅谷的大哥?
    • 收获稻谷要唱歌,还是谷子会唱歌?
    • 布谷鸟唱歌?
    • 恶人谷之歌?
    • 胡戈的昵称?
    • 虚怀若谷,大气成歌(酸)?
    • 字面解释,“谷”字拆开是“八”“人”“口”,意思是中国人口众多,人多钱也就多,所以也就“888”了;“歌”字拆开是“哥”“欠”,意思是哥们儿欠钱不还,大家免费用人家Google的东西这么长时间了,也没怎么给钱,出来混的迟早要还滴?
    听听Google的解释: “谷歌”,充满中国式的田园诗意,抛弃了呆板的英文直译。你可以说是来自硅谷的歌声,怀藏憧憬,默默地服务全球中文用户,也可以说是丰收之歌,喜悦之歌,总之,这是一个属于全球中国人的Google。
    呆然......

What is the ?

    “Googol”是一个数学名词,表示一个 1 后面跟着 100 个零。这个词是由美国数学家 Edward Kasner 的外甥 Milton Sirotta 创造的,随后通过 Kasner 和 James Newman 合著的“Mathematics and the Imagination”(数学与想象力)一书广为流传。Google 使用这一术语体现了公司整合网上海量信息的远大目标。
 
    对于Google的中文名不知你有怎样的想法,或是怎样的理解呢?

 

Technorati 标记: , ,

阅读全文...

身在日本如何免费或低价拨打中国电话或发短信

电话篇

对于往国内打电话没有免费的,不过有便宜的方法。

方法1:

www.bbtok.com网站上看到说打0343607612或0345900120号码,可以免国际通话费打国内长途,如果你也是03地区,也就是东京都内才可以,只走市话费3分/8日元。完全可信。不过一般打三回能接通一回。

方法二:

使用网络电话,前提是你有宽带,

使用Skype最划算,充值只需一张可以网上支付的银行卡就可以了,最好是信用卡比较方便,


短信

方法一:

分享从日本往中国手机上发短信的免费方法

最近偶然在网上发现一个免费发短信到中国的方法,经过我两天的亲身测试,证明是真的哦。无需申请无需料金,中日两国完全免费。
发送方法:手机号码@bb.eztok.com,如: 13800000000@bb.eztok.com,作为email来发。中国手机直接回复来自日本的短信即可。更妙的是发送双方都可以看到中文内容哦。比如你想发:“今天你想我了吗?” 可用日文汉字“今天祢想我了麻”来替代。国内手机上显示完全正常哦,不会有乱码,国内发过来的简体字也会用日语汉字来表示。如果有不能识别的字,会用拼音显示。比那种只能发拼音的国际短信好多了,还可以练习日语汉字的发音,最重要的是免费哦!

他们的官方网站是:www.j2c.jp/sms,刚开始看这个网站的时候以为是假的呢,因为上面什么信息都没有。但实在禁不住免费的诱惑就试了试,第一次发出去后一个题名为携带梦想服务中心的地方会发email回来确认,告诉你第一次向国内发短信,第一条不会真的发送过去,并提示你最好把你的名字写上,以免国内手机用户不知情误会。

其实免费也不是真的免费啦,意思是不会收取额外的费用而已。也就是说日本这边一条1日元左右吧,国内回复短信只要基本费用1毛钱(我让国内的朋友查过话费详单确认过了哦)。呵呵,是不是比发国际短信便宜多了?也许有人会问它为什么会免费呢,其实你在收到国内回复的短信的时候会有大段的广告在后面哦,看起来他们主要以附带发送广告盈利的吧。不过能用中文和朋友发短信,有点小广告怕什么呢。可惜的是,发送条数是有限制的呢!网上说是15到20条,可这两天我每天才发4条系统就提示我已经到免费上限了。真是很遗憾啊!

怎么样,心动了么?赶快拿起手机试试吧,成功的话别忘了谢谢我哦!

方法二:

用日本手机给中国手机发送短信。
不是免费的,但是非常便宜。
注册前按照以下格式还可以发送5条免费短信呢,你不妨试着和中国的朋友亲人联系一下。
注册会员办法:发送空白邮件到HELP@XM365.JP获得注册向导。
短信发送格式:
宛先:jc@xm365.jp    (固定不変)
件名:中国手机号碼    (不帯国家代碼,如13912345678)
正文:祢想写的短信内容  (必須用日文漢字或者弁音輸入,不可以使用日文假
名,日文假名在中国手机上顕示的是乱碼。)
如果下载网站的免费中文输入软件,还可以直接输入中文发送。
详细情况可以访问以下网站:http://www.xm365.jp



阅读全文...

惠普是什么(What is the HP)

1934 年,斯坦福(还是这所大学,又是这所大学,神话的起源地)的两个毕业生休伊特(Hewlett)和派克特(Packard)准备开办公司,他们想要办电子公司,于是为公司命名,他们决定取各自姓名的首字母,但是至于这个公司的名字应该叫 Hewlett –Packard 还是该叫 Packard-Hewlett,大家还是为难(实际上名字前后在中国是反映地位的象征,老美估计也有这一套吧),两个人决定抛硬币看运气,最后结果是 Hewlett 赢了,便有了今天的 HP(惠普) 这个名字,而不是普惠,其实普惠也不错,更平民化,更和谐。

惠普最早做的是示波器,借助二战得已大发展(二战让很多公司发家,战争的目的也就是为了利益)。惠普是最早进入硅谷的公司,其实是同硅谷一起长大。惠普同斯坦福可谓同命相连,互相提携,堪称厂校合作的典范。到了九十年代,惠普的业务稳步发展、进入高峰,从示波器、信号发生器等各种电子仪器和昂贵的医疗仪器如核磁共振,惠普都是质量和技术的卓越代表。六十年代,惠普进入小型计算机领域,八十年代进入激光打印机和喷墨打印机行业,它还是喷墨打印机的发明公司。九十年代,惠普进入微机市场。整整五十年,惠普的发展都一帆风顺。如果在九十年代初问一问硅谷最有名的公司是哪一家,十个人中有十个会回答惠普。当时,惠普是很多斯坦福学生首选的工作公司。

然而,今天的惠普没有了往日的风光,虽然他还是很强大,但似乎已是强弩之末。惠普的发家产业电子仪器和高利润产业医疗器械已经拆分成立了安捷伦(医疗行业的大牛,虽然比通用机器GE差很多,但是能做高端的医疗器械产品就很不易了,中国的医疗器械产业太落后了,看看那些大一点医院的高端医疗检测设备吧,清一色的欧美和日本器材,也许四大发明可以引以为豪,但能给我们的还有什么呢),而惠普自己专注于计算机产业。虽然惠普仍以20%的市场份额占据着业界第一的位置,但其他厂商的份额正在接近,宏基份额为16%,戴尔份额为14%,之前Dell一直排第二,只不过最近宏基的收购使他成为第二。

惠普的神话传说的结果也许不总是“他们幸福的生活下去”。

更多XX是什么文章....


阅读全文...

TinyOS和NesC资料

一些关于TinyOS和NesC的资料,因为经常有朋友问,所以就贴在这吧,有些事可以下载的文档,有些是链接,中文相关的就不提供。

NesC语言相关:

The nesC Language_ A Holistic Approach to Networked Embedded Systems(PDF)

nesC Language Reference Manual(PDF)

NCC Manual Page

nesC Source Documentation

nesC的PPT资料

TinyOS相关:

TinyOS编程经典资料:tinyos-programming(PDF)

TinyOS FAQ

tinyos hardware page

TinyOS网上教程

Lesson 1: An Introduction to TinyOS
Lesson 1 introduces the major concepts required to program TinyOS applications. These include a description of components, interfaces, commands, and events. The TinyOS programming model is explained. The role of each of the different file types is detailed.
Lesson 2: Event-driven Sensor Acquisition
The TinyOS platform provides primitives to obtain sensing data from tiny networked devices. This lesson details how to build a simple sensing application that records the light exposure on a photo diode.
Lesson 3: Introducing Tasks for Application Data Processing
The roles of both tasks and events are described. This lesson illustrates the use of tasks to process data from the sense application in lesson 2 and events to receive the sensor data and pass it on to the background running task.
Lesson 4: Composing Components to Send and Receive Messages
Lesson 4 introduces basic abstraction to send integers via the RFM radio stack. A counter application is built that sends the current value of the counter over the RF radio.
Lesson 5: Using the TOSSIM Simulator to Develop TinyOS Components
TOSSIM is the TinyOS simulator. Learn how to build, debug, and run components using TOSSIM.
Lesson 6: Displaying Data on a PC
In order to utilize the data from the tiny networked sensors, we must be able to analyze it on the host computer. This lesson provides an example application that graphs the light readings from the sensors over time.
Lesson 7: Broadcasting Packets
Lesson 7 has three components:
  • It shows how to inject packets from a host environment.
  • This is used to drive a simple message-based command interpreter. A general abstraction is used for sending arbitrary packets over the RFM radio stack.
  • A multihop broadcast application is built that floods the network with a task to be performed.
Lesson 8: Data Logging Application
The final lesson provides a fairly complete application for remote data logging and collection. It also illustrates a simple multihop data propogation method that allows data to be collected by a central location.

Technorati Tags: NesC,TinyOS,下载,链接


阅读全文...

摩托罗拉是什么(What is the Motorola)

摩托罗拉(Motorola)是在一天天的衰败了,如同之前介绍的惠普一样,也是在做困兽之斗了,不进则退。

摩托罗拉公司原名加尔文制造公司(Galvin Manufacturing Corp),创立于 1928 年,由创始人之一的保罗.加尔文的名字命名。它最早是生产汽车里的收音机的,摩托罗拉则是这种收音机的品牌。摩托罗拉一词 Motorola 的前五个字母 Motor 表示汽车,ola 是美国很多商品名称喜欢用的后缀,比如可口可乐 Coca Cola 。

在1967 年,摩托罗拉还生产出美国第一台全晶体管彩色电视机,而之前的彩色电视机还是残留有电子管。而在这之前摩托罗拉只有收音机是民用设备,他的发家史就是美军的战斗史,想想美国大兵拿着步话机通话的场面,可要知道那是摩托罗拉的产品之一。不过摩托罗拉在家电市场并不成功,到 1974 年,摩托罗拉将彩电业务卖给了日本的松下公司(松下的产品给人的感觉是好用,质量不错,不是最贵,也不很时尚,但在日本你可以到处看到松下的电器店,都是很小的店铺,因为它是真正的生活电器公司,老百姓要的就是实在,而什么Sony之类也许往往被披上时尚的外衣,不过Sony在某些技术行业还是领先的,比如它的CCD产品,还是很厉害)。所以今天,很少有人知道摩托罗拉对彩电工业的贡献了。

摩托罗拉在半导体行业其实也是大牛级的,早在八十年代,摩托罗拉就加入了这个行业的金矿挖掘。今天,以 DSP 为核心加上外围通信的手机核心芯片仍然是全世界销量最大,最赚钱的半导体芯片(因为每个手机中必须有一个这样的芯),而摩托罗拉就是这样的一个芯人。想想改革开放后那些大款手里拿的大哥大,估计一半是摩托罗拉吧(当时还有爱立信,现在爱立信主要卖手机的芯了,还有一个和Sony合资的什么品牌手机(这个品牌的手机真的不觉得有什么很出色的),估计多数的手机拆开,你肯定能找到爱立信的电子器件,你当然也可以找到摩托罗拉的电子器件,不要小看,想想我们身边的电脑中有几个没有英特尔Intel的CPU吧),90年代曾经为拥有摩托罗拉的BP机而兴奋不已,而如今呢?

最近摩托罗拉将营业额占其总营业额近一半的手机部门拆分出来,原因是今年这个部门已经亏损了近2亿刀,在这之前这个部门可是绝对的创汇部门啊。而前不久联想也将手机部门拆分了,还有战斗机的波导的惨景等,手机行业的洗牌将进行到底,也许不久数码相机行业的洗牌就要开始了。

惠普至少还能保住计算机销售中的老大地位,而摩托罗拉则黯然失色了,也许一切事物终究是要灭亡的,不久的将来也许就是微软(Microsoft)或是谷歌(Google)......

更多XX是什么文章....


阅读全文...

Crossbow单节点声音采集NesC程序源码

<可以自由转载,但请注明以下内容,谢谢合作!>
<作者:Enoch Wang  引用自:
http://chinawangquan.spaces.live.com>

      在【TinyOS、NesC程序开发经验谈】文中已给出RSSI采集的代码,在【CrossBow公司MIB600基板Mote节点数据的接收(VC++篇)】文中给出了VC++平台下获取数据的方法,在【无线传感器网络MICA平台的RSSI原始数据转换为dBm值的方法】文中介绍了MICA平台的RSSI原始数据转换为dBm值的方法,应一些朋友的要求将简单的单节点声音采集NesC程序源码如下给出。

       (可以使用示例程序修改而成,以下代码即为示例程序修改而成,可以为大家修改程序作为借鉴。)  


/********************************************************************
        Copyright (C), 2006-2007, by Enoch.
        FileName:       SensorBoardApp.h 
        Author:         Enoch
        Version:        1.0.0.0
        Date:           2006 09 01
        Description:    Hardware specific definitions for the MTS300/310.
*********************************************************************/
#define MTS310
#define FEATURE_SOUNDER     1
// Define SOUND_STATE_CHANGE one of two ways:
//      One time sound at test init   ==>  FALSE
//      Continuous beeping throughout ==>  !sound_state
#define SOUND_STATE_CHANGE  FALSE
//#define SOUND_STATE_CHANGE  !sound_state
// crossbow sensor board id
#ifndef MTS310
#define  SENSOR_BOARD_ID 0x83               //MTS300 sensor board id
#else
#define  SENSOR_BOARD_ID 0x84               //MTS300 sensor board id
#endif
/********************************************************************
        Copyright (C), 2006-2007, by Enoch.
        FileName:       TestSouder.h 
        Author:         Enoch
        Version:        1.0.0.0
        Date:           2006 09 01
        Description:    Hardware specific definitions for the MTS300/310.
*********************************************************************/
enum
{
    INITIAL_TIMER_RATE = 10,
    INITIAL_TIMER_REAE_STEP = 8
};
enum
{
    BASE_ADDRESS = 0
};
typedef struct SurgeMsg
{
    uint8_t addr;
    uint16_t seq;
    uint16_t sound;
} __attribute__ ((packed))SurgeMsg;
enum
{
    AM_SURGEMSG = 17
};
 
/********************************************************************
        Copyright (C), 2006-2007, by Enoch.
        FileName:       TestSouder.nc 
        Author:         Enoch
        Version:        1.0.0.0
        Date:           2006 09 01
        Description:    Components for testing the souder.
*********************************************************************/
includes SensorBoardApp;
includes TestSounder;
configuration TestSounder
{
    // this module does not provide any interface
}
implementation
{
    components Main, TestSounderM, TimerC, GenericComm as Comm, LedsC, MicC;
    Main.StdControl -> TestSounderM;
    Main.StdControl -> Comm;
    TestSounderM.TimerSend -> TimerC.Timer[unique("timer")];
    TestSounderM.SendSound -> Comm.SendMsg[AM_SURGEMSG];
    TestSounderM.ReceiveSound -> Comm.ReceiveMsg[AM_SURGEMSG];
    TestSounderM.UARTSend -> Comm.SendMsg[AM_SURGEMSG+2];
    /* Mic Controller */
    TestSounderM.MicControl -> MicC;
    TestSounderM.Mic -> MicC;
    TestSounderM.MicADC ->MicC;
    TestSounderM.Leds -> LedsC;
    TestSounderM.TimerSend -> TimerC.Timer[unique("Timer")];
}
 
/********************************************************************
        Copyright (C), 2006-2007, by Eonch.
        FileName:       TestSouderM.nc 
        Author:         Eonch
        Version:        1.0.0.0
        Date:           2006 09 01
        Description:    Implementation for testing the souder.
*********************************************************************/
includes sensorboard;
includes TestSounder;
module TestSounderM
{
    provides
    {
        interface StdControl;
    }
    uses
    {
        interface SendMsg as SendSound;
         interface ReceiveMsg as ReceiveSound;
        interface SendMsg as UARTSend;
        // Mic
        interface StdControl as MicControl;
        interface Mic;
        interface ADC as MicADC;
        interface Timer as TimerSend;
        interface Leds;
    }
}
implementation
{
    TOS_Msg UARTSendData, MoteSendData;
    uint16_t seq;
    enum { START, BUSY, SOUND_DONE};
    enum { SENSOR_ID = 0, PACKET_ID, NODE_ID=2, RSVD,
       VREF=4, THERM =6, PHOTO = 8, MIC = 10,
       ACCEL_X=12, ACCEL_Y=14, MAG_X=16, MAG_Y=18 };
    
    command result_t StdControl.init()
    {
        seq = 0;
        call Leds.init();
        call MicControl.init();
        call Mic.muxSel(1);  // Set the mux so that raw microhpone output is selected
        call Mic.gainAdjust(64);  // Set the gain of the microphone.
        return SUCCESS;
    }
 
    command result_t StdControl.start()
    {
        call Leds.redOn();
        if (TOS_LOCAL_ADDRESS != BASE_ADDRESS)
         {
             seq = 0;
             call MicControl.start();
             call TimerSend.start(TIMER_REPEAT, INITIAL_TIMER_RATE);
             call Leds.greenOn();
         }
        return SUCCESS;   
    }
   
    command result_t StdControl.stop()
    {
        call TimerSend.stop();
        return SUCCESS;   
    }
    
    event result_t TimerSend.fired()
    {
        if (TOS_LOCAL_ADDRESS != BASE_ADDRESS)
         {
            call MicADC.getData();
         }
        return SUCCESS;   
    }
    /****************************************************************************
     * MicroPhone ADC data ready
     *****************************************************************************/  
    async event result_t MicADC.dataReady(uint16_t data)
    {
        SurgeMsg* msg = (SurgeMsg *)MoteSendData.data;
        // Data
         atomic
         {
             msg->addr = TOS_LOCAL_ADDRESS;
         }
         msg->seq = ++seq;
         msg->sound = data;
         call SendSound.send(BASE_ADDRESS, sizeof(SurgeMsg), &MoteSendData);
         call Leds.yellowToggle();
        return SUCCESS;
    }
    event result_t SendSound.sendDone(TOS_MsgPtr msg, result_t success)
     {
          call Leds.greenToggle();
          return SUCCESS;
     }
    // Motes Reciece Message
     event TOS_MsgPtr ReceiveSound.receive(TOS_MsgPtr msgptr)
     {
         /* Mote 0 for UART */
         if (TOS_LOCAL_ADDRESS == BASE_ADDRESS)
         {
             SurgeMsg* msg = (SurgeMsg *)msgptr->data;
             SurgeMsg* uart_msg = (SurgeMsg *)UARTSendData.data;
             if (((SurgeMsg*)msgptr->data)->addr == BASE_ADDRESS)
             {
                 return msgptr;
             }
            uart_msg->addr  = msg->addr;
            uart_msg->sound = msg->sound;
            uart_msg->seq   = msg->seq;
            /* Upstream the data */    
             call UARTSend.send(TOS_UART_ADDR, sizeof(SurgeMsg), &UARTSendData);
         }
         /* Node ID > 1 process */
         else
         {
         }
         return msgptr;
     }
    // UART Send Message
       event result_t UARTSend.sendDone(TOS_MsgPtr msg, result_t success)
     {
         call Leds.yellowToggle();
          return SUCCESS;
     }
}
 
/********************************************************************
        Copyright (C), 2006-2007, by Eonch.
        FileName:       Makefile  
        Author:         Eonch
        Version:        1.0.0.0
        Date:           2006 09 01
        Description:    Implementation for testing the souder.
*********************************************************************/
# $Id: Makefile, v1.0 2006/09/01 By Enoch Exp $
XBOWROOT=%T/../contrib/xbow/tos
COMPONENT=TestSounder
SENSORBOARD=mts310
# For MICAZ
PFLAGS+= -I../../beta/tos/lib/CC2420Radio -I%T/lib/Broadcast -I%T/lib/Attributes
PFLAGS= -I$(XBOWROOT)/interfaces  -I$(XBOWROOT)/system  -I$(XBOWROOT)/platform/$(PLATFORM) -I$(XBOWROOT)/lib -I$(XBOWROOT)/sensorboards/$(SENSORBOARD)
include ../MakeXbowlocal
include ${TOSROOT}/tools/make/Makerules


Related to Wireless Sensor Networks:
 

阅读全文...