May
23
Posted by IndexZ At 22:25
接触硬件开发也有一年的时间了,经常听到上位机控制、上位机程序、上位机通讯之类的词语。而问到上位机的概念或者什么是上位机的时候,大家基本都说不清楚。百度百科中的上位机的解释是:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。我的理解是上位机就是PC或者类似于PC,常见的就是工控机(皮厚、扩展槽N多),现在实验室的gjj同学还用工控机做开发呢。
有了上位机,就有相对应的下位机,那什么是下位机呢?下位机就是受上位机控制,直接控制外部设备,将各种参量转化为数字信号返回给上位机,下位机具有较好的实时性,具有多种通信接口。
上位机与下位机之间通过各种通信接口连接,常见的有串口、SUB、LAN网口。上位机需要根据各种接口协议编写专用的控制程序;下位机需要编写对应的响应控制程序。
这样划分的话,我主要是还是从事下位机方面的开发。偶尔也写写上位机的程序。
Tags:上位机, 下位机.
May
21
Posted by IndexZ At 00:10
Ethereal是一个开源项目,Ethereal的功能是对网络传输的数据进行抓包,可以运行在UNIX、Linux、Windows操作系统上。由于它的开源和多平台支持,使其成为学习网络知识的最好工具。
如果只是使用Ethereal来抓包,可以下载Ethereal的Binary发行版,需要再次开发可以下载Source code发行版,本文中所使用的源码包为ethereal-0.99.0.tar.gz。下面为在windows下建立Ethereal编译开发环境的过程。此过程根据Ethereal Developer’s Guide 18189 for Ethereal 0.10.14文档操作得来,采用Ethereal推荐的Cygwin+MSVC6方式。
1、安装Cygwin
到http://www.cygwin.com/下载cygwin安装更新包(一个setup.exe),选择download without installing模式,接下来的设置指定cygwin的安装目录和cygwin更新或安装文件的下载保存目录,指定下载服务器,下载完成后出现下面画面,在默认选择安装的基础上添加下列安装包选择
| Archive/unzip |
Devel/bison |
Devel/flex |
Interpreters/perl |
| Interpreters/python |
Utils/patch |
Web/wget |
|
下载完成之后需要安装这些软件包,再次运行setup.exe,选择Install form Local Directory,此时只需要将All 后面设置为Install,即可安装。
安装中遇到的问题,选择Install form internet模式,在上图中点下一步会出现下载失败;在本地没有安装包的时候,选择Install form Local Directory模式,会出错。cygwin安装成功后查看bash版本如下

二、安装MSVC6.0
其实我机器早就安装了MSVC6.0,MSVC6.0提供编译器和链接器。安装过程可以勾选注册环境变量,由于我安装比较早,当时没有选择注册环境变量,按照开发文档中所说的安装VC98\Bin中的vcvars32.bat,但是似乎并没有起作用,还是手动设置。“我的电脑->属性->高级->环境变量”编辑Path变量值,将vcvars32.bat的变量值加入path的变量值中,用分号(;)隔开。我的VC安装在D盘添加的环境变量如下:
D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;
D:\Program Files\Microsoft Visual Studio\VC98\Bin;
D:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;
D:\Program Files\Microsoft Visual Studio\Common\Tools;
默认情况下环境变量中没有Include变量,需要新建Include变量然后添加如下变量值
D:\Program Files\Microsoft Visual Studio\VC98\ATL\Include;
D:\Program Files\Microsoft Visual Studio\VC98\Include;
D:\Program Files\Microsoft Visual Studio\VC98\MFC\Include;
默认情况下环境变量中没有Lib变量,需要新建Lib变量添加如下变量值
D:\Program Files\Microsoft Visual Studio\VC98\Lib;
D:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib;
添加cygwin的bin目录到环境变量path中,为了nmake时运行bash。
三、检测已安装工具的有效性
在windows的cmd下,先进入Ethereal源码所在文件夹,然后运行
nmake -f Makefile.nmake verify_tools
验证通过如图
如果验证失败,提示有什么软件没有安装,通过cygwin的setup.exe重新安装相应软件。
四、安装库文件
简单的方法是通过nmake -f Makefile.nmake setup,通过wget自动下载所需的库文件,保存目录在config.nmake中的ETHEREAL_LIBS指定,可以自行修改。我将其修改为ETHEREAL_LIBS=D:\ethereal-win32-libs。由于我使用校园网的关系,下载必然是要失败的,所以只能手动安装这些库文件了。
安装目录以D:\ethereal-win32-libs为当前目录,虽然说明文档中表明有些库是可选的,但我不安装可选库,编译不通过。
下表是根据主makefile.nmake中setup来建立。
| 库名称 |
版本号 |
包格式 |
安装目录 |
备注 |
| GLib |
2.6.6 |
Binary&Dev |
glib |
下载 |
| GTK+ |
1.3.0 |
Binary&Dev |
gtk+ |
下载 |
| libiconv |
1.9.1 |
Binary&Dev |
libiconv-1.9.1.bin.woe32 |
下载 |
| gettext |
0.13 |
Binary |
gettext-runtime-0.13.1 |
下载 |
| Net snmp |
5.2.5pre2 |
Source |
net-snmp-5.2.5 |
下载 说明 |
| wpdpack |
3.1 |
Developer’s Packs |
WpdPack |
下载 |
| adns |
1.0-05 |
Binary&Source |
adns-1.0-win32-05 |
下载 |
| pcre |
6.4 |
Binary&Developer |
pcre-6.4 |
下载 |
| zlib |
1.2.3 |
Binary&Dev |
zlib123-dll |
下载 |
| lua |
5.1.3 |
win32bin&win32lib |
lua5.1 |
下载 说明 |
Net SNMP库使用说明:找到net-snmp-5.2.5.pre2\win32\libsnmp\文件夹中的libsnmp.dsp工程文件,用VC6.0编译生成release版本。默认情况下生成的netsnmp.lib文件在net-snmp-5.2.5.pre2\win32\lib\release\文件夹下。
将net-snmp-5.2.5.pre2文件夹下的include和win32文件夹拷到D:\ethereal-win32-libs\net-snmp-5.2.5文件夹下。
修改config.nmake中的NET_SNMP_DIR宏,修改如下
NET_SNMP_DIR=$(ETHEREAL_LIBS)\net-snmp-5.2.5
lua库的使用说明:lua5_1_3_Win32_vc6_lib.zip解压后的lua5.1.lib拷到D:\ethereal-win32-libs\lua5.1\lib目录下,将include文件夹拷到D:\ethereal-win32-libs\lua5.1\目录下;将lua5_1_3_Win32_bin.zip解压到D:\ethereal-win32-libs\lua5.1\bin目录下。修改config.nmake中的LUA_LIBS宏,修改如下:
LUA_LIBS=$(LUA_DIR)\lib\lua5.1.lib
五、编译ethereal
以上搞定之后就可以编译了,cmd下输入nmake -f makefile.nmake all
遇到了找不到unistd.h头文件的错误,解决办法自己新建一个unistd.h头文件,内容如下:
/** This file is part of the Mingw32 package.
* unistd.h maps (roughly) to io.h
*/
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */
将其放到include的环境变量值所指的目录下,如D:\Program Files\Microsoft Visual Studio\VC98\Include;
编译成功之后会在源码文件夹中生成ethereal.exe文件,现在运行ethereal.exe会提示缺少wiretap-0.3.dll、intl.dll等动态链接库。解决办法是在cmd下运行nmake -f makefile.nmake install-deps。将所需的dll拷到源码文件的根目录下。

界面还是比较粗糙的,下次把gtk2加入,看下能有改善否。
差点忘了,在nmake -f makefile.nmake distclean的时候有个cd asn1的错误,这应该是ethereal的一个bug,路径错误。解决办法,修改makefile.nmake中的cd asn1修改为cd plugins/asn1,下面隔一行添加cd .. 。
此文基本是按照我安装过程记录下来,若有问题请联系我。
Tags:cygwin, ethereal, glib, gtk, windows, 开发环境.
May
13
Posted by IndexZ At 22:28
昨天(5月12日)中国四川省汶川县发生了7.8级地震,全国人民众志成城共度难关。好多同学都想尽自己的一份力量来帮助灾区。可以通过向中国红十字总会捐款捐物等方式帮助灾区人民。 捐款方式,通过中国红十字总会捐款捐物,请查看央视网络中国红十字会紧急呼吁为地震灾区民众捐款捐物(http://news.cctv.com/china/20080513/101974.shtml)。网络捐款,请查看网络捐款方式(来源央视网络),网络捐赠成最快方式 支付宝捐赠通道开通(http://news.cctv.com/china/20080513/107949.shtml)。
我选择了网络捐款方式,直接通过支付宝捐款,捐到壹基金,如果你也有支付宝的话请选择网络捐款吧,正如支付宝所说“早捐一秒,多救一人”。
下图为向壹基金捐款的信息

May
13
Posted by IndexZ At 15:18
今天在群里看到一则消息:
请大家不要拨打四川省内的电话,以免阻塞通信网络,致使被困人员无法向外界求救!而且如果您的亲戚朋友在这个时候不论平安与否,现在联络都已经于事无补!给求生者创造一个机会!谢谢大家了!!
地震之后各地的通讯都出现中断的情况,而四川重灾区,通讯设施损坏最严重,通信的压力也最大,我们把机会留给求生者吧。
我有一个同学在四川上班,到现在也没有消息,只能在心中默默祈祷,希望大家平安,祈祷灾区人民尽快度过难关。
May
12
Posted by IndexZ At 15:55
今天14:35左右西安发生地震,当时正在宿舍睡觉,感觉床在摇晃,舍友喊了一声地震就跑了,然后我也跟着跑出了宿舍楼。楼下都是人,大家都在讨论地震。生平第一次经历地震,不知道怎么办,看见别人跑就跟着跑了。这次震动并不大,事后大家的兴奋大于恐惧。我们都希望震中在西安,因为西安的震动不大,那样其它地方就更不会出事了。然而这是我们的愿景,当上网之后才发现震中在四川汶川县,伤亡已是3000-5000人了。我们为灾区人民祈祷,希望灾区损失最小化,希望灾区人民能度过难关。