2013-05-28

低血糖

低血糖的一天,又飘荡到了晚上。在走进教室之前,阳光还能照亮我的脸。等从教室走出来,只看到一个个人,跳进夜的黑海里。

每次昏睡的时候,发生的一切都是怪异的。回想起很多好似没有发生过的事。

年幼的我仰起头,圆圆的脸还不会假装表情。我说我要做一个厨师,盖一个漂亮的房子,还要在院子里种好多花和树。我说我年纪还小,长大了就会好。小时候的话真的很不可思议,突然觉得,那是我吗?还是我长大了,变了。

从上学开始,就再没有好好想过,自己真正觉得开心的事是什么。是考试又得到了不错的分数?是大人们夸我是个好孩子?是自己又重新计算了一个新的理想?只是越长大,就越孤单。曾经以为遇到了心上人就是最大幸福,曾经以为自由自在无牵挂就好,曾经以为在日子的磨砺中好好活才充实。但是越往前走,就越害怕。

是什么让我放弃了做一个厨师的愿望,不再想起漂亮的房子,花和树。是现代的价值观让一个平凡厨师不再幸福;是这个拥挤的城市里找不到一个角落搭我的小屋;是人们疲惫的眼睛让我心里的花树渐渐枯萎。我们喜欢听同样的音乐,吃同样的食物,在同样的时间堵在路上。悲伤时不懂表达,开心时不会感动。我们用来形容自己的词,只剩下好和不好。

是谁送我们来到大学,却忘记在毕业那天来接我们。是谁给我们梦想的种子,却忘记告诉我们它会不会发芽。

感谢深夜的守候,世界,晚安。

2013-05-25

年轻的选择

年轻的时候,
你选择离开她,
不聪明的她,
不优雅的她,
任性地跑得好远,
寻找重要的梦想。

那么坚定地走了好远,
直到一场雨,一点点凉。
和故乡一样的鸟鸣,
忽然会悲伤。

你终于想起她,
那个会把饼干掰一半给你的人,
那个病床旁陪你整个夏天的人,
那个每一天放学都会等你的人,
那个总是担心你会饿肚子的人,
那个很努力做所有你喜欢的人,
那个从没有向你要求什么的人,
那个只是默默地送你走远的人。

你会翻开所有旧箱子,
找她为你求的护身符。
拨出重新找到的号码,
有那么多抱歉与感激,
却沉默很久没有说话。

她为何那么讨厌,
明明不喜欢长发,
却一直还留着它。
是怪你没来得及,
为她买一个辫花,
说一些甜蜜的话。

时光总是在提醒,
过去的为何不会过去。
世上好多你爱的人,
而那样爱你的,
或只有曾经那个。

给亲爱的倭瓜

决定

做决定,不是容易的事。恋爱,一定要两个人决定;而分手,只需要一个人决定。在决定之前,再感受怀念的温暖,不要忘了深爱的人。

《亲爱的路人》刘若英


一个一个笑窝 一段一段泪光
每一次都以为 是永远的寄托
承受不起的伤 来不及痊愈就解脱
我们 已经各得其所

所谓承诺 都要分了手才承认是枷锁
所谓辜负 都是浪漫地蹉跎
所以别问 还差甚么我们没结果
都结了果 却由他来收获

那时候 年轻得不甘寂寞
错把磨练当成折磨
对的人终于会来到
因为 犯的错够多
总要为 想爱的人不想活
才跟该爱的人生活
来过 走过 是亲爱的路人 成全我

尘埃落定之后 回忆别来挑拨
何必刻意难过 去证明快乐过
时间改变你我 来不及回看就看破
洒脱 是必要的执着

所谓承诺 都要分了手才承认是枷锁
所谓辜负 都是浪漫地蹉跎
所以别问 还差甚么我们没结果
都结了果 却由他来收获

那时候 年轻得不甘寂寞
错把磨练当成折磨
对的人终于会来到
因为 犯的错够多
总要为 想爱的人不想活
才跟该爱的人生活
来过 走过 是亲爱的路人 成全我

那时候 年轻得不甘寂寞
错把磨练当成折磨
对的人终于会来到
因为 犯的错够多
总要为 想爱的人不想活
才跟该爱的人生活
来过 走过 是亲爱的路人 成全我

那时候 只懂得爱谁最多
忘了谁最懂得爱我
对的人会成为一对
因为 再不怕犯错
没有错 让最爱的人错过
才知道最后爱甚么
来吧 来吧 让亲爱的路人 珍惜我
没有你们爱过 没有我

2013-05-22

凌霄花的梦

我的窗外有株凌霄花,一直蔓到很远处。盛夏的时候,它开得很漂亮。

有一天我趴在窗头,听到凌霄花忧伤地对我说,“你知道吗,每到晚上,我就会做梦。”我是第一次知道,花也会做梦。

“你梦到了什么?”

“我梦到我醒过来就是早晨,世界开始有些迷迷糊糊的。过一段时间就变清晰了,我感觉自己是一只云雀。”

“一只鸟?”

“对,一只鸟。每次都是。我会唱歌,到树林里抓虫子。回家的时候,能看到太阳落山。在那之后,我就睡着了。”

“对我来说,做梦是很常有的。或许总是有一样的梦是不寻常的,但时间久了就习惯了。”

“但是醒来的时候,我又变成了凌霄花。早晨的时候,感觉昏昏沉沉的。傍晚的时候,又昏昏沉沉地睡去。在梦里,在醒着的时候,天都是亮的。天亮的时候都是醒着的。到底哪一个是在做梦,什么时候是醒着呢?”凌霄花越来越失落了,朱红色的花都垂下去了。

这个问题难住我了,我想了好久。凌霄花很有耐心,它已经习惯了静静地一下午。我在做梦的时候,常常也分不出,是不是醒着。会苦恼的话,应该是在梦里想着醒着的时候发生的事,而醒着的时候,又想着梦里的事。

“或许你其实不必想这个问题吧。既然分不清的话,就都一样来过好了。既是凌霄花,也是云雀。只要知道自己现在是什么就好啦。你现在是凌霄花,不需要去想云雀的生活啊。你不是很喜欢做一株凌霄花吗?”

凌霄花很开心,又扬起了头。我这样看着它,知道黄昏的金黄洒满我的窗台。凌霄花睡了。等它醒来的时候,会是一只云雀。我也要睡着了,或许我只是快醒了。

2013-05-20

故事罐子

有一只小罐子,装着十个好听的故事。

常常会有人,拿起小罐子,放到耳边。这时候,小罐子就开始讲故事了。人听故事着迷了,就把它带在身边,当作宝贝一样。可是啊,小罐子就只有这十个故事。故事很快就讲完了,没有新故事,小罐子就被丢弃了。就这样,一次又一次。终于,小罐子不再讲故事了。它变成了一只普通的罐子。

一天,小姑娘捡到了小罐子,她可喜欢了。“罐子罐子,我们可以做好朋友吗?”小罐子很开心,“好啊。你喜欢听故事吗?”“喜欢,”小姑娘说,“你会讲故事么?”“是的,”小罐子开始讲故事了,“从前有一只追着夕阳的鸟……”小姑娘很高兴地听着,时间一转眼就到黄昏。在讲完第九个故事的时候,小罐子忽然有些难过。“我只有十个故事,所以剩下的是最后一个了。”“那讲给我听吧!”小罐子讲完了最后一个故事,小姑娘依旧很开心地听着。最后一个故事讲完了。

“你的故事真好听呀,”小姑娘拍拍手说,“我也讲一个故事给你听吧!”小罐子感到有些意外。“山的那一边,石头像金子一样会发光……”头一次有人,讲故事给小罐子听。“我呀,就知道这一个故事,”小姑娘有些不好意思,“没有你讲得好,不要笑话我呀。”她把小罐子放回路旁的石凳上,对着小罐子悄悄说了一些话,然后跑跑跳跳地走了。

小罐子又开始和人讲故事了。每当它讲完故事的时候,都会说:“你愿意讲一个故事给我听吗?”很多年以后呢,小罐子已经有数不完的故事。它早记不得哪个故事是谁讲给它的,而它又把故事讲给了谁。只是一直都记得,曾经有人告诉它,“你讲了这么多好听的故事给别人,也一定会有人愿意讲故事给你听,装满了故事就不会不开心了。”

2013-05-13

玫瑰

晓林在路上跑跑跳跳,唱着不知名字的歌。忽然间,有谁叫了他一声。“喂,”晓林看到了声音的来源,那是一朵花,“你知道吗,我是玫瑰,世界上唯一一朵。”晓林看到绿丛中唯一一点娇艳的红色,觉得好美。“既然是世上唯一的,应该很珍贵。”

可是第二天,晓林在一片树林中,遇到好多同样的花。“咦,它不是说自己是唯一的么?”于是晓林回去找那一株特殊的,会说谎的玫瑰。可是,它却不在了。

从那以后,晓林常常会想起它。他现在不觉得玫瑰花说了谎,它独自生长在树丛里,在那个特别的时候与自己相遇。它是永远留在记忆里,独一无二的。

2013-05-03

使用键值对进行串口通讯

在Arduino与电脑/手机之间通过串口通讯,比较麻烦的地方有以下几点:

  • 确定一条指令的开始与结尾
  • 防止字节数据丢失引起的错误
  • 编码与解码

简单的办法通常是每个字节作为一个指令,也就是一个BYTE数值或字符。这样做的缺点是表示的数据范围小,而且不够灵活。如果要发送几种不同类型的指令,这种方法也不行。

而表示一个复合命令,则需要断开每一个字段。使用键值对是一个很便利的方式。能够表示大部分操作指令:

name,value;

我们以逗号和分号作为分隔符和结束标记,只要将指令表示成键值对发送就可以了。在接收的一端,按照分隔符将字串断开,获取名称和数值,然后进行解释。

示例代码如下:

char input;
String value;
String name;

const int NAME = 1;
const int VALUE = 2;

int readProcess = NAME;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
  if(Serial.available()){
    input = Serial.read();
    process();
  }
}

void process() {
  if(input==','){
    readProcess = VALUE;
    Serial.println(name);
  }
  else if(input==';'){
    Serial.println(value);
    run(name, value);
    name = "";
    value = "";
    readProcess = NAME;
  }
  else if(readProcess==NAME){
    name+=input;
  }
  else if(readProcess==VALUE){
    value+=input;
  }
}

void run(String name, String value){
  if(name=="speed"){
    int num = value.toInt();
    if(num==-1023){
      digitalWrite(13, HIGH);
    }
    else{
      digitalWrite(13, LOW);
    }
  }
}

在run()方法里,是对键值对的解释程序。

有分隔符能够很有效地避免传递时丢失字节的问题,保证前面发生的错误不会影响后面数据的传递。一次传输错误最多只影响一个指令的执行,不会对后续的数据传递造成麻烦。

欢聚之后

一场欢聚之后,
每个人,又回到自己的落寞里。
情绪在夜色里很快蒸发,
马上就回想不起,
欣喜,与希冀。
在人群中悄然离去,
找一个没有视线的地方,
哭泣,或叹息。

二零一三年五月二日晚