博文

重新看一下<高级开发>里的can上位机VC代码(2006-09-23 17:33:00)

摘要:今天重新看了一下《高级开发》里的can上位机VC代码,里面涉及MATLAB,VC,OpenGL,CAN; 由于缺少控件,原带Robot.exe未能顺利运行。缺少某些文件,不能通过编译! 决定暂时放一边,改天借来书本再试。......

阅读全文(2968) | 评论:0

CAN驱动的调用 不通!:((2006-09-23 17:25:00)

摘要: inf和sys文件安装不成功? 采用HKCAN(HKCANDLL.DLL,HKCANDLL.LIB,HKCAN.H)进行VC设计,可能是线程不对!? 代码如下: #include "stdafx.h"
#include "resource.h"
#include "HKCAN.h" #define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst;        // current instance
TCHAR szTitle[MAX_LOADSTRING];        // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];        // The title bar text // Foward declarations of functions included in this code module:
ATOM    MyRegisterClass(HINSTANCE hInstance);
BOOL    InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); HANDLE hReadEventport[2]; //UINT ReadThreadProc(LPVOIDpParam)
//DWORD WINAPI ReadThreadProc(LPVOID lpParameter )
UINT ReadThreadProc(LPVOID lpParameter )
{
&......

阅读全文(2599) | 评论:0

三种主流嵌入式图形用户界面的移植及性能比较(2006-09-22 17:47:00)

摘要:三种主流嵌入式图形用户界面的移植及性能比较 引言 与通用的GUI系统相比,嵌入式系统下对GUI基本要求包括:轻型、占用资源少、高性能、高可靠性和可配置。目前,面向嵌入式Linux系统的有代表性的GUI系统有北京飞漫软件公司的MiniGUI、美国Century软件公司的MicroWindows、挪威Troltech公司的Qt/Embedded。本文对这三种主流的GUI系统进行了移植,并对它们的性能进行了比较。   三种嵌入式GUI的移植 采用的项目平台HHARM2410-FEC-R1开发套件,采用203MHz 的ARM920T 内核的处理器S3C2410。 HHARM2410-FEC-R1 套件由核心板和底板(外设板或称基本板)组成,核心板上集成Samsung 公司S3C2410 处理器,64MB SDRAM以及16MB 的FLASH(闪存),为我们进行嵌入式GUI研发提供了足够的空间。底板上则提供以下外设接口:一个四线RS-232 串口(COM1),一个10M/100M自适应以太网接口,一个TFT LCD接口, 一个触摸屏接口。核心板和底板配合即构成一个最小的完整应用系统。 移植过程中我们采取了宿主机和目标板的开发模式。宿主机是一台运行Linux 的PC 机服务器,目标板即开发板。先在宿主机上调试通过后,再移植到目标板上。 移植工作主要集中在两个方面: 在华恒开发板附带的软件包中,已经包括有了交叉编译所需要的二进制工具Binutils、标准C函数库libc以及生成ARM平台代码的x86交叉编译器gcc、g++等工具软件包。将这些工具软件安装到宿主机上,将该安装路径添加至PATH环境变量中去,以便shell能够找得到,这样就完成了交叉编译环境的设置。 接下来就可以将GUI运行所需要的资源文件和可执行文件都采取交叉的方式进行编译,然后将编译生成的文件添加到原来的文件系统中去,就可以将其下载到目标板上进行调试了。   下面着重对Mini GUI系统的移植进行介绍。   MiniGUI图形系统由函数库、资源、演示程序三部分组成,相应地在对MiniGUI进行移植时也要对这三部分分别进行移植。 MiniGUI使用了自由软件常用的“automake”和“autoconf”接口......

阅读全文(3066) | 评论:0

硬件设计的鸡毛蒜皮 zz(2006-09-22 17:29:00)

摘要: 硬件设计的鸡毛蒜皮zz 现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K吧点评:市场上不存在5K的阻值,最接近的是4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K高4倍和2倍。20%精度的电阻阻值只有1、1.5、2.2、3.3、4.7、6.8几个类别(含10的整数倍);类似地,20%精度的电容也只有以上几种值,如果选了其它的值就必须使用更高的精度,成本就翻了几倍,却不能带来任何好处。 现象二:面板上的指示灯选什么颜色呢?我觉得蓝色比较特别,就选它吧点评:其它红绿黄橙等颜色的不管大小(5MM以下)封装如何,都已成熟了几十年,价格一般都在5毛钱以下,而蓝色却是近三四年才发明的东西,技术成熟度和供货稳定度都较差,价格却要贵四五倍。目前蓝色指示灯只用在不能用其它颜色替代的场合,如显示视频信号等。 现象三:这点逻辑用74XX的门电路搭也行,但太土,还是用CPLD吧,显得高档多了点评:74XX的门电路只几毛钱,而CPLD至少也得几十块,(GAL/PAL虽然只几块钱,但公司不推荐使用)。成本提高了N倍不说,还给生产、文档等工作增添数倍的工作。 现象四:我们的系统要求这么高,包括MEM、CPU、FPGA等所有的芯片都要选最快的点评:在一个高速系统中并不是每一部分都工作在高速状态,而器件速度每提高一个等级,价格差不多要翻倍,另外还给信号完整性问题带来极大的负面影响。 现象五:这板子的PCB设计要求不高,就用细一点的线,自动布吧点评:自动布线必然要占用更大的PCB面积,同时产生比手动布线多好多倍的过孔,在批量很大的产品中,PCB厂家降价所考虑的因素除了商务因素外,就是线宽和过孔数量,它们分别影响到PCB的成品率和钻头的消耗数量,节约了供应商的成本,也就给降价找到了理由。 现象六:程序只要稳定就可以了,代码长一点,效率低一点不是关键点评:CPU的速度和存储器的空间都是用钱买来的,如果写代码时多花几天时间提高一下程序效率,那么从降低CPU主频和减少存储器容量所节约的成本绝对是划算的。CPLD/FPGA设计也类似。  鸡毛蒜皮之二:低功耗设计 现象一:我们这系统是220V供电,就不用在乎功耗问题了点评:低功耗设计并不仅......

阅读全文(2236) | 评论:0

Linux/Unix环境下的make和makefile详解(转贴)(2006-09-22 17:26:00)

摘要:Linux/Unix环境下的make和makefile详解(转贴)
学习uclinux,我觉得要先学习make和makefile,我从网上找来几篇文章,与大家共享 Linux/Unix环境下的make和makefile详解  
Pathetique
  无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,
我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,
对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。
而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动
完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和makefile工具可以大大
提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。
  但令人遗憾的是,在许多讲述Linux应用的书籍上都没有详细介绍这个功能强大但又非常复杂的编译工具。在这里我就
向大家详细介绍一下make及其描述文件makefile。
Makefile文件
  Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile
文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。
makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的
界面修改 makefile 文件而已。
  在 UNIX 系统中,习惯使用 Makefile 作为 makfile 文件。如果要使用其他文件作为 makefile,则可利用类似下面的 make
 命令选项指定 makefile 文件:
  $ make -f Makefile.debug
  例......

阅读全文(2407) | 评论:0

uClinux中Makefile文件整体分析 (2006-09-22 17:24:00)

摘要:uClinux中Makefile文件整体分析
---------------------------------------------------------------------------------------
1、概述
~~~~~~~
uClinux/目录下的这个Makefile 是个总领式的文件,通过它又层层包含调用各个目录、子目录下面对应Makefile,就这样层层调用下去,从而完成整个软件系统的编译。
2、具体分析
~~~~~~~~~~
下面根据uClinux/Makefile 文件的内容(内容有删节)大致介绍一下整个编译的调用关系。 ----------------------------------------------------------------------------------------
include common.mk
---------------------------------------------------------------------------------------- 首先包含common.mk,它里面定义了一些通用的全局变量,例如:common.mk 文件中有如下内容:
.EXPORT_ALL_VARIABLES:
(相当于C 中的extern 关键字,表示下面的宏变量可以为其它文件所使用)
ROOTDIR = $(shell pwd)
TOOLS = $(ROOTDIR)/tools ----------------------------------------------------------------------------------------
.EXPORT_ALL_VARIABLES
---------------------------------------------------------------------------------------- 输出下面所有全局变量 ------------------------------------------------------------------------------......

阅读全文(2119) | 评论:0

LINUX基本操作命令(2006-09-22 17:24:00)

摘要: LINUX基本操作命令   基本操作命令
----------------------------------------------------------------------
----------------------------------------------------------------------
ls #以默认方式显示当前目录文件列表
ls –a #显示所有文件包括隐藏文件
ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行
ls --color=never *.so > obj #不显示文字颜色,将所有so文件记录到obj文件中 ----------------------------------------------------------------------
cd dir #切换到当前目录下的dir目录
cd / #切换到根目录
cd .. #切换到到上一级目录
cd ../.. #切换到上二级目录
cd ~ #切换到用户目录,比如是root用户,则切换到/root下 ----------------------------------------------------------------------
rm file #删除某一个文件
rm -fr dir #删除当前目录下叫dir的整个目录 ----------------------------------------------------------------------
cp source target #将文件source 复制为 target
cp /root/source . #将/root下的文件source复制到当前目录
cp –av soure_dir target_dir #将整个目录复制,两目录完全一样
cp –fr source_dir target_dir #将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同 -----------------------------------------------......

阅读全文(1487) | 评论:0

自动控制所面临的挑战(2006-09-22 17:20:00)

摘要: 自动控制所面临的挑战 作者:冯纯伯  (东南大学)     
冯纯伯,自动控制专家。1928年4月16日出生于江苏金坛。1953年于哈尔滨工业大学电机系研究生毕业。1958年在列宁格勒工业大学获技术科学副博士学位。历任东南大学自动化研究所所长,研究生院副院长。1994年获俄罗斯联邦自然科学院外籍院士称号,1995年当选为中国科学院院士。主要从事自动控制领域研究。

自动控制学科自建立以来一直就是一门很活跃的学科。二战期间由于军工技术的需要,以伺服系统为主要内容的反馈控制得到了迅速发展。二战之后的冷战期间军工技术竞争剧烈,特别是各类飞行器对控制系统提出了很高的要求。在此形势的推动下以状态变量为基础的所谓现代控制理论得以建立,它的一个主要特点是依赖于精确的数学分析计算。随着时间的推移,自动控制应用的领域愈来愈扩大,无论国防、工农业生产、社会经济、环保等等,凡是存在系统的地方都宜用系统学的观点加以分析,都可用控制理论方法加以适当的人为改造和处理。在这种日益扩大的应用过程中,人们发现原有的所谓现代控制理论有很大的局限性。这就提出了新的更高的要求,当前计算机科学和技术的高度发展也为更复杂更高层次的控制理论的发展提供了物质条件,因此,国际上普遍认为当前控制理论面临新的挑战,酝酿着新的发展。

概括地说,当前控制理论所要解决的主要问题是研究复杂系统的有效控制。所谓复杂系统可认为是具有以下一些主要特征的系统:

1.系统具有很强的时变和非线性。几乎任何真实系统都具有非线性,只是强弱不同而已。为了实现深层次、高性能的控制,就不能不充分考虑系统特性的时变性和非线性。举例来说,我国引进的SU-27战斗机可实现超机动飞行,其攻角可在极短时间内达到接近90°的程度,在此情况下它的气动特性全变了,用常规的线性化处理方法无法设计这样的控制系统。在民用方面,许多化工过程都有很强的非线性,其特性常随工况改变而改变,有时环境变了,特性起根本性的变化,即使仍然回到原来的环境和条件,原来的工况也无法恢复,造成灾难性后果,对于这类对象常规的PID调节常常不能满足要求。

众所周知,由于时变非线性动态方程没有通用的解法,因此和线性定常动态系......

阅读全文(2094) | 评论:0

标准的PID处理例程(C)(2006-09-22 17:15:00)

摘要: 标准的PID处理例程 /*========================================================================================
    这是从网上找来的一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余
数补偿。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。
=============================================================================================*/
#include <string.h>
#include <stdio.h>
/*====================================================================================================
    PID Function
   
    The PID (比例、积分、微分) function is used in mainly
    control applications. PIDCalc performs one iteration of the PID
    algorithm.

    While the PID function works, main is just a dummy program showing
  &nbs......

阅读全文(2253) | 评论:0

增量式PID控制算法程序 (A51)(2006-09-22 17:12:00)

摘要:;********增量式PID控制算法程序***********
;T、TD、TI、KP依次从30H,33H,36H,39H开始。
;A,B,C的值依次存在BLOCK1,BLOCK2,BLOCK3的地址里
; 这里R(k)给的是定值
;

ORG 0000H
BLOCK1 EQU 43H ;A,B ,C
BLOCK2 EQU 46H
BLOCK3 EQU 49H
UK EQU 4CH ;存结果UK
RK EQU 50H
EK EQU 53H ;存放偏差值E(k)的始址
EK1 EQU 56H ;存放E(k-1)的始址
EK2 EQU 59H ;存放E(k-2)的始址
CK EQU 5CH ;采样数据始址
BUFF EQU 60H ;暂存区
BUFF1 EQU 63H
BUFF2 EQU 66H
REC EQU 69H
TEST:
MOV RK,#01H ;常数Rk的BCD码浮点数
MOV RK+1,#12H ;1.25
MOV RK+2,#50H
MOV 3CH,#01H ;常数1的BCD码浮点数
MOV 3DH,#10H
MOV 3EH,#00H
MOV 40H,#01H ;常数2的BCD码浮点数
MOV 41H,#20H
MOV 42H,#00H
MOV 30H,#01H ;T的BCD 码浮点数
MOV 31H,#23H ;2.34
MOV 32H,#40H
MOV 33H,#01H ;Td的BCD码浮点数
MOV 34H,#35H ;3.54
MOV 35H,#40H
MOV 36H,#01H ;Ti的BCD码浮点数
MOV 37H,#11H ;1.12
MOV 38H,#20H
MOV 39H,#01H ;Kp的BCD码浮点数
MOV 3AH,#12H ;1.25
MOV 3BH,#50H

MOV R0,#RK ;指向BCD码浮点操作数
LCALL BTOF ;将其转换成二进制浮点操作数
MOV R0,#3CH
LCALL BTOF
MOV R0,#40H
LCALL BT......

阅读全文(9813) | 评论:2