搜索
bottom↓
楼主: y574924080

[分享][交流]发一个通用按键模块,简单易用 [2014-3-24 Update]

  [复制链接]

出0入0汤圆

发表于 2014-10-28 22:56:48 | 显示全部楼层
多谢楼主分享,先MARK下

出0入0汤圆

发表于 2014-10-30 22:22:22 | 显示全部楼层
y574924080 发表于 2014-8-29 23:43
最新的 oopc.h可以到 http://www.amobbs.com/thread-5590165-1-1.html

下载工程模板就可以找到了 ...

lz你好,我把你的这个按键驱动移植到stm32f103上,使用最新的ooc.h,编译报错说有一个变量没有定义,但是我包含了那个定义的文件

还是提示没有定义,这是怎么了?使用旧的oopc.h文件编译正常。




本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2014-10-30 22:49:12 | 显示全部楼层
xtaens 发表于 2014-10-30 22:22
lz你好,我把你的这个按键驱动移植到stm32f103上,使用最新的ooc.h,编译报错说有一个变量没有定义,但是 ...

这个变量应该是自定义布尔类型。。要自己定义。 状态机执行完毕,返回true(fsm_xxx_finish),状态机进行中,返回false(fsm_xxx_going),好像是这个意思。 我把它们改成bool也能用

出0入0汤圆

发表于 2014-10-30 22:59:12 | 显示全部楼层
看了很不错,mark                  

出0入0汤圆

 楼主| 发表于 2014-10-30 23:38:22 | 显示全部楼层
xtaens 发表于 2014-10-30 22:22
lz你好,我把你的这个按键驱动移植到stm32f103上,使用最新的ooc.h,编译报错说有一个变量没有定义,但是 ...

fsm_rt_t 在工程模版下 .\gsf\utilities\arm

我们的习惯是一个通用的宏定义,类型等,都是定义在 .\gsf\utilities\ 下,这样可以避免重复劳动,

事实上 .\gsf\utilities\下还有不少很有意思的东西,

出0入0汤圆

 楼主| 发表于 2014-10-30 23:40:02 | 显示全部楼层
slzm40 发表于 2014-10-30 22:49
这个变量应该是自定义布尔类型。。要自己定义。 状态机执行完毕,返回true(fsm_xxx_finish),状态机进行中 ...

这个是我们状态机通用的返回值类型,

一开始也使用过布尔类型,但是再后来需要表达更多返回状态的时候,就改成了 fsm_rt_t

都习惯了这个,忘记说明了,

出0入0汤圆

发表于 2014-10-31 08:34:43 | 显示全部楼层
y574924080 发表于 2014-10-30 23:38
fsm_rt_t 在工程模版下 .\gsf\utilities\arm

我们的习惯是一个通用的宏定义,类型等,都是定义在 .\gsf\ ...

我使用的是 旧工程test_2F 下的app_cfg.h文件,此文件中有类

  1. typedef enum {
  2.     fsm_rt_err          = -1,    //!< fsm error, error code can be get from other interface
  3.     fsm_rt_cpl          = 0,     //!< fsm complete
  4.     fsm_rt_on_going     = 1,     //!< fsm on-going
  5.     fsm_rt_wait_for_obj = 2,     //!< fsm wait for object
  6.     fsm_rt_asyn         = 3,     //!< fsm asynchronose complete, you can check it later.
  7. } fsm_rt_t;
  8. //! @}
复制代码



没有使用新工程下的那个文件哦。

出0入0汤圆

发表于 2014-10-31 08:36:46 | 显示全部楼层
不错,留着

出0入0汤圆

发表于 2014-10-31 08:38:14 | 显示全部楼层
y574924080 发表于 2014-10-30 23:38
fsm_rt_t 在工程模版下 .\gsf\utilities\arm

我们的习惯是一个通用的宏定义,类型等,都是定义在 .\gsf\ ...

目前的处理方法是直接把下面的两个直接屏蔽,就可以编译通过了

  1. //! \name general event handler
  2. //! @{
  3. EXTERN_CLASS( DELEGATE_HANDLE,
  4.         typedef fsm_rt_t DELEGATE_HANDLE_FUNC(void *pArg, void *pParam);
  5.     )
  6.     DELEGATE_HANDLE_FUNC   *fnHandler;      //!< event handler
  7.     void                   *pArg;           //!< Argument
  8.     DELEGATE_HANDLE        *ptNext;         //!< next
  9. END_EXTERN_CLASS(DELEGATE_HANDLE)
  10. //! @}

  11. //! \name event
  12. //! @{
  13. EXTERN_CLASS(DELEGATE)
  14.     DELEGATE_HANDLE     *ptEvent;
  15.     DELEGATE_HANDLE     *ptBlockedList;
  16.     DELEGATE_HANDLE     **pptHandler;
  17. END_EXTERN_CLASS(DELEGATE)
  18. //! @}
复制代码

出0入0汤圆

发表于 2014-10-31 09:35:35 | 显示全部楼层
楼主很强大,

出0入0汤圆

发表于 2014-11-4 16:33:22 | 显示全部楼层

学习,mark,谢谢!

出0入0汤圆

发表于 2014-11-5 11:23:15 | 显示全部楼层
再次学习了。

出0入0汤圆

发表于 2014-11-5 17:26:47 | 显示全部楼层
好帖 留名~~~~~~~~~

出0入0汤圆

发表于 2014-12-3 21:05:24 | 显示全部楼层
收下了,MARK

出0入0汤圆

发表于 2014-12-3 23:16:14 | 显示全部楼层
状态机很强大

出0入0汤圆

发表于 2014-12-4 00:05:31 | 显示全部楼层
谢谢分享,不错的设计

出0入0汤圆

发表于 2014-12-4 10:26:21 | 显示全部楼层
是否带缓存处理按键?

出0入296汤圆

发表于 2014-12-4 10:40:41 | 显示全部楼层
sunismyself-la 发表于 2014-10-22 15:11
版主,这是哪个资料上的图,求介绍

我自己用word画的

出0入296汤圆

发表于 2014-12-4 10:41:04 | 显示全部楼层
shuimubai 发表于 2014-12-4 10:26
是否带缓存处理按键?

必须带啊~

出0入0汤圆

发表于 2014-12-15 09:35:38 | 显示全部楼层
留个脚印,学习一下。

出0入0汤圆

发表于 2014-12-26 20:48:33 | 显示全部楼层
通用的按键,正想弄这个程序测试。

出0入0汤圆

发表于 2014-12-26 23:24:25 | 显示全部楼层
mark                    

出0入0汤圆

发表于 2014-12-26 23:24:43 | 显示全部楼层
mark           think      

出0入0汤圆

发表于 2014-12-26 23:46:15 | 显示全部楼层
非常感谢分享,学习了

出0入0汤圆

发表于 2014-12-27 10:56:26 | 显示全部楼层
赞一个,学习了

出0入0汤圆

发表于 2014-12-28 12:13:26 | 显示全部楼层
留着,慢慢消化,用来学习下编程思想。

出0入0汤圆

发表于 2014-12-29 18:53:56 | 显示全部楼层
非常好用~~~~

出0入0汤圆

发表于 2014-12-29 20:17:41 | 显示全部楼层
mark,留待后观

出0入0汤圆

发表于 2014-12-29 21:17:30 | 显示全部楼层
mark一下,谢谢分享

出0入0汤圆

发表于 2014-12-30 09:24:50 | 显示全部楼层
没有看过傻孩子,自己研究出来的,用了好几年了,原理大同小异。

出0入0汤圆

发表于 2014-12-30 09:43:38 | 显示全部楼层
果断收藏了,状态机的思想真得很重要,以前按键检测用的是延时,不能能用,自己用了状态机之后,程序的稳定性自己也有保障了。

出0入296汤圆

发表于 2014-12-30 09:51:27 来自手机 | 显示全部楼层
zhongsandaoren 发表于 2014-12-30 09:24
没有看过傻孩子,自己研究出来的,用了好几年了,原理大同小异。

不同的人在不交流的情况下经过足够的时间得出了相同的结论,这是计算机技术客观性的体现。赞兄弟!

出0入0汤圆

发表于 2014-12-30 10:57:18 | 显示全部楼层
收藏,谢谢。。。

出0入0汤圆

发表于 2014-12-30 11:08:03 | 显示全部楼层
水平不够 只看懂了一部分,不过很少用到这么多按键的时候  先收藏了吧

出0入0汤圆

发表于 2014-12-30 11:34:52 | 显示全部楼层
留下来  以后慢慢看

出0入0汤圆

发表于 2014-12-30 11:49:47 | 显示全部楼层
mark, 有空仔细看看

出0入0汤圆

发表于 2015-1-3 21:13:15 | 显示全部楼层
学习了
谢谢楼主

出0入0汤圆

发表于 2015-1-3 22:46:40 | 显示全部楼层
强大,很好,学习....

出0入0汤圆

发表于 2015-1-3 23:30:25 | 显示全部楼层
“支持最多255个按键,每个按键都支持包括按下检测、
松手检测、长按、连按的效果”
这个要看看,有机会移植一下,用于以后的项目中

出0入0汤圆

发表于 2015-1-8 16:41:34 | 显示全部楼层
经典,学习

出0入0汤圆

发表于 2015-1-8 18:46:47 | 显示全部楼层
收藏了!!

出0入76汤圆

发表于 2015-1-26 23:31:19 | 显示全部楼层
更新日志
    - 2014-3-24
        a. 修改key_queue接口:增加中断保护修改注释风格
        b. 更新Demo工程,并将key_task放入到system tick 异常处理程序中


------------------------------------------------------------------------------------------------------------------------
您现在楼主位的test2F工程是最近一次更新的么, 没有看到有把 “b. 更新Demo工程,并将key_task放入到system tick 异常处理程序中”(我应该没看漏吧... )。

另外,昨天看了一下, 不解systick.c与systick.h中类型定义部分的用意, 两个文件中均有重复定义, 而systick.c并没有依赖systick.h,是不是想把类型通过接口输出(而隐藏具体细节信息, 就是之前傻孩子大师讲的做掩码结构体),但看test2F代码并不完全是。如下对比图:

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2015-1-27 00:07:21 | 显示全部楼层
foxpro2005 发表于 2015-1-26 23:31
更新日志
    - 2014-3-24
        a. 修改key_queue接口:增加中断保护修改注释风格

最后一次更新工程模版, 我上传第二天就发现上传错了,

但是没人指出, 就懒得改了, 现在也找不到工程模版了

这个贴, 其实是傻孩子老师培训的题目....


然后关于.c .h的使用, 我们的习惯就是把*.h作为向外提供信息的文件, 理应包含恰好的信息,

systick_cfg_t作为systick的配置结构体, 外部需要这个信息, 所以可以在.h可以看到


你看到的工程模版是我培训中间的成果, 很多习惯还没改变

建议去看傻孩子老师的蜘蛛机器人贴 或者 播放器帖子的工程模版

出0入76汤圆

发表于 2015-1-27 00:19:30 | 显示全部楼层
本帖最后由 foxpro2005 于 2015-1-27 00:21 编辑
y574924080 发表于 2015-1-27 00:07
最后一次更新工程模版, 我上传第二天就发现上传错了,

但是没人指出, 就懒得改了, 现在也找不到工程模版 ...


之前一直处于忙碌中,没及时关注傻孩子老师团队的帖子, 这两天稍微有点空, 在跟你们的步伐在看, 再慢去细品、学习...,感谢你们的开源分享..
看你们在用svn在管理项目, git也是一个非常不错的版本管理工具哦。

出0入0汤圆

 楼主| 发表于 2015-1-27 10:41:05 | 显示全部楼层
foxpro2005 发表于 2015-1-27 00:19
之前一直处于忙碌中,没及时关注傻孩子老师团队的帖子, 这两天稍微有点空, 在跟你们的步伐在看, 再慢 ...

用svn, 是因为公司的服务器搭建的就是svn服务器

git的话, 现在正在学习~~~

出0入0汤圆

发表于 2015-2-6 12:38:10 | 显示全部楼层
多谢楼主分享

出0入0汤圆

发表于 2015-2-6 15:31:55 | 显示全部楼层
看了,很不错,这个很好

出0入0汤圆

发表于 2015-2-24 16:58:53 | 显示全部楼层
好,记下了

出0入0汤圆

发表于 2015-2-25 11:51:10 | 显示全部楼层
mark  通用按键模块

出0入0汤圆

发表于 2015-2-26 17:14:04 | 显示全部楼层
看似简单的按键代码,要做好还真得需要高水平。

出0入0汤圆

发表于 2015-2-26 20:34:26 | 显示全部楼层
。还米有感受到这个

出0入0汤圆

发表于 2015-2-27 10:00:53 | 显示全部楼层
很强大,收下了,谢谢楼主

出0入0汤圆

发表于 2015-3-8 22:52:28 | 显示全部楼层
不得不说又学习了

出0入0汤圆

发表于 2015-4-3 15:38:17 | 显示全部楼层
学习了,  支持                  一下。

出0入0汤圆

发表于 2015-4-3 21:52:11 | 显示全部楼层
mark  按键

出0入0汤圆

发表于 2015-4-7 16:59:56 | 显示全部楼层
谢谢!
对我帮助很大

出0入0汤圆

发表于 2015-4-14 17:05:23 | 显示全部楼层
好贴要顶。绝对支持。

出0入0汤圆

发表于 2015-4-14 23:43:30 | 显示全部楼层
学习了,按键程序不同的系统要使用不同框架的程序

出0入0汤圆

发表于 2015-4-16 15:24:43 | 显示全部楼层
学习了,谢谢LZ分享!

出0入0汤圆

发表于 2015-4-25 01:17:03 | 显示全部楼层
请问为什么会有两个相同 的app_cfg.h文件呢?谢谢。

出0入0汤圆

发表于 2015-4-25 09:59:07 | 显示全部楼层
好东西,收藏

出0入0汤圆

发表于 2015-5-9 12:07:04 | 显示全部楼层
顶一顶贴,层次状态机

出0入0汤圆

发表于 2015-7-8 10:33:23 | 显示全部楼层
谢谢楼主分享,收藏备用了!

出0入4汤圆

发表于 2015-7-13 21:42:10 | 显示全部楼层
这个代码必须在IAR下吗?在keil里面怎么不行!!!

出0入0汤圆

发表于 2015-7-13 22:16:42 | 显示全部楼层
xuexixuexi

出0入4汤圆

发表于 2015-7-13 23:26:03 | 显示全部楼层
楼主给的工程是基于IAR的,下面的这两个获取当前中断状态和恢复中断状态的宏定义在KEIL下如何移植呢???感谢了

#if __IS_COMPILER_IAR__
#define GET_GLOBAL_INTERRUPT_STATE()        __get_interrupt_state()
#define SET_GLOBAL_INTERRUPT_STATE(__STATE) __set_interrupt_state(__STATE)
typedef __istate_t   istate_t;
#else
#error No support for interrupt state access
#endif

//! \brief The safe ATOM code section macro
#define SAFE_ATOM_CODE(...)     {\
        istate_t tState = GET_GLOBAL_INTERRUPT_STATE();\
        DISABLE_GLOBAL_INTERRUPT();\
        __VA_ARGS__;\
        SET_GLOBAL_INTERRUPT_STATE(tState);\
    }

出0入0汤圆

发表于 2015-7-14 00:38:27 | 显示全部楼层
方便移植的按键程序

出0入0汤圆

发表于 2015-7-14 00:39:38 | 显示全部楼层
方便移植的按键程序

出0入0汤圆

发表于 2015-7-14 08:38:13 | 显示全部楼层
很强大的按键处理           

出0入0汤圆

发表于 2015-7-14 11:42:32 | 显示全部楼层
按键处理,这个帖子值得收藏。

出0入296汤圆

发表于 2015-7-14 18:47:20 | 显示全部楼层
yangpeng012 发表于 2015-7-13 23:26
楼主给的工程是基于IAR的,下面的这两个获取当前中断状态和恢复中断状态的宏定义在KEIL下如何移植呢??? ...

鸣谢:祥子


arm_compiler.h


  1.   /*!< Macro to enable all interrupts. */
  2. #if __IS_COMPILER_IAR__
  3. #   define ENABLE_GLOBAL_INTERRUPT()       __enable_interrupt()
  4. #elif __IS_COMPILER_MDK__
  5. #   define ENABLE_GLOBAL_INTERRUPT()      __enable_irq()
  6. #else
  7. #   define ENABLE_GLOBAL_INTERRUPT()       __asm__ __volatile__ (" CPSIE i")
  8. #endif

  9.   /*!< Macro to disable all interrupts. */
  10. #if __IS_COMPILER_IAR__
  11. #   define DISABLE_GLOBAL_INTERRUPT()      __disable_interrupt()
  12. #elif __IS_COMPILER_MDK__
  13. #   define DISABLE_GLOBAL_INTERRUPT()      __disable_irq()
  14. #else
  15. #   define DISABLE_GLOBAL_INTERRUPT()      __asm__ __volatile__ (" CPSID i");
  16. #endif

  17. #if __IS_COMPILER_IAR__
  18. #   define GET_GLOBAL_INTERRUPT_STATE()        __get_interrupt_state()
  19. #   define SET_GLOBAL_INTERRUPT_STATE(__STATE) __set_interrupt_state(__STATE)
  20. typedef __istate_t   istate_t;
  21. #elif __IS_COMPILER_MDK__
  22. #   define GET_GLOBAL_INTERRUPT_STATE()        __disable_irq()
  23. #   define SET_GLOBAL_INTERRUPT_STATE(__STATE) if (__STATE) { __enable_irq(); }
  24. typedef int   istate_t;
  25. #else
  26. #error No support for interrupt state access
  27. #endif
复制代码


signal.h


  1. #if __IS_COMPILER_MDK__
  2. //! \brief The safe ATOM code section macro
  3. # define SAFE_ATOM_CODE(...)     {\
  4.         istate_t tState = GET_GLOBAL_INTERRUPT_STATE();\
  5.         __VA_ARGS__;\
  6.         SET_GLOBAL_INTERRUPT_STATE(tState);\
  7.     }

  8. //! \brief Exit from the safe atom operations
  9. # define EXIT_SAFE_ATOM_CODE()          SET_GLOBAL_INTERRUPT_STATE(tState);
  10. #else
  11. //! \brief The safe ATOM code section macro
  12. # define SAFE_ATOM_CODE(...)     {\
  13.         istate_t tState = GET_GLOBAL_INTERRUPT_STATE();\
  14.         DISABLE_GLOBAL_INTERRUPT();\
  15.         __VA_ARGS__;\
  16.         SET_GLOBAL_INTERRUPT_STATE(tState);\
  17.     }

  18. //! \brief Exit from the safe atom operations
  19. # define EXIT_SAFE_ATOM_CODE()          SET_GLOBAL_INTERRUPT_STATE(tState);
  20. #endif
复制代码

出0入0汤圆

发表于 2015-7-15 17:03:43 | 显示全部楼层

出0入0汤圆

发表于 2015-7-20 17:31:39 | 显示全部楼层
Gorgon_Meducer 发表于 2015-7-14 18:47
鸣谢:祥子


arm_compiler.h

GET_GLOBAL_INTERRUPT_STATE()  这个怎么把全局中断都关掉了。也只能在 SAFE_ATOM_CODE 里面用了,貌似不能单独用

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2015-7-22 14:08:07 | 显示全部楼层
这个要MARK

出0入0汤圆

发表于 2015-7-22 18:07:12 | 显示全部楼层
在这里总能受益匪浅啊

出0入0汤圆

发表于 2015-7-24 16:39:50 | 显示全部楼层
好贴,正在学习源码中,准备用我的stm8试试。

出0入0汤圆

发表于 2015-7-24 18:32:59 | 显示全部楼层
没有系统看傻孩子的宏定义,所以有点难看懂,还是要坚持看懂,

出0入0汤圆

发表于 2015-7-24 19:04:30 | 显示全部楼层
两个按键同时按下,或多个按键同时按下呢? 能否识别?

出0入0汤圆

发表于 2015-7-30 23:00:30 | 显示全部楼层
好东西~~

出0入296汤圆

发表于 2015-8-4 10:23:34 | 显示全部楼层
ponder2077 发表于 2015-7-24 19:04
两个按键同时按下,或多个按键同时按下呢? 能否识别?

这个问题前面已经有讨论,结论是取决于你的接口函数如何编码多按键的情况了。这个库只是对你的按键编码提供各类按键事件的识别服务。

出0入0汤圆

发表于 2015-8-4 16:14:05 | 显示全部楼层
按下按键立即打开手筒, 但是,在打开手电筒状态下, 松开按键才能关手电筒?

出0入0汤圆

发表于 2015-8-5 21:33:39 | 显示全部楼层
我现在比较头疼的是组合按键处理!有兴趣的朋友可以讨论下

出0入0汤圆

发表于 2015-8-5 21:52:30 | 显示全部楼层
学习了

出0入296汤圆

发表于 2015-8-6 15:47:35 | 显示全部楼层
ponder2077 发表于 2015-8-4 16:14
按下按键立即打开手筒, 但是,在打开手电筒状态下, 松开按键才能关手电筒?

怎么用好  KEY_DOWN, KEY_UP, KEY_PRESSED, KEY_LONG_PRESSED这类事件能解决你的问题。

出0入0汤圆

发表于 2015-8-6 16:36:11 | 显示全部楼层
Gorgon_Meducer 发表于 2015-8-6 15:47
怎么用好  KEY_DOWN, KEY_UP, KEY_PRESSED, KEY_LONG_PRESSED这类事件能解决你的问题。

谢谢傻孩子, 虽然还是没有看懂,

出0入0汤圆

发表于 2015-8-6 21:09:18 来自手机 | 显示全部楼层
ponder2077 发表于 2015-8-6 16:36
谢谢傻孩子, 虽然还是没有看懂,

一次性看懂是非常困难的,最好能够先用起来

出0入0汤圆

发表于 2015-8-6 21:27:42 | 显示全部楼层
很好的一个程序!

出0入0汤圆

发表于 2015-8-7 07:49:29 | 显示全部楼层
按键处理,必须用到的模块,下载学习

出0入0汤圆

发表于 2015-8-9 23:12:11 | 显示全部楼层
通用按键模块

出0入0汤圆

发表于 2015-10-28 09:17:22 | 显示全部楼层
MARK 好东西

出0入0汤圆

发表于 2015-10-28 09:54:18 | 显示全部楼层
研究研究

出0入0汤圆

发表于 2015-11-23 10:58:18 | 显示全部楼层
大神们,对我来说这个看了很久没有看懂,谁有keil版本的啊,楼主的好多宏看不懂

出0入0汤圆

发表于 2015-11-24 15:34:34 | 显示全部楼层
版主你好,有没有测试过,这个程序运行一遍需要多少时间,在ARM-M0上

出0入0汤圆

发表于 2015-11-24 18:28:37 | 显示全部楼层
学习     

出0入0汤圆

发表于 2015-11-24 22:05:11 | 显示全部楼层
果断收藏

出0入0汤圆

发表于 2015-11-25 00:10:38 | 显示全部楼层
先标记下  回头再看

出0入0汤圆

发表于 2015-11-25 09:38:35 | 显示全部楼层
tanek 发表于 2015-7-20 17:31
GET_GLOBAL_INTERRUPT_STATE()  这个怎么把全局中断都关掉了。也只能在 SAFE_ATOM_CODE 里面用了,貌似不 ...

请问你在keil下获取中段状态的宏问题解决了吗?我也遇到了同样的问题。key_task放在中断里面就不会运行了,放在主函数中就可以正常的用。

出0入0汤圆

发表于 2015-12-23 20:59:31 | 显示全部楼层
成功移植,可以用,但是还有问题,继续研究~

出0入0汤圆

发表于 2015-12-25 22:45:21 | 显示全部楼层
先MARK一下,下次再来看

出0入0汤圆

发表于 2015-12-26 15:17:20 | 显示全部楼层
好贴顶起来,收藏了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 06:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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