| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 892 人关注过本帖
标题:C语言高手来看看,拜托了~
只看楼主 加入收藏
shana
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-8-1
收藏
 问题点数:0 回复次数:8 
C语言高手来看看,拜托了~
老总脑残了,扔给我100多个代码样的东西,还有一本指导书,让我自己摸索写触发条件,我完全不会(我是做设计的)。。。  
看了很长时间稍微有点懂了,不过现在有2个问题:  
1.有个机器,它20ms取一次端口值,然后要算它这个端口30s的平均值(注意,是实时运算哦),这个算平均值怎么写?  
2.还是这个机器(我真想XX这个猪头机器),它有另一个端口,也是20ms取一次端口值,然后后一次值和前一次值相比如果相差1,就判断出错了,这个也不知道怎么写。。。(也是实时运算)
会写的大虾帮帮忙吧,小女子感激不尽~~
搜索更多相关主题的帖子: C语言 
2008-08-01 10:03
sxn0508
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2008-1-24
收藏
得分:0 
1、不知道我理解的对不对,这个30s应该是滑差时间吧。
假设你计算的第一个是:0分到0分30秒的平均值
第二个就是0分20ms到0分30秒20ms
第三个就是0分40ms到0分30秒40ms
........
这就是准实时平均值的计算方法
2、你到底是不会取值还是不会做减法呢?!!
2008-08-01 10:14
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
for(i=0;i<10;i++)
{
sum+=a[i]  //端口值
if((age==(sum/i+1))||(age==(sum/i-1))||(age==(sum/i)))//验证相差1
printf("出错了哦");
age=sum/i//计算平均数
  }
a[i]中存端口值。i用来一个时间标识分为1ms 2ms 3ms.....。如果是20ms 就可以 for(i=0;;i+=10)这样就是20ms 30ms
呵呵,我也不知道写的对不对,帮助美女是应该的。

[[it] 本帖最后由 missiyou 于 2008-8-1 10:33 编辑 [/it]]
2008-08-01 10:24
shana
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-8-1
收藏
得分:0 
2楼的理解是对的哦,但是我确实不知道怎么写
有关第2个问题,我问了下我们技术部门的人,他说可以先设一个值,然后把上一个的值赋给他,然后跟后面那个值比较做减法,我是这一部分不懂,麻烦各位帮帮忙了~o(∩_∩)o
2008-08-02 20:39
shana
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-8-1
收藏
得分:0 
丫,怎么没人看。。。自己顶
2008-08-03 14:37
云中之侠影
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-2
收藏
得分:0 
我不会,就帮你顶
2008-08-03 18:20
hangeng
Rank: 2
等 级:论坛游民
帖 子:424
专家分:39
注 册:2007-7-23
收藏
得分:0 
先把书发上来吧?

  雨水冲不进窗来,在玻璃上痛哭。但它至少奋斗过。
2008-08-03 19:42
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
写了一下第一个,不知是否理解了楼主的意思。(不确定楼主是不知道算法还是不会取值)
假定楼主是不会算吧,下面代码前提是运算的准确度要求不高,滑动窗是减去了平均值而不是第一个值
(伪代码谨供参考,不要运行)
#define TIMES  1500   //(30×1000)÷20

int main()
{
    int nTime =0;        //当前统计的数值个数
    long lValue = 0;    //当前的统计和
    double dAvg = 0.0   //当前的平均值

    while(TIMES != nTime)    //判断是否收集了30S的数据
    {
        MY_DELAY(20);    //自定义的延时函数,这里只为说明问题
        lValue += port;    //PORT变量模拟采集的数据
        nTime++;
    }

    dAvg = lValue/TIMES;

    while(1)        //实时计算部分
    {
        MY_DELAY(20);
        lValue = lValue + port - dAvg;
        dAvg = lValue/TIMES;
    }
}

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-08-04 00:11
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
[bo][un]shana[/un] 在 2008-8-2 20:39 的发言:[/bo]

2楼的理解是对的哦,但是我确实不知道怎么写
有关第2个问题,我问了下我们技术部门的人,他说可以先设一个值,然后把上一个的值赋给他,然后跟后面那个值比较做减法,我是这一部分不懂,麻烦各位帮帮忙了~o(∩_∩)o

相差1 也就是,前一个端口值为 r.另一个端口值为rr 。
有三种可能,1=r-rr; or 1=rr-r; or rr=r这就是相差1的判断
算了,呵呵,至少我的理解还是可以的吗?
2008-08-04 23:54
快速回复:C语言高手来看看,拜托了~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017411 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved