小编Cha*_*rry的帖子

如何在不增加太多开销和复杂性的情况下使嵌入式C代码免受需求变化的影响?

在许多嵌入式应用程序中,需要在使代码非常高效或将代码与特定系统配置隔离以免受不断变化的需求之间进行权衡.

您通常采用哪种C构造来实现两全其美(灵活性和可重新配置而不会降低效率)?

如果你有时间,请继续阅读,看看我在说什么.

当我为安全气囊控制器开发嵌入式软件时,我们遇到的问题是,每当客户改变他们对特定要求的想法时,我们就必须更改代码的某些部分.例如,在开发期间每隔几周就会发生触发安全气囊展开的条件和事件的组合.我们讨厌经常改变这段代码.

那时,我参加了嵌入式系统大会,并听取了Stephen Mellor的精彩演讲,题为"应对不断变化的需求".你可以在这里阅读论文(它们会让你注册,但它是免费的).

这样做的主要思想是在代码中实现核心行为,但以数据的形式配置特定的细节.数据可以轻松更改,甚至可以在EEPROM或闪存的不同部分进行编程.

这个想法对于解决我们的问题听起来很棒.我和我的同事分享了这个,我们立即开始重新设计一些软件模块.

当我们在编码中尝试使用这个想法时,我们在实际实现中遇到了一些困难.对于受约束的嵌入式系统,我们的代码构造非常繁重且复杂.

为了说明这一点,我将详细说明上面提到的例子.我们没有使用一堆if语句来决定输入组合是否处于需要安全气囊展开的状态,而是改为大表.有些条件不是很简单,所以我们使用了很多函数指针来调用许多小助手函数,这些函数以某种方式解决了一些条件.我们有几个层次的间接,一切都变得难以理解.总而言之,我们最终使用了大量的内存,运行时和代码复杂性.调试这个东西也不简单.老板让我们改变了一些东西,因为模块太重了(他可能是对的!).

PS:在SO中有一个类似的问题,但看起来焦点是不同的.适应不断变化的业务需求?

c embedded requirements

9
推荐指数
1
解决办法
500
查看次数

蜂窝主题*.NoActionBar或*.NoTitleBar - 菜单按钮在哪里?

我的清单设置:targetSdkVersion = 11

我将Activity设置为android:style/Theme.Holo.NoActionBar或android:style/Theme.NoTitleBar

所需结果:不显示顶栏(操作栏或标题栏)的应用程序,并具有菜单.我想要几乎全屏(视频播放器或图像查看器)可能带有调暗状态栏.

问题是在这种组合中,没有办法按菜单按钮,因为没有显示菜单按钮.如果targetSdkVersion <11,则底栏上有遗留的菜单按钮,如果我选择隐藏操作栏,我希望它在那里.

平板电脑上没有硬件菜单按钮,上面没有虚拟菜单按钮.

它是Honeycomb的一些设计错误,迫使所有应用程序都有Action栏以便有菜单吗?

有.NoActionBar版本的几个Holo.*主题,这些应该只适用于没有菜单的应用吗?

如果我选择不使用操作栏,我很困惑为什么菜单按钮没有移动到底栏.

问题:在将我的应用程序定位到Honeycomb时,我可以没有操作栏并仍然提供菜单吗?

android statusbar android-3.0-honeycomb

9
推荐指数
1
解决办法
7508
查看次数

emacs:HideShow是否适用于xml-mode(sgml-mode)?

我在我的cc模式缓冲区中使用hideshow.el来折叠我不看的文件的部分.

能够在XML文档中执行此操作会很高兴.我使用emacs 22.2.1和内置的sgml-mode进行xml编辑.我还没有使用hideshow来处理XML.我的意思是,我打开次要模式但按键没有效果.哦,除了我确实得到了一个XML评论崩溃.但没有元素.

有人做过这个吗?
建议?


编辑:我敢打赌,如果我将一个sgml-mode元素添加到hs-special-modes-alist中,它会起作用.我需要一个用于start-block的正则表达式.有没有人这样做过?


我没有转移到nxml模式.我是不是该?它会"折叠"还是隐藏?

xml emacs

8
推荐指数
1
解决办法
2532
查看次数

如何将Windows任务栏从"显示"切换/切换到"自动隐藏"(反之亦然)?

基本上我想制作简单的切换程序(将映射到某些键盘快捷键),如果处于正常模式,则将任务栏设置为自动隐藏模式(相反,如果处于自动隐藏状态,则设置为正常显示模式).

你知道如何在C#中实现它吗?(或者Win32 C++,但实际上做的任何事情都可以.)

谢谢.希望我已经清楚了.

-

我真的不想要任何与任务栏重叠的全屏应用程序,只有切换显示模式和退出的无窗口程序.我定期从自动隐藏切换到普通视图,并希望简化它.(使用Win7.)

-

编辑.例如

#include <windows.h>

int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    SetWindowPos(FindWindow(L"Shell_traywnd", NULL ), 0, 0, 0, 0, 0, 0x40);
}
Run Code Online (Sandbox Code Playgroud)

不会做的伎俩,它只显示任务栏,它已经可见=真,但没有将其切换为自动隐藏.(同样适用于0x80.)

c# windows animation taskbar

8
推荐指数
3
解决办法
1万
查看次数

使用JQuery,如何在字段仍具有焦点时检测文本输入的值是否已更改?

在发布此问题之前我注意到之前在此主题上发布了类似的问题,但是在这种情况下用户没有通过使用键盘与文本字段交互,在这种情况下将文本字段绑定到"粘贴"行动或任何其他漂亮的建议在我的情况下不起作用.

我们的用户正在输入从条形码扫描的字符串值.我们试图做的是避免在扫描信息后让用户放下扫描仪进入下一个字段的麻烦.但是,我仍然有一个问题,即在文本字段仍然具有焦点时检测其值的变化.

这是我们遗漏的唯一部分,因为将焦点应用于表单上的下一个字段是微不足道的.任何人都可以了解当输入设备不是键盘时如何检测文本字段值的变化?我已经尝试过使用change()事件但是在字段不再具有焦点之前它不会触发.

jquery events textbox

8
推荐指数
1
解决办法
4221
查看次数

用于检测文件是否在不同运行之间发生更改的Python库?

假设我有一个程序A.我运行它,并从文件foo.txt开始执行一些操作.现在A终止了.

A的新运行.它检查文件foo.txt是否已更改.如果文件已更改,则A再次运行其操作,否则退出.

是否存在库函数/外部库?

当然,它可以用md5 +包含md5的文件/ db来实现.我想防止重新发明轮子.

python file

8
推荐指数
2
解决办法
7471
查看次数

如何检测控件是否被移动?

假设我有一个带有自定义UserControl的窗口,UserControl里面有一个文本框.当我拖动窗口时,TextBox如何检测到它正被移动?

我试图搜索它的RenderTransform属性,当"Freezable对象或其中一个对象发生更改"时会触发Change事件.没什么结论..

编辑:

在我的情况下,我没有看到窗口,我看到的只是UserControl,我不能再高了.

wpf position detect drag

8
推荐指数
2
解决办法
7194
查看次数

更改MovieClip Actionscript 3的填充颜色

我想问一下,如何只更改舞台上实例的填充颜色 - 我可以通过使用ColorTransform对象来实现它,但它会改变整个实例的颜色,而不仅仅是填充颜色.我想只改变填充颜色,而不是笔触颜色.有谁能够帮我?

这是我的代码:

function paint(){
    var myColorTransform:ColorTransform = new ColorTransform();

    myColorTransform.color = someColorNumber;

    coloredObject.transform.colorTransform = myColorTransform;

}
Run Code Online (Sandbox Code Playgroud)

colors instance actionscript-3 fill

7
推荐指数
2
解决办法
5万
查看次数

Django - 发送关于模型更改的电子邮件

我想在模型中更改特定字段时发送电子邮件.可能吗?这是我正在寻找的.我有一个包含BooleanField的配置文件模型,当管理员选择为true时,我想向用户发送电子邮件.我知道我可以把它放在"def save(self):"中,但是,只要模型被更改并且字段为真,它就会触发电子邮件.如果字段从False更改为True,有没有办法让它只有电子邮件?

email django model

7
推荐指数
2
解决办法
5529
查看次数

项目编码标准与单元测试代码覆盖率冲突时该怎么办?

我正在开发一个学习体验的个人项目,同时也要实现一个体面的代码.这种教育的一部分,并使其成为一个体面的代码,是单元测试.我最近潜入了PHPUnit及其代码覆盖工具.

我遇到了一种具有特定实现的情况,其中使用的编码标准导致代码覆盖丢失.在这个特定的例子中,打破使用的编码标准会导致代码覆盖率从88%跳到94%.

在一个方法中,我有两行,如下所示

    // .. some data validation stuff
    trigger_error('Error validating the stuff', E_USER_WARNING);
}
Run Code Online (Sandbox Code Playgroud)

数据验证和东西在这里并不重要,}是的.现在,当单元测试超过这行代码时,a PHPUnit_Framework_Error会抛出到该行之前},因为代码永远不会实际继续到大括号的末尾,所以代码覆盖率永远不会捕获该行.

如果我做

    // .. some data validation stuff
    trigger_error('Error validating the stuff', E_USER_WARNING);}
Run Code Online (Sandbox Code Playgroud)

我的代码覆盖率增加了6%.我试过设置PHPUnit_Framework_Error_Warning::$enabledfalse后来我在终端得到一个丑陋的,预期的错误消息,因为我想最终被除了我自己的单元测试的错误消息的人使用这个项目是不可接受的.另外,我真的希望我的编码风格能够始终如一地实现.代码风格的违规可能会在代码的进一步删除时跳出来,这意味着我还必须添加一个可怕的注释来解释为什么大括号被移动......可能在多个地方.

我想我的问题是:

  1. 是否有一个允许1TBS使用的PHPUnit设置,并且仍然会被测试抛出异常或触发错误直接覆盖}
  2. 遵循编码标准或提高代码覆盖率是否更为重要?(虽然提升实际上只是一个额外的翻译})

php phpunit coding-style

7
推荐指数
1
解决办法
895
查看次数