自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 FFT (Fast Fourier Transform) 与 DFT (Discrete Fourier Transform)

   FFT 是一种如雷贯耳的快速算法,应用范围及其广泛,就不多说了。不过 DFT 很多人并不是很清楚,只知道 DFT 比 FFT 效率低,速度慢。实际上,在很多应用场合下,DFT 反而会比 FFT 效率高很多。    首先,回顾一下复数的特性:         V = R + jI = M*(R/M + j I/M) = M*(cos(A) + j sin(A)) = M*exp(j A

2008-07-09 20:50:00 2909 1

原创 软件滤波方法浅谈 (2)

   使用 FIR 滤波有很多优点,比如,总是可以通过先构造滤波器的幅频特性,然后逆变换(比如利用Inverse Fourier Transform) 得到离散的冲击响应序列。不过问题是,如果FIR 冲击响应不收敛,或收敛时间很长,这就需要大量的运算。即便是收敛快的,简单的 sinc 函数,为了保证效果,至少需要 16 点以上的序列。为减少运算量,迭代就会被考虑,也就是说,滤波器的离散公式为:

2008-07-08 21:30:00 2315 8

原创 中断驱动多任务--- 单片机(MCU) 下的一种软件设计结构

mcu由于内部资源的限制,软件设计有其特殊性,程序一般没有复杂的算法以及数据结构,代码量也不大, 通常不会使用 OS (Operating System),  因为对于一个只有 若干K ROM, 一百多byte RAM 的 mcu 来说,一个简单OS  也会吃掉大部分的资源。 对于无 os 的系统,流行的设计是主程序(主循环 ) + (定时)中断,这种结构虽然符合自然想法,不过却有很多不利

2008-08-01 22:06:00 5627 4

原创 动态可订制属性的 PropertyGrid

在VB6, VC++, C#.net 里都可以见到一个属性设计器,用来编辑修改 object 的属性。C# 下提供了一个属性设计器 PropertyGrid, 其使用极其简单,只要       grid.SelectedObject = myOjbect; 就可以把myOjbect 的所有属性显示出来。不过很多时候我们不希望如此,因为欠缺一种灵活性。我希望可以自由的控制需要编辑的内

2008-07-31 22:45:00 11802 8

原创 C# 下控制 WebBrower 以及 HtmlDocument

C# 下带有 WebBrowser 控件,可以用 html 来完成图文混排,报表显示和打印,比前面提供的 vc++ 下使用 IHTMLDocument 容易很多。 下面是一个可以本地生成 html 文件的class:                public CHtmlDocumentBase(WebBrowser browser, int bufferSize)      

2008-07-30 00:01:00 4026

原创 C# 下用 xml 导入导出数据

C# 下导入导出数据比在 VC++ 下容易了很多,基本数据类型 int, float 可以自动 box, unbox, 不需要像 c++ 下得考虑封装基本数据的问题。                public static bool LoadObjects(string fileName, CCollectionBase objects, string type, ref strin

2008-07-29 23:55:00 1544

原创 VC++ 下使用 xml 文件导入导出数据

   XML (eXtensible Markup Language) 是一种简单的数据存储语言,使用一系列简单的标记描述数据,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。更重要的是,xml 可以描述非常复杂的数据结构,比如树状结构。 为了建立一个通用,易于扩展,易于使用的数据导入导出应用,首先得定义一些数据类型用于存储 int, float, str

2008-07-29 21:57:00 1944 2

原创 Hashtable 容器类

Hash算法是一种把任意长度的数据映射转换为固定长度数据的算法,一个典型的应用就是把字符串映射到一个索引值上,这样就把字符串的查找问题变成了查表,极大的提高了性能。hash 具体算法就不介绍了,这里说说应用, 对于一个大中型的项目来说,容器类可以说是必不可少的,Array, LinkList, Que, Stack 应用最广,不过hashtable 我感觉很多人使用较少。很多场合下,使用字符名称表

2008-07-23 20:44:00 1125

原创 MFC 中可订制的 ListView 以及 C# 中可编辑的 ListView

ListView 是一个用途广泛的 control, 在MFC 里的 listView 很平淡,而C#.net 中则增强了很多,可以在设计时设定各个 cell字体,前景/背景颜色。好在 mfc 下control 的自控制性更强,可以做到 C# listView 能做到的一切,甚至更多。下面一个 listView class 是很早以前从 codeproject.com 下载(不好意思,忘了作者是谁

2008-07-18 22:16:00 2315 1

原创 C#: 监测 USB plugin and plugout

It is useful to enum USB ports or connect to a USB device automatically while a USB device is plugged-in. I did lots of research to figure out how to make it work. Hope this can help you.           

2008-07-16 21:29:00 2064

原创 一个嗅探 window 系统TCP/IP 数据包的 Raw Socket class

  网络嗅探器 sniffer 很多,不过自己做的有很多好处。window2000, XP 支持 raw socket,可以用 raw socket 构造一些特殊用途的工具. #include #include "winsock2.h"#include "IPHeader.h" class CRawSocket {                SOCKET    

2008-07-09 22:18:00 2203 1

原创 VB 下 Post 中文编码的 http request

这是以前的一个机器人程序, 用来直接向 http server 提交中文的信息。程序使用了两个特别的控件:inet 与 web browser。 初始化:Private Sub Form_Load()    objInet.Protocol = icHTTP    objInet.RequestTimeout = 12    web.Navigate2 "about:blank

2008-07-09 21:42:00 3084

原创 过滤数字载波的一种方法

看到一个电路中的 CD4098, 让我想起以前做过的一个未完成的项目,自学习的红外遥控器。当时一个问题是如何低成本的滤除 38K 的调制波得到编码波。设计了一些低通滤波器,效果都不理想。后无意中看到 CD4098 的可重触发特性, 豁然开朗。此特性为:脉冲会把触发器重新置位,直至脉冲间隔大于触发器延时设置。因而,38K 的调制波输入到设置为可重触发的 CD4098, 那么输出就是 编码波 加上一个

2008-07-08 00:07:00 1575

原创 偷梁换柱 --- 管理多个应用程序的壳程序

    以前我们每一个设备有一个管理软件,客户总是为此抱怨,特别是做系统集成的大客户。现在我几乎把所有的管理软件软件用 c#.net 重新写一遍,目的是让系统更强壮,更容易维护,更容易扩展。所有的文件采用 xml 格式,包括设备设置文件,每个设备生成一个 dll, 由一个与设备无关的shell 查询设备设置文件调入。如果每个dll 产生一个 Mdi Container, 同时把 shell 关闭,

2008-07-07 22:49:00 1017

原创 判断一个点在三角形之内

这个问题曾在 csdn 以及 21icbbs 提出过,我已找不到过去的连接。这个问题首先是判据,有网友提出判断点在三角形线段左右,这个问题已被我证明与我提出的判据最终的结果一致,尽管我是用矢量来推导,因为矢量有方向性,故而存在左右之分。我的判据是:如果 X 一个点在 A, B, C 三点形成的三角形内,则 X 与 ABC 之间的夹角XA, XB, XC 都小于 180 度;如果有一个角为180,则

2008-07-07 00:42:00 4160 1

原创 exp 函数的数值计算方法

这个问题是21icbbs 上的一个网友提出的,我第一反应就是迭代。在很多场合下,比如计算热电流thermal current,或是其他一些使用如下公式的应用:         y(t) = K * (1 - exp(-t / T)))                                                           (1)         y(t) = K

2008-07-03 21:18:00 24450

原创 关于c/c++ 中的函数指针

在 c 使用函数指针与 c++ 虚拟函数不同,尽管 virtual function 的本质也是函数指针。在用 c 设计时,尽管没有抽象设计,但通过使用函数指针留出 call back 接口,就可以把不同的动作从代码中剥离出去,从而使得代码更加通用。一个例子,如果某个查找程序中需要一个排序, 而有不同的排序算法以适应不同的场合。为了保证查找程序的通用性,必须假设程序对外部环境一无所知,这时可以使用

2008-07-02 03:11:00 1405

原创 软件滤波方法浅谈 (1)

 21icbb 上的程序匠人总结了10种软件滤波方法,简单实用,看得出是匠人自己对实际应用的归纳升华。不过如果能从理论角度分析一下, 更易于理解,因为 10 种方法大多数可以归结为一种做法:有限冲击响应滤波器 (FIR Filter) ,或者通俗的说是程序匠人所提到的“加权平均滤波器“.    滤波器可以分为两种:IIR (Infinite Impulse Response) and

2008-07-02 01:27:00 3653 3

原创 枚举 window 系统串口的几种方法

mfc 下:     CString s;     for (int i=1; ibool CSerialPort::CheckCommPort(LPCSTR commPortName) {     COMMCONFIG cc;     DWORD dwCCSize = sizeof(cc);     return ::GetDefaultCommConfig(commPortName,

2008-07-01 23:47:00 2825 1

原创 Delta phase angle between two sinusoidal waves with different frequencies 不同频率下的相角差

     As I mentioned before, it is easy to calculate the delta phase angle betweeen two sinusoidal waves with the same frequency when DFT is involved. The problem occurs when these two waves have dif

2008-07-01 21:58:00 1097

原创 Generic Chart Control in C# 一个通用的图表控件

  这个control 是把原来 mfc 下的图形显示class 移植到 c# 下,做成一个更通用的 usercontrol.  坐标变换 class: using System;using System.Collections.Generic;using System.ComponentModel;using System.Text;using System.Drawing;

2008-07-01 21:04:00 1668

原创 代理服务器 (proxy) 的使用

 代理服务器的使用 (proxy) 关于 proxy 的用处,我就不多说了,大家心照不宣。如果使用VB6 的 Inet Control, proxy 的设置则极为简单:           objInet.AccessType = icNamedProxy         objInet.Proxy = Trim(proxyAddress.Text)         o

2008-06-18 23:04:00 1460

原创 在 mfc 中控制 web browser

    在很多 application 中,我使用了 browser + html. 好处很多,比如完成复杂的图文显示,预览,打印等等功能。在 VB6 或 C# 中通过 html Document 来控制browser 很简单,但在 mfc 中稍微有些复杂,于是我封装了 IHtmelDocument2 接口,用 exception 来捕获错误,这样,在 mfc 中使用IHtmelDocument2

2008-06-18 22:18:00 1831

原创 一个 VBA for Excel 的DFT 类用以分析离线数据

     我的很多项目里都要使用DFT/FFT ,所以有各类的程序,如assembly, C/C++, C# 等等。当客户需要我帮助分析离线数据时,我发现专门用 C++ 或 C# 做各种不同的程序太耗时间和精力。最快最简单的分析方法是用 matlab, 不过客户并不懂matlab, 也没有matlab。另一个选择就是excel, 把数据装入excel,用vba 处理完之后再chart 上显示出

2008-06-16 23:08:00 1588

原创 PID算法的实现

  PID 算法是一种应用及其广泛的控制方法。对于一个线性系统,PID 参数可以通过指定闭环极点的方法获得。在实际应用中,由于信号噪声,微分经常会带来不必要的干扰,因而,数字控制中经常会舍弃微分项。   The PID equation in time domain is described as the following:     y(t) = Kp* x(t) + Ki*Inte

2008-06-16 21:47:00 3117 1

原创 Phase angle calculation with high accuracy 高精度相角计算

   Two schemes for the phase angle/frequency calculation are implemented in my one of projects. One scheme is the zero-crossing in the time domain. Another is based on DFT in the frequency domain. The

2008-06-16 00:05:00 1423

原创 c#.net 通过 c++.net 使用 windows API 及unmanaged code

为了跟随技术的潮流,我在一个windows application项目中放弃了 mfc,转入 c++.net winform. 虽然winform 运行速度无法与 mfc 相提并论,但设计效率大大提高,特别是有了自定义 control, 代码量强度大大降低, 而且很多底层代码 (unmanaged) 可以直接移植使用。当我进一步跳到 c# 是, 底层代码就有了问题,c# 没有 unmanaged

2008-06-13 10:37:00 1266

原创 无(速度)传感器交流异步电机 (sensorless vector control for induction machine) 的闭环矢量控制 (1)

这是一个很早以前的项目,我首先用 matlab/simulink 作仿真,然后用 Analog Device 的 DSP 做的程序。   以下是 induction machine 模型的电流微分计算: function X=DerCurrent(U) global C S invL Rs Rr Ls Lm Lr T ; Ids=U(4) ; Iqs=U(5) ; Idr=

2008-06-13 01:13:00 2608

原创 我一直想把自己的一些技术心得保留下来,以便以后可以看看自己的历程。

现在做起, 犹未为晚。我做过很多的项目,从硬件设计到软件编程, 从算法到仿真,可惜很多没有保留下来,要么一些涉及商业利益不允许被发表. I prefer typing english in some articles instead of typing chinese because it is too slow to type chinese characters.

2008-06-13 00:45:00 891

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除