wen_yeah 发表于 2008-7-16 15:36

嵌入式设备进行按键切换程序, 如何实现好?

简单地说, 就是我按一下按键, 就执行程序的这部分代码, 再按一下, 就执行程序的那一部分代码..

这两部分的代码属于平行关系, 其实在程序中可以设置if ..else..类似的语句的

但是因为要用按键进行切换, 所以不知道怎样实现好?

暂时计划另写一个程序, 进行按键检测(这部分肯定是阻塞的), 然后把那程序分别编译成两个程序, 有按键则Kill掉原程序, 启动新程序.

感觉这样好笨, 想一下大家有什么看法??

如表述不清导致理解错误~ 请跟帖...

wen_yeah 发表于 2008-7-16 15:36

忘了说, 嵌入式是Linux系统

jinry 发表于 2008-7-17 00:10

不懂

是不是可以看成这样
A是按键检测程序,B和C的两个不同的程序?
按一下A就执行B,再按一下就执行C?

为什么不可以做成A检测到按键就向B和C发消息,然后由B和C去决定是否运行,
而B和C只需要置个位就可以决定是否让程序继续执行,
比如当前B跑两个线程,,一个消息处理的,收到按键消息,把相应位置位
然后在另外一个线程里面判断这个位来决定是否执行下面的操作,如下,B_MsgProc是消息处理
B_Proc是具体的处理

然后C程序也可以是一样的处理?

B_MsgProc()
{
    flag = !flag;
}
B_Proc()
{
    while(1)
    {
      if (flag == false)
      {
            sleep(1);
            continue;
      }
      else
      {
            XXXX;
      }
    }
}

不知道这样能不能满足LZ的要求?

chjwins 发表于 2008-7-17 03:08

有点深度哦

jinry 发表于 2008-7-17 04:53

LS别TMD瞎灌水...

wen_yeah 发表于 2008-7-19 15:09

其实最好是把全部都做成同一个程序里

wen_yeah 发表于 2008-7-19 15:18

... 还没打完字就发表了

我是说, 同一个程序, 进行按键检测, 然后判断, 对两部分的功能模块进行切换~
描述一下这程序的功能:
主线程进行数据采集, 数据可以通过A模块, 也可以通过B模块发送出去, 两个模块没有主从关系.
现在就是加一个按键检测, 使数据在A模块和B模块的传送中切换, 数据是不断地采集的
所以A, B模块都分别启动一个线程, 按键检测也启动一个线程.

我之前想的笨方法是, 把数据采集+A模块传输这部分做成一个程序, 把数据采集+B模块传输做成一个程序,
这样就简单但看起来不太好~~

现在的想法就是如上描述了.
但是具体还没实现, 之后再发贴说明测试结果.

jinry 发表于 2008-7-19 15:42

还是不太明白,如果是要做在一个进程里面跑,那更简单一点了...

不知道这样可不可以?
A-->数据采集
B-->按键检测
C-->处理1
D-->处理2
四个分别以线程方式运行

1. 这样来处理的话, 在A中不断地采集数据到一个buffer里面,由处理程序来使用这个buffer的数据,就是和处理程序一个生产者-消费者的模型, 要注意数据读写的加锁和解锁

2. 在设置一个全局变量,在B的按键检测中设置这个全局变量的值bSwitch, 其实这个全局变量就是一个开关, 控制是C还是D来处理

3. C判断如果bSwitch是1,那么就运行,否则像前面帖子里面描述的 sleep一小个时间,比如100ms,注意时间不能太长,否则响应会很慢

4. D判断如果bSwitch是0,那么就运行,否则同样地sleep一小个时间再检测这个变量
页: [1]
查看完整版本: 嵌入式设备进行按键切换程序, 如何实现好?