Posts

Showing posts from September, 2016
Excel 设置数据有效性实现单元格下拉菜单的 3 种方法 一、直接输入: 1. 选择要设置的单元格,譬如 A1 单元格; 2. 选择菜单栏的“数据”→“有效性”→出现“数据有效性”弹出窗口; 3. 在“设置”选项中→“有效性条件”→“允许”中选择“序列”→右边的“忽略空值” 和“提供下拉菜单”全部打勾→在“来源”下面输入数据, 譬如“1,2,3,4,5,6,7,8,9”(不 包括双引号, 分割符号“,”必须为半角模式)→按“确定”就 OK 了, 再次选择该 A1 单元格, 就出现了下拉菜单。 二、引用同一工作表内的数据: 如果同一工作表的某列就是下拉菜单想要的数据,譬如引用工作表 Sheet1 的 B2 : B5 , B2 : B5 分别有以下数据: 1 、 2 、 3 、 4 ,操作如下: 1. 选择要设置的单元格,譬如 A1 单元格; 2. 选择菜单栏的“数据”→“有效性”→出现“数据有效性”弹出窗口; 3. 在“设置”选项中→“有效性条件”→“允许”中选择“序列”→右边的“忽略空值” 和“提供下拉菜单”全部打勾→在“来源”下面输入数据“=$B$2:$B$5”, 也可以按右边带 红色箭头的直接选择 B2 : B5 区域→按“确定”就 OK 了,再次选择该 A1 单元格,就出现了 下拉菜单。 三、引用不同工作表内的数据(必须用到定义名称) : 如果不同工作表的某列就是下拉菜单想要的数据, 譬如工作表 Sheet1 的 A1 单元格要引用工 作表 Sheet2 的 B2 : B5 区域,工作表 Sheet2 的 B2 : B5 分别有以下数据: 1 、 2 、 3 、 4 ,操作 如下: 1. 定义名称: 菜单栏→“插入”→“名称”→“定义”→弹出“定义名称”窗口, 在“在当 前工作薄中的名称”下面输入“DW”(可 以自己随便明明)→“引用 位置”下面输入 “=Sheet2!$B$2:$B$5”, 也可以按右边带红色箭头的直接选择 B2 : B5 区域→按“添加”后 再按“确定”完成第一步。 2. 选择菜单栏的“数据”→“有效性”→出现“数据有效性”弹出窗口; 3. 在“设置”选项中→“有效性条件”→“允许”中选择“序列”→右边的“忽略空值” 和“提供下拉菜单”全部打勾→在“来源”下面输入“=DW”,“DW”就是刚刚定义好的名
Image
CANoe 入门 Step by step系列(三)简单例子的剖析     最好的学习方式是什么?模仿。有人会问,那不是山寨么?但是我认为,那是模仿的初级阶段,当把别人最好的设计已经融化到自己的血液里,变成自己的东西,而灵活运用的时候,才是真正高级阶段。正所谓画虎画皮难画骨。但初级阶段仍然是必须经历的过程,他会使你在达到高级阶段的过程中少走很多弯路,下面我们来迈出这一步。先研究一下别人的简单例子。     最好的例子莫过于Vector本身的Demo了,这个在安装完CANoe之后就会被自动安装。先看最简单的一个,名字叫Easy,但并不简单哦,比我们之前介绍的所有的东西都整合再一起了,很简单,但很全面。但是假如你说,这个我自己也可以完全自己写出来(并不是仅仅是看懂哦),那么我可以肯定的说,在工作中,你完全可以胜任一般的任务要求哦~,剩下的只是工作量的问题了。但我相信到现在为止,你们很多人,都无法写出这样的程序,所以我建议你们把这个程序好好的研究明白,这点很重要。废话不多说,上图,下面是打开运行后的界面。 通过面板可以控制,及显示很多动画效果,做的非常的漂亮。在其余的窗体也将主要的数据以图表等表现方式呈现出来。 我们先看一下DBC的内容吧 Signals: EngineSpeed  车速信息 FlashLight      双跳灯 HeadLight      大灯 OnOff            引擎状态 Messages: EngineState  引擎状态:包含的信号有OnOff,EngineSpeed LightState    灯光状态:包含的信号有FlashLight,HeadLight Network nodes: Display        显示节点,接收所有消息 Engine        引擎节点,发送EngineState 消息 Light          灯光节点,发送LightState 消息 Environment variables:   环境变量,一般与界面的组件相关联,这样就实现了图形化界面的控制与显示,下面就是关联的界面组件 EnvEngineSpeedDspMeter   EnvEngineSpeedDspText    Env
Image
CANoe 入门 Step by step系列(二)CAPL编程 CAPL就是Communication Application Programming Laguage的缩写,CAPL类似于C语言的语法,因此所有的语法请参考C语言教程,这里不在这里进行详述,关于C语言,毫无疑问的,首先推荐大家看谭浩强老师的书,经典中的经典,看完这本C语言应该没问题了。CAPL在CANoe中起到重要的作用,他将所有的部分联系起来(请看下图)现在我们给予上一节的基础上,来着重介绍CAPL编程。 CAPL语法是C语言的,又有一些C++的特性,this指针,事件等,对于事件的理解可以学习任意一种面对对象语言,首推C#.NET,可以参考我的博客学习,当然这个似乎比CAPL本身更加难,事件也更加多,但这并不妨碍对事件的理解,其中的事件类型如下图: 下面来几个小例子帮助理解 来个CANoe版本的hello world!来兴奋一小下吧。开整~ 在打开CANoe,新建个工程,在Simulation Setup中加个Network node ,点铅笔,忘了吗,上一节刚讲过,右键Start->New,键入如下代码 编译后,关闭CAPL Brower。运行CANoe工程,结果如下,哇塞成功咯,好有成就感啊。 这个例子似乎跟CAN通讯没啥太大关系啊,好,我们接下来再做一个例子 运行结果如下,按键盘b键,将发送一个CAN消息,连dlc是啥都不知道的同学,推荐先学习一下CAN基础知识,推荐瑞萨公司的《CAN入门书》,讲的非常的好。 运行刚刚的那个例子你会发现,按一下b,只发送一条消息,但在实际应用中CAN消息都是循环连续发送的,我们要对刚刚的程序进行一些修改。完成这样的功能。程序如下: variables {     message 0x400 msgA = {dlc=1};     mstimer timerA;     int conditionA = 0; } on key 'a' {     conditionA = !conditionA;     if(conditionA ==1)     {         setTimer(timerA,200);     } } on timer time
Image
CANoe 入门 Step by step系列(一)基础应用 CANoe是Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6版本进行介绍,其他版本功能基本差不多。 硬件我使用的是CAN case XL. 1,CANoe软件的安装很简单,先装驱动,再装软件。安装完成,插上USB,连接硬件,这样在控制面板中,Vector Hardware 进行查看 通过查看信息可知,CANcaseXL中的两个piggy,一个是251(高速CAN),一个是7269(LIN),另外常用的还有1054(低速CAN,或称容错CAN),因为CANcaseXL中只能支持两路通讯,这样piggy可以自由组合 2,硬件连接正常,打开CANoe软件 File->New Configuration 可以选择新建工程的模版,我们这里选择CAN_500kBaud.tcn,这样新建了波特率为500K CAN工程,可以File->Save Configuration,进行保存 3,接下来就要使用CAN db++ Editor工具对总线网络节点,消息,信号,进行定义了。 点击工具栏的这个图标    ,或 开始菜单中找这个工具启动 启动后,File->Create Database,选择CANTemplate.dbc,选择目录及文件名,进行保存 右键 Network nodes->New ,进行网络节点的定义,这里只需要填写Name即可,例如:Node_A 然后添加Node_B,完成后如下图,这样在Network nodes目录下面添加出来两个节点 节点添加完成后,下一步添加CAN消息,右键Messages->New,这是需要定义名称,ID,DLC等信息,如下: 然后在Transmitters页面,点击Add按钮,添加Node_A为发送节点,意思就是说,此消息是从Node_A节点发送出来的 其实还有一种方法就是,此时暂时不定义发送节点,然后直接以拖曳的方式拖曳到发送节点上,功能上是一样的 有了消息,消息里携带的东西自然是信号咯,那么我们开始创建一个信号 右键Signals->New,填写如下信息 信号当然要放到消息中咯,切换到Messag