打印

脑浆不够用,寻求理论、方**上的帮助。

[复制链接]
楼主: qihao
手机看帖
扫描二维码
随时随地手机跟帖
61
thankw| | 2007-11-23 10:47 | 只看该作者 回帖奖励 |倒序浏览

看书

看书,谭浩强的C语言,看指向函数的指针,看结构体,要慢慢看,因为你完全没概念的,不要再想什么程序了,看完书就明白了,书上也有例子的,你得先相信书,再抛弃书。

使用特权

评论回复
62
王会锋| | 2007-11-23 11:46 | 只看该作者

是否可以先给我一份呀!谢谢了,我是一名新手。

使用特权

评论回复
63
linqing171| | 2007-11-23 13:03 | 只看该作者

回jetbo

回jetbo:
函数指针:State[CurrentState].Key1Function
然后
State[CurrentState].Key1Function();
就是调用这个函数了。


记得数字电路中的状态机就是 一个变量,在不同的外来输入信号的激励下可以有不同的变化吧? 像设计I2C的接口的时候,收到地址就进入收数据的状态,任何时候收到复位就进入复位状态。 TCP的协议要维持连接的各个状态。

实现起来似乎没有学过系统理论。
标记一下,明天来看。

使用特权

评论回复
64
ldyeah| | 2007-11-23 13:21 | 只看该作者

期待匠人老头的书~~~

看了下贴出来的部分
觉得不错~~

使用特权

评论回复
65
jetbo| | 2007-11-23 15:44 | 只看该作者

.

再厚着脸皮问一问^_^

函数指针:State[CurrentState].Key1Function

的这 State[CurrentState] 部份是什么?值怎么来?
好像State结构里没有CurrentState 这个啊

呵,偶的C没入门,但想弄明白,汗一个~~~

使用特权

评论回复
66
qihao|  楼主 | 2007-11-23 17:21 | 只看该作者

呵呵 上C语言课,我也听课

写法体现思想,  

 thankw  的示例有写大系统的功力了



    状态迁移和状态间上下文关联、时序(敌人狡猾,陷阱很多!),唉,不过这个不是状态机管的事了,归脑浆管。

    有一个例子用 开关门 来说 状态机 控制的自动化实现,很好,但不小心就是一个陷阱---门正在自动关的时候,有人又要进来,推了一把门。
    状态的多态性---同一个状态,可能是不同的动作激发的,这个时候要处理,还要分析该状态的激发者

-----不同动作激发的同一状态是不是该被裂解成不同的状态? 
-----或者应该定义为一个带参数的状态?(这个咋用C来写呢?问做过大系统的兄弟们)

使用特权

评论回复
67
thankw| | 2007-11-23 18:37 | 只看该作者

CurrentState

CurrentState就是你实际状态序号呀,也就是结构体数组的下标,只要你把状态分的够细,那么都可以用程序描述出来的。CurrentState是无符号char型的变量就有255种状态了,足够用了。

使用特权

评论回复
68
qihao|  楼主 | 2007-11-24 09:48 | 只看该作者

"状态分的够细" 唉,就是,真很麻烦

使用特权

评论回复
69
dld2| | 2007-11-24 09:57 | 只看该作者

关门的时候

状态就是closeing。如果要知道关门的进度,用其他数据变量来描述。
状态分得太细或者失去一般物理或逻辑意义,不好。
另外,如果事件发生,处理时不但要判断当前状态,而且要判断上一个状态,则不是一般意义的状态机。有可能状态定义有问题。

使用特权

评论回复
70
qihao|  楼主 | 2007-11-24 11:31 | 只看该作者

"状态分得太细或者失去一般物理或逻辑意义,不好。"

"状态分得太细或者失去一般物理或逻辑意义,不好。"   正确! 所以一直没有试图这样干,觉得这也太BT了, 但又没有思考出一个优美的逻辑联系出来。

使用特权

评论回复
71
qihao|  楼主 | 2007-11-24 11:38 | 只看该作者

~

所以想到是不是又一种思想,叫做 带参数的状态------有可能又形成一个子状态机。

这个对我的问题,描述也不精确,  好像应该是 有一个第一阶段,是一个状态机,进入第二阶段,有第二阶段的状态机, 进入稳定状态,一个状态机。  当然,期间有外部事件促成阶段间的迁移。

使用特权

评论回复
72
yewuyi| | 2007-11-24 11:43 | 只看该作者

状态机也要进行状态合并的……

很多人开始一听状态机,就直觉认为状态机是平面二维的,但根据俺的体会,状态机是多维的,否则状态机也没什么意义。


呵呵,其实IC设计中用状态机是最多的,例如24C02这样的IIC从器件~~

使用特权

评论回复
73
qihao|  楼主 | 2007-11-24 11:49 | 只看该作者

"状态机是多维的"

状态机是多维的---   唉,再度感慨自己数学智商了 

好像说到点子上了,容我想想

使用特权

评论回复
74
thankw| | 2007-11-24 19:10 | 只看该作者

呵呵,觉得你在这个上面花太多时间了。

呵呵,你第一要把整个过程弄明白,第二要把硬件驱动写好,第三才考虑程序架构的,第四就开始动手了,想太多没用,差不多就开始了。硬件没问题,软件随便改改,总能改好的,关键是硬件要调通,每一个器件都要保证正确工作。

使用特权

评论回复
75
qihao|  楼主 | 2007-11-24 20:33 | 只看该作者

有道理啊! thankw

俺又在非正道上跑太久了,   谢谢thanlw

使用特权

评论回复
76
gdpbeyond| | 2007-11-25 19:17 | 只看该作者

re

快,快,我要买!

使用特权

评论回复
77
yewuyi| | 2007-11-25 21:39 | 只看该作者

俺的认知和thankw正好相反……

程序结构是最关键的,至于具体的什么函数都是次要的,结构搞好了,函数随便写写都能跑通的……


哈哈哈哈……

使用特权

评论回复
78
qihao|  楼主 | 2007-11-25 21:50 | 只看该作者

关键是要进入状态!

先写驱动,可以促进自己进入状态,写驱动的时候,逐步也就是清理思路了,今天把程序结构彻底推翻了来,觉得自己前几天太冲动了,试图用一段通用代码搞定几个过程,又没有这么深的功力,老老实实的分成几个过程来写吧。

使用特权

评论回复
79
xwj| | 2007-11-25 22:16 | 只看该作者

呵呵,会跑是很关键,但你得先学会走!

使用特权

评论回复
80
qihao|  楼主 | 2007-11-26 23:54 | 只看该作者

程序大流程一换,一天跑出效果来了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则