天嵌 ARM开发社区

 找回密码
 注册
查看: 4814|回复: 3

led-player的简单解释--给初看led-player代码的童鞋

[复制链接]
不言DXH 发表于 2012-7-10 15:14:48 | 显示全部楼层 |阅读模式
    led-player中创建了FIFO管道led-control ,通过select函数对led-control管道的读取检测来定时。因为没有程序对led-control进行写入,所以led-control是没数据可以读取的,因此在select函数超时后进入ret < 0 的处理中,也即进入push_leds函数。如果一直没有程序对led-control写入,则每隔period(秒)就会执行一次push_leds函数。
   注意:1. push_leds函数中,static step是一个静态变量,在push_leds函数返回后,step的空间还是没有释放的,其值还保存着。
              2. type = 0-----跑马灯; type = 1----二进制加法; type为其他值则LED全灭。
              3. 当有程序对led-control管道写入时,进入 ret > 0 的处理,从FIFO管道读取数据,每次读取一个字符,存放在buffer[]字符数组中。当读取到 '\n' 字符时,将buffer中第一段字符串(buffer中从第一个字符开始遇到第一个空格为止)转换为整数并赋给type,将第二段字符串转换为 long float类型,并赋给period。  也就是我们可以通过对led-control管道的写入来实现对led-player模式的控制。

    就说这么多吧,对于新手来说初看led-player也许会头大的,多百度几下就好了。这里我上传我稍微修改的led-player程序和一个led-typechoose程序,led-typechoose程序能对led-control管道进行写入,如输入命令:led-typechoose type 0 period 0.66 ,则LED将执行跑马灯,时间间隔为0.66s。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 不言DXH 发表于 2012-7-10 15:15:51 | 显示全部楼层
上面说错了一点:因此在select函数超时后进入ret == 0 的处理中!!!:funk:
deiska 发表于 2012-7-10 16:04:55 | 显示全部楼层
多谢楼主指点~
回去多研究下源码
mugeryang 发表于 2015-12-11 17:28:50 | 显示全部楼层
好像代码里没有Period 的部分,所以不能调节变化的时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-3-29 23:03 , Processed in 1.062500 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表