文档库 最新最全的文档下载
当前位置:文档库 › wince串口编程

wince串口编程

wince串口编程
wince串口编程

https://www.wendangku.net/doc/5a2291785.html,中串口通信设计

摘要:

利用Evc开发Wince中的串口设计

关键字:

WINCE、Evc、串口通信

作者

Tony

§串口通信程序开发过程:几个概念:

1. 仿真器(Emulator):在开发平台上,模拟应用程序的运行环境(Run Environment),产生与目标机上运行程序同样的效果,就像在目标机上运行一样。在eMeded Micosoft Visual C++4.0上都带有仿真器,我们开发的软件不需要在特定的WinCE目标机上运行,只需要在仿真器上运行正确就可以了。当然,在目标机上更加能够看到想得到的效果。

2. 系统运行环境:主要是CPU系列,我们在产生WinCE的应用程序的时候,有一个选择,要求所选择的CPU架构与之相符,如果多选了,就有可能出如下错误:找不到vcxxx.exe文件。通常情况下,我们所用的Cpu都是X86系列,所以我们就选择X86和一个仿真器就可以了,如下图所示:

3. eMbeded VC++:专门用来做window ce上的应用程序的开发工具,作用等同于pc 机上window平台下的VC++。eMbeded VC++开发的程序不能在Win32平台下运行,VC++开发的程序不能在WinCE下运行。

L 串口测试软件的详细设计。采用面向对象的程序设计方法,把一些业务逻辑抽象出来,形成一些通用的类,方便移植与继承,同时也方便维护。类描述了一组有相同特性(数

据元素)和相同行为(函数)的对象。

在eMbded VC++集成环境中,选择File->New,然后选择Project,输入工程名称,单击OK,系统将会为我们生成一些代码及EVC的程序框架。如下图所示:

1) 串口操作的对象化

串口的操作,首先要打开串口才能操作,就是说首先要打开串口驱动,然后进行下一步的操作。在操作接收后,需要关闭串口,以释放内存。我们的串口软件驻留在电子盘上,通过PC104的串口,与单片机的串口进行通信。在不能确定单片机什么时候发送数据来得情况下,我们必须启动一个线程来监视串口,当有数据(主要是确定有一个8位的字符为标志)到达时,我们就写入缓存,保存下来。当然,我们也可以往串口写入数据,让单片机去处理,这个处理过程不是我们软件的任务,由单片机程序去处理。由此,我们抽象一个CPort的类来处理这些过程。

class CPort

{

public:

CPort();

virtual ~CPort();

BOOL Open( int nPort);//, int nBaud);

BOOL PortClose (void);

BOOL SendData( const char *buffer, int size );

int ReadData(BYTE *data);

BOOL m_bOpened;

HANDLE m_hIDComDev;

DWORD dwError;

DWORD dwThreadID;

};

Open是用来打开串口的方法(Method), 有一个参数选择,让用户打开不同的串口。PortClose 关闭已经打开的串口,所以不需要参数。SendData往缓存写入规定的Size的字符数量,串口是串行的,一次只写入bit,写入两个bit后就组成一个Byte,单片机在收到一个byte之后,就发送一份报文给PC104串口,我们的程序监控线程监测到这个事件后,启动ReadData 方法,把数据读入缓存,等待处理。这个CPort类是一个标准的C++类,在EVC中加入自定义类方法如下图所示:

选择New Class,出现如下:

选择Generic Class, 输入我们的串口类:CPort, 单击Ok成功。

1)线程的处理:

线程的作用就在于监视端口,在没有收到数据之前,它都处于阻塞状态,只有在收到字符这个事件发生后才会解除阻塞状态。在Window 的I/O方式里,对于通讯设备的I/O 可以用像是事件驱动式的方法来达成。主要是利用一个叫WaitCommEvent()的API. 调用这个API 之后, 会一直block 到设定的事件发生之后才会返回。在设定等待状态之前,我们必须设定等待事件。SetCommMask(hCom, EV_RXCHAR);//设置事件驱动的类型,我们用这个函数来设置需要处理的事件,hCom串口句柄,EV_RXCHAR是接收到字符的事件。WaitCommEvent函数等待这个事件的发生。在这个事件发生之前,线程的其他处理过程都不能进行:

int CPort::ReadData( BYTE *data )

{

BYTE Byte;

DWORD dwCommModemStatus,dwBytesTransferred;

int len = 0;

SetCommMask (m_hIDComDev, EV_RXCHAR);

if (m_hIDComDev != INV ALID_HANDLE_V ALUE)

{

WaitCommEvent (m_hIDComDev, &dwCommModemStatus, 0);

SetCommMask (m_hIDComDev, EV_RXCHAR);

if (dwCommModemStatus & EV_RXCHAR)

{

do{

if(!ReadFile (m_hIDComDev,

&Byte,

1,

&dwBytesTransferred,

))

::MessageBox (NULL,_T("读取串口失败!"),_T("RIGHT"),MB_OK);

// Display the data read.

if (dwBytesTransferred == 1)

{

data[len] = Byte;

data[len+1] = 0;

len++;

}

}

while (dwBytesTransferred == 1);

}

}

return len;

}

就这个读数据的函数而言,在等待到EV_RXCHAR事件之前,下面的ReadFile操作不会进行,其他调用这个函数的线程的操作也被阻塞。

§串口的参数设置

通常情况下,RS232串口有几个常用的参数需要设置,波特率(指数据在异步信道中传送的速度),数据位(数字电路中,最小的数据单位),停止位(结束标志),效验位(奇偶效验),端口。Combo Box是由Edit控件和List控件组合而成的,所用在设计的时候,需要把小按钮下拉,再拉长,不然的话在程序运行的时候看不到自己加进去的选项

§协议的解析

我们所有数据的传输,都是基于bit的传输,两个bit组成一个byte,所以在进行数据处理的时候,就要求在处理的时候要一个个byte的处理,读取一个处理一个,而不能按照字符

方式处理。但是有的信息是一个十进制的数据,比如101,我们必须按照BCD码的方式处理,1×100+0×10+1;这样才能得到101。解析出来之后,还要转换成可以为普通操作员可以看的懂的字符,我们还需要建立一个表,比如101对应天气,就需要把101解析为天气,而不是单纯的101,所以要建立两张表,一张表存储BCD码,另外一张表存储对应的汉字,方便查找。双层GroupBox的时候,必须从里往外放置,如果放反了,里面的一个就看不到,就是电文二看不到,这个在VC, Delphi里面是不可能的。

§启动Logo的制作

为了美化程序界面,我们做了一个Logo(暂用本论坛代替)背景的启动界面。

当初设计的时候,是在程序开发的时候静态调用Logo,后来发现一个问题就是图片闪烁,不好看,后来决定采用动态调用图片,在内存中开辟一块兼容的DC,

写入DC,然后显示出来,这样就消除了闪烁的现象

Old_Bitmap = MemDC.SelectObject(&m_Bitmap); //Select DC

dc.StretchBlt(0,

0,

bmBitmap.bmWidth,

bmBitmap.bmHeight,

&MemDC,

0,

0,

bmBitmap.bmWidth,

bmBitmap.bmHeight,

SRCCOPY);

实验五WinCE中的驱动程序开发

WinCE中的驱动程序开发 一.实验目的 1、熟悉WinCE中流式接口驱动程序的12个接口的功能。 2、掌握流式驱动程序的工作过程。 3、能够编写出流式接口的驱动程序。 二.实验内容 使用VS2005的智能设备应用程序开发方法,进行网络通信的编程,并通信多线程技术实现服务器与客户端之间的文件传输。 三.实验设备及工具 硬件:PC机一台; 软件:Windows XP操作系统,VS2005开发环境,WinCE 6.0开发环境,或Windows Mobile 5.0 SDK 四.实验步骤及说明 (1)写出流式接口驱动程序的12个接口,及每个接口的功能。 答:见教材515页 (2)写出流式驱动程序的工作过程。 答:第一步:加载驱动程序,主要有两种加载方式:(1)当系统启动时,设备管理器搜寻注册表的HKEY_LOCAL_MACHINE\Drivers\BuiltIn键下面的子键,并逐一加载该子键下的每一个驱动,此过程称为BusEnum;(2)应用程序可调用ActivateDeviceEx()函数动态地加载驱动程序。 第二步:设备管理器从注册表的dll键值中获取驱动程序所在的DLL文件名。 第三步:设备管理器调用LoadDriver()函数把该DLL加载到自己的虚拟地址空间中。 第四步:设备管理器在注册表的HKEY_LOCAL_MACHINE\Drivers\Active下,记录所有已经加载的驱动程序。 第五步:设备管理器调用驱动程序中的COM_Init函数,并把上一步中添加的注册表项的完整路径作为COM_Init函数的第1个参数传入驱动程序内。 第六步:在COM_Init中,通常须对硬件进行一些最基本的初始化操作。 通过以上的操作完成流式驱动程序的加载任务。 对驱动程序的操作: 第一步:应用程序使用该设备。首先,应用程序调用CreateFile(TEXT(“COM1”)….)打开设备。然后,文件系统判断打开的是文件还是设备。最后,如果打开的是设备,就将控制权交回设备管理器。 第二步:设备管理器调用驱动程序的COM_Open()函数打开设备。 第三步:COM_Open()函数把打开设备的结果返回给设备管理器。 第四步:设备管理器把SMP_open()的返回结果,返回给应用程序的CreateFile()函数调用。 通过第七步到第十步,设备已被成功打开,接下来可对设备进行读/写和控制操作。下面将以从设备中读取数据为例。 第一步:应用程序使用CreateFile()调用返回的句柄,调用函数ReadFile(),向设备发送读请求。

wince6.0_开发环境搭建

Window CE6.0开发平台搭建详解 2011年08月29日 Windows CE6.0的开发无非两大方面:操作系统开发和应用程序开发,操作系统开发包括系统的定制,驱动开发和其他需要完成的底层工作。应用程序开发主要是与实际应用结合紧密的程序开发。 要搭建这样的开发环境,至少要包括两部分,一个是硬件平台,一个是软件平台,在Windows CE6.0的开发中,微软公司把这些开发软件集成到了vs2005中。 Windows CE6.0开发环境需要安装的软件比较多、比较大,至少要10GB的空间,而且有着严格的安装顺序要求,一旦其中某一个环节出错,都会导致软件运行出现故障,为确保安装顺利,请仔细阅读本文,按照步骤一步一步进行安装。 一、所需安装软件 1、Visual Studio 2005 2、Visual Studio 2005 Service Pack 1 3、MSDN 4、platform builder for Windows Embedded CE6.0 5、Windows Embedded CE 6.0 Platform Builder Service Pack 1 6、Windows mobile 6的sdk 二、所用磁盘空间 在安装之前,请检查电脑的磁盘空间,VS2005和Windows Embedded CE6.0均是比较大 的软件,要占硬盘好10G多的空间,建议不要装在C盘,但是我装Windows Embedded CE6.0的时候,发现不能更改安装路径,没办法,只能把Windows Embedded CE6.0装在 C盘。 三、安装顺序 1.安装Visual Studio 2005 最好选择自定义安装方式,把不用的一些组件都删掉,这样会节省不少的磁盘空间。WINCE6.0的Platform Builder不像WINCE5.0是独立的,而是作为VS2005的插件,以后建立和定制OS、编译调试全部在VS2005里完成。 2.安装Visual Studio 2005 Service Pack 1

WinCE驱动开发流程

wince驱动开发学习笔记 嵌入式技术/walking_man 发表于2007-03-20, 20:03 首先是wince驱动的分类问题。按照书上讲的说CE下驱动分成单体驱动和分层驱动,而看到另一种说法是本机驱动和流式驱动。经过microsun大哥的指点,把这两种分类法分开了。在这里引用一下:“单体与分层只是从代码的形式上做的分类.分层驱动代码上分为PD D与MDD,一般的微软已经实现了MDD,可能也实现了PDD,我们只需要对PDD做些修改就能使用,比如音频的驱动,显示的驱动。单层驱动是把PDD与MDD写在一起,没有做严格的区分,通常这种驱动比较简单,比如:ATADISK。 至于本地驱动和流式驱动是从驱动与系统其它模块(调用者)的接口 形式上做的分类.其实,本地驱动这个名称不大恰当,可能叫专用驱动或其它名字更为合适.它是指调用它的模块给它有特定的接口,比如电源驱动和通用LED驱动。而串口,网卡等就是流接口驱动程序. 所以,一个驱动程序可以是单体的流式驱动,例如:ATADISK.也可以 是分层的流式: 如OHCI ” 按照我的理解,单体和分层是驱动实现方式上的分类,而本地和流式则是驱动模型上的分类,所谓本地驱动就是操作系统有保留专门的接口,所谓流式是指编写的DLL文件里可以导出各种流式接口函数。 第二点:驱动的功能属性。设备驱动程序是操作系统内核和硬件的接口,操作系统定义了一组标准的接口,编写驱动的过程也就是实现这些接口。从应用程序到具体硬件间有如下这些环节起作用:

应用程序-调用OS函数-操作系统-驱动接口-驱动程序-硬件操作函数-硬件。在wince里驱动都以用户态的DLL存在,需要通过进程加载到slot里。共有三类系统进程用来加载:Device.exe,GWES.exe,File Sys.exe.绝大多数设备驱动都是通过Device.exe加载的。需要注意的是,不同的OS保留的设备驱动接口是不一样的,如桌面windows 和wince就不同。 第三点:wince下设备的初始化分为两个阶段:Device.exe的初始化;外设的枚举和加载。其流程是:上电-启动bootloader-启动N K-启动注册表init键(Device.exe启动)-初始化数据结构,I/O,电源管理等-加载BusEnum.dll(总线枚举器)-枚举注册表下Driver/buil din的所有子键。这里的枚举过程就是循环调用ActivateDeviceEx()函数加载驱动的过程。在OS启动完毕后,我们可以用PB的Remot e Registry Tool查看H_L_M/drivers/active包含的子键,看哪些驱动随启动而加载。 第四点:流接口驱动的概念。暴露流式接口函数的驱动即是流驱动,它把外设抽象成一个文件。过程是:应用程序使用文件API 对设备进行访问,OS接受API调用FileSys.exe,转到device.exe,调用流接口,与硬件交互。所谓流接口函数有十个,包括XXX_Init、XXX_Deinit、XXX_Open、XXX_Close、XXX_Read、XXX_Write、XXX_P owerUp、XXX_PowerDown、XXX_Seek、XXX_IOControl,在wince5.0中 增加le了XXX_PreClose,XXX_PreDeinit.而我们在应用程序里对应的文件A PI有CreateFile、DeviceIoControl、 ReadFile、 WriteFile,CloseHan dle,SetFilePointer. 第五点:编写流驱动的步骤。有两种实现途径:1。写DLL,做

WinCETouchPanel驱动详解

WinCEWinCEIWinCE Touch Panel 驱动详解 WinCE中的Touch Panel驱动是由GWE模块来管理的,Touch Panel驱动接收用户的触摸信息,并将其转换为屏幕上的坐标信息,传给GWE模块。在WinCE中, Touch Panel 驱动是分层的,分为MDDg和PDD层,这和其他WinCE设备驱动是一样的。MDDI由微软提供,用户只需要实现MD床口PDD层间的DDSI函数就可以了。如图 WinCE中的GWE模块负责加载和管理Touch Panel驱动,Touch Panel的MDD 层向上提供DDI接口,PDD层是针对硬件的实现,对MDD g提供DDSI接口。文档收集自网络,仅用于个人学习 1 Touch Panel驱动中的数据结构 ⑴ TOUCH _P ANEL_SA MP LE_FLAGS 用于描述一个采样点的信息,这些信息被定义在一个枚举结构中: enum enu mTouch Pan elSa mp leFlags { TouchSa mp leValidFlag = 0x01, TouchSa mp leDow nF lag = 0x02, TouchSa mp lelsCalibratedFlag = 0x04, TouchSa mpleP reviousDow nF lag = 0x08, TouchSa mp lelg nore = 0x10, TouchSa mp leMouse = 0x40000000 }; TouchSampleValidFlag :—个有效的采样值 TouchSa mp leDow nF lag:第一次按触摸屏时,返回该flag

WINCE系统

Wince操作系统 开放分类:操作系统 Microsoft Windows CE 快速反应的嵌入式应用常常管理严格的时间反应。例如,制造过程控制,高速的数据采集设备,电讯交换设备,医用设备,空中“有线”控制,武器发射装备,空间航行和导航,实验室,实验控制,汽车发动机控制,机器人系统。 为保证这种功能,就意味着不仅需要计算精确性,还有结果的时间性,此种应用必须在指定的时间参数内做出反应。 实时系统的广义定义是“对任何外部刺激,计算机做出及时反应是至关重要的系统”,标准定义在Internet newsgroup corp realtime group中。实时定义为:一个实时系统它的计算正确性,不仅依靠于计算逻辑上的正确,还包括及时的产生结果。如果没有达到系统时间限制条件,系统也是失效的。 搞清楚实时系统和实时操作系统(RTOS)的区别至关重要,实时系统代表所有系统组成设备——硬件,操作系统和应用——它需要达到系统的要求,实时操作系统(RTOS)只是整个实时系统的一个组成部分,它必须提供足够的功能以确保整个实时系统达到要求。 同样,搞清快速操作系统和实时操作系统之间区别,也很重要,对于一个RTOS虽然达到全面要求十分有用,但并不是它自己达到这种要求。Internet neusgronp cornp.realtime列举了作为一个实时操作系统,必须达到的要求: * OS(操作系统)必须是多线程和优先级之分。 * OS必须支持线程优先级。 * 一个优先级继承的系统必须存在。 * OS必须支持可预测的线程,同步发送机理。 另外,OS的行为必须是可预测的,这意味实时系统的开发者必须对系统中断级,系统调用和分时了如指掌: * 必须知道OS和设备驱动器的中数据匹配最大时间。 * 设备驱动器用来处理一个中断最大时间和关于这些驱动器的中断申请信息必须清楚。 * 中断响应(从中断到运行时间),必须可预测并满足功能要求。 每次系统调用时间必须可以预测,并且独立于系统的对象数目。本篇论文论述了微软Windows CE 操作系统是如何达到一个实时系统的要求,更有意义的是,Windows CE 保证一个时间的上限,它在收到中断后开始一个实时的优先级线程。本论文论述了对特定参考平台的中数据响应时间,参考为有Hinathi SH3 的微处理器的“Odo”平台。

技术讲解:嵌入式智能人机界面与PLC的通讯

技术讲解:嵌入式智能人机界面与PLC的通讯 1、引言近年来,嵌入式一词越来越多的被人们提及,嵌入式产品被应用到各行各业。与嵌入式相关的技术如嵌入式产品,嵌入式系统的研究等也被列为十五家发展的重点方向。 嵌入式系统(Embedded System)被定义为:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 随着工业自动化的发展,基于PLC,单片机等设备的自动化系统,自动化设备越来越普及,几乎遍布所有自动化领域,与之相应的人机交互系统也应运而生,并得到同步发展。基于嵌入式技术的工业人机界面是人机交互系统中一颗耀眼的明星。高可靠,寿命,体积小,高性能,多线程,多任务,强实时等特点使嵌入式工业人机界面越来越受到自动化系统集成商,自动化设备制造商的青睐。它能够理想,生动地显示PLC,单片机等工业设备上的数据信息,功能强大,使用方便。它作为PLC等控制设备的上端设备在用户和机器之间架设了一条桥梁。该产品目前广泛应用在工业自动化系统,医疗,金融等行业的自动化设备。 随着越来越多的工程项目采用了嵌入式人机界面,相应的,用户对与嵌入式硬件配套使用的监控系统(SupervisoryControlandDataAcquisiTIon,SCADA)等应用软件的需求也在增加。这也正是本文所要讨论的问题。这里讲的嵌入式监控系统,其硬件为嵌入式智能人机界面;其软件为嵌入式操作系统,另加自己开发的应用程序。本文后面主要介绍这个监控应用程序,重点介绍应用程序中通讯部分的实现原理。 当今,已发展有多种嵌入式操作系统,如Linux,VxWorks,WinCE等,完全可在其上开发出图文并茂、界面友好的应用,以满足监控系统的种种要求。只是由于嵌入式技术相对是一门新兴的领先技术,涉足的人相对还比较少,所以这样的应用目前还比较少。本文介绍的嵌入式监控系统算是一个实例吧。 2、系统组成我们所开发的这套嵌入式监控系统,上位机是沈阳鹭岛资讯科技有限公司开发的嵌入式智能工业控制人机界面(以下简称人机界面)。其嵌入式工业控制器是以

WinCE操作系统

WinCE操作系统 WinCE操作系统是通用型的嵌入式操作系统,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Windows CE的图形用户界面相当出色。它1996年开始发布Windows CE 1.0版本,2004年7月发布了Windows CE .NET 5.0版本,目前用得最多的是Windows CE .NET 4.2版本,其发展速度也是很快的,功能上自不必描述,它的主要应用领域有PDA市场、Pcket PC、Smartphone、工业控制、医疗等。 就WinCE来讲,你无法买到WinCE这个操作系统,你买到的是Platform Builder for https://www.wendangku.net/doc/5a2291785.html, 4.2的集成开发环境,我们也简称为PB,利用它你可以剪裁和定制出一个符合你自己需要的https://www.wendangku.net/doc/5a2291785.html, 4.2的操作系统,因此,我们说的操作系统实际上完全是由自己定制出来的,这就是嵌入式操作系统最大的特点。 Windows CE具有模块化、结构化和基于Win32应用程序接口和与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等)、使用同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。Windows CE并非是专为单一装置设计的,所以微软为旗下采用Windows CE作业系统的产品大致分为三条产品线,Pocket PC(掌上电脑)、Handheld PC(手持设备)及Auto PC。 WindowsCE版本主要有1.0、2.0、3.0、4.0、4.2、5.0 和6.0 WINCE1.0是一种基于Windows95的操作系统,其实就是单色的Windows95简化版本。技术支持、直接资助等手段聚集了大量合作厂商,使WinCE类的PDA 阵容越来越强大。 WinCE2.0不仅比CE1.0快的多,而且的彩色显示,又众多新型PDA采用新的WinCE2.0系统,大有取代Pilot的趋势,成为PDA操作系统新的标准。尽管CE2.0仍然要比Pilot的操作系统需要的空间要大的多,但它具有Windows的界面,会用PC的人小编估计没有多少人不会使用微软的操作系统。 WinCE3.0是微软的Windows Compact Edition,是一个通用版本,并不针对掌上产品,标准PC、家电和工控设备上也可以安装运行,但要做许多客户化工作,当然也可以做掌上电脑。WinCE3.0把Pocket Word和Pocket Excel等一些日常所需的办公软件的袖珍版装了进去Pocket PC,同时在娱乐方面的性能做很大的加强。 https://www.wendangku.net/doc/5a2291785.html,(即WinCE 4.0)是微软于2002年1月份推出的首个以.Net为名的操作系统,从名字上我们就可以知道它是微软的.net的一部分。https://www.wendangku.net/doc/5a2291785.html,是WinCE3.0的升级,同时还加入.Net Framework精简版,支持蓝牙和.Net应用程序开发。 https://www.wendangku.net/doc/5a2291785.html, 4.2是https://www.wendangku.net/doc/5a2291785.html, 4.0/4.1的升级版,对Windows CE先前版本的强大功能进行了进一步的扩充和丰富,基于其开发的设备将从这些微小但重要的变化中获得更好的性能和更强的Windows集成功能。微软在WinCE4.2版时曾提供开放源代码,不过只针对研究单位,而程序代码较少,为200万行。WinCE5.0在2004年5月份推出,微软宣布WinCE5.0扩大开放程序源代码。在这个开放源代码计划授权下,微软开放250万行源代码程序作为评估套件(evaluationkit)。凡是个人、厂商都可以下载这些源代码加以修改使用,未来厂商OEM时,则再依执行时期(Run-time)授权,支付Win CE5.0核心每台机器3美元的授权费用,这也是微软第一个提供商业用途衍生授权的操作系统。

WinCE中串口驱动及接口函数介绍

WinCE中串口驱动及接口函数介绍 串口驱动本身分为MDD层和PDD层。MDD层对上层的Device Manager提供了标准的流设备驱动接口(COM_***),PDD层实现了HWOBJ结构及结构中若干针对于串口硬件操作的函数指针,这些函数指针将指向PDD层中的串口操作函数。DDSI是指MDD层与PDD层的接口,在串口驱动中实际上就是指HWOBJ,PDD层会传给MDD层一个HWOBJ结构的指针,这样MDD层就可以调用PDD层的函数来操作串口。 微软针对于串口驱动提供了参考源代码,可以在下面的目录下找到:”\WINCE600\PUBLIC\COMMON\OAK\DRIVERS\SERIAL”。 串口驱动的结构也就是这样了,下面介绍相关的驱动中的接口。 1. HWOBJ结构 在串口驱动中,HWOBJ结构中的函数实现了对串口硬件的操作,并在MDD层被调用。可以说,该结构描述了串口设备的所有特性,先来介绍一下该结构,具体定义如下: typedef struct __HWOBJ { ULONG BindFlags; DWORD dwIntID; PHW_VTBL pFuncTbl; } HWOBJ, *PHWOBJ; BindFlags:用于控制MDD层如何来处理IST,具体值如下: THREAD_IN_PDD:MDD层不处理,中断在PDD层处理。 THREAD_AT_INIT:在驱动初始化的时候,MDD层启动IST。 THREAD_AT_OPEN:在驱动被Open的时候,MDD层启动IST。 dwInitID:系统的中断号 pFuncTbl:指向一个PHW_VTBL结构,该结构中包含一个函数指针列表,这些函数指针指向串口硬件操作函数,用于操作串口。 view plaincopy to clipboardprint? typedef struct __HW_VTBL { PVOID (*HWInit)(ULONG Identifier, PVOID pMDDContext); ULONG (*HWDeinit)(PVOID pHead); BOOL (*HWOpen)(PVOID pHead);

Wince6.0驱动开发

Wince6.0驱动开发 (1) 在WINCE600\PLATFORM\LPC32XX \SRC\DRIVERS目录下新建一个目录MyDriver. (2) 在MyDriver目录下新建5个文件。 a) MyDriver.c 实现流接口函数的具体代码。 b) MyDriver.h 为MyDriver.h的头文件。 c) MyDriver.def 定义导出的函数名称。 d) makefile 与其它驱动的相同,不用改。 e) sources 链接和编绎文件。 (3) 前缀定义为MYD (4)文件内容完成后,在平台的“解决方案”的界面下,寻找FLATFORM\LPC32XX\src\drivers\MyDriver,然后单击鼠标右键,在弹出的菜单中选择“Build”,开始编绎驱动,完成后,在WINCE600\PLATFORM\LPC321XX\target\ARMV4I\retail下可找到MyDriver.dll. (5) 驱动加载的方法:手动,自动。 这里介绍自动加载的方法: a) 在MyDriver目录的位置找到dirs文件,在该文件中插入一行mydriver (都为小写),并在上一行后加“\”。 b) 在平台的“解决方案”的界面下,寻找FLATFORM\LPC32XX\Parameter Files\platform.bib.打开此文件,在相关位置添加mydriver(_FLATRELEASEDIR)\mydriver.dll NK SHK SHK指明该文件的属性,S—系统文件,H—隐藏文件,K—在内核中的位置固定。 c) 在Platform.req文件中相关位置添加程序如下: ;MyDriver [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MYD] “Prefix”=”MYD”

嵌入式组态王Wince运行环境的安装与演示过程

嵌入式组态王在Wince 平台下的安装与演示过程 陕西威蓝工业自动化有限公司 2011.07.20

1.前期准备工作: (1)注册MSCOMM32.OCX控件: 打开组态王使用说明文档,把MSCOMM32.OCX控件拷贝到PC计算机的C 盘目录下,再打开开始运行cmd,进入命令环境 在C:\Documents and Settings\su>下编辑cd .. 直至切换到C:\> ,如下图

然后,编辑regsvr32 MSCOMM32.OCX,注册成功,如下图所示: (2)串口选择 RS232模块插入计算机后,在计算机设备管理器里确认端口,本例子使用串口5,如下图所示: 打开组态王使用说明文档里kingview com.exe可执行文件,在串口设置中选

择COM5,并点击“请选择串口”打开串口,如下图所示: (3)板子连线说明: 电源接直流5V电源,鼠标和USB线接USB2口(注意USB线上的三角箭头端与板子USB2三角箭头端对应),串口线接板子的COM1口(串口线三角箭头端靠网口那端),具体接法如下图所示:

2.安装组态王嵌入版运行系统: 第一步:将安装有组态王嵌入版开发系统的PC机和嵌入式系统连接在同一个局域网的同一个网段中。(如果采用网线直接将PC机和嵌入式系统设备连接的话,需要使用交叉网线)。 第二步:上电启动预先安装在系统上的WinCE系统,设置WinCE上的网络和拨号连接,给这个设备分配一个IP地址。 第三步:在嵌入式平台NandFlash目录下,建立一个文件夹kingview。 第三步:在PC机下将组态王嵌入版安装目录的ARMV4文件夹里面的全部内容(除了Driver文件夹)拷贝到U盘,再将此内容全部拷贝到嵌入式平台新建的kingview目录,同时在kingview目录下新建一个文件夹project。 第四步:在kingview目录下打开KV_FTP_SERVER.EXE,此时该界面显示IP地址: 如192.168.1.82

开发wince驱动步骤

开发wince驱动步骤: software:VS20005+wince6.0+BSP hardware:AT91SAM9261开发板(MCUZONE)1在vs2005新建一个驱动工程DemoDrv。

2编写好所有DemoDrv的源文件,例如“.cpp”or“.c”or“.REG”文件,特别注意source文件编写,然后单独编译DemoDrv看有无错误,这样避免全部编译NK导致时间太久。然后立即看到编译结果。若编译成功,会在$:\WINCE600\PLATFORM\AT91SAM9261EK\target目录有相应的DemoDrv.dll文件。(在实现文件“.c”需添加串口抛出信息以便调试)在如图所示:

3在目录$:\WINCE600\PLATFORM\AT91SAM9261EK\FILES找到配置文件:platform.reg 和platform.bib文件。 platform.bib文件添加: IF BSP_AT91SAM9261EK_DemoDrv DemoDrv.dll$(_FLATRELEASEDIR)\DemoDrv.dll NK SHK ENDIF BSP_AT91SAM9261EK_LED platform.reg文件添加: IF BSP_AT91SAM9261EK_DemoDrv #include"$(_TARGETPLATROOT)\SRC\DRIVERS\DemoDrv\DemoDrv.reg" ENDIF BSP_AT91SAM9261EK_LED 添加后分别保存。 4在$:\WINCE600\PLATFORM\AT91SAM9261EK\CATALOG目录下at91sam9261ek.PbcXml 文件打开: 添加文件: Item:ADENEO:BSP_AT91SAM9261EK_ DemoDrv Driver DemoDrv Driver for AT91SAM9261EK boards DemoDrv Driver for AT91SAM9261EK boards BspSpecific BSP_AT91SAM9261EK_DemoDrv Cpu:ARMV4I DemoDrv.dll Device Drivers\DemoDrv 保存文件 5新建NK工程文件或者手动方式更改之前NK工程文件,例如之前工程文件:E:\BSP\BSP\trunk\sample9261\Wince600\AT91SAM9261EK_ARMV4I\PBInitEnv.bat添加 set BSP_AT91SAM9261EK_DemoDrv=1

Lazarus实战开发之串口通信(WINCE-WIN32)

Lazarus实战开发之串口通信(WINCE/WIN32) Lazarus最吸引人的地方就是她的开发方式类似Delphi,支持超好用的RAD开发方式,并且最厉害的地方是她还支持多个平台,多个CPU,例如ARM9的WINCE。 本文要讲述的就是“如何使用LAZARUS开发Wince上的串口程序”,并且,本文的串口程序同时支持WINCE和WINXP系统,当然编译时要选择平台啦。WINCE与WINXP 在本文中的代码区别只是OpenPort(‘COM1:’,CBR_9600,8,NOPARITY,ONESTOPBIT);//wince用COM1:表示串口1;WINXP用COM1表示串口1. 一、建立一个可重用的类,文件名为CE_Series.pas: unit CE_Series; interface uses Windows,Classes, SysUtils, LResources, StdCtrls,ExtCtrls; type TCE_Series = class(TObject) private hComm: THandle; public Function OpenPort(Port:LPCWSTR;BaudRate,ByteSize,Parity,StopBits:integer):String; procedure Send(str:String); Function Receive():String; procedure ClosePort(); end; implementation //============================================================================== ================= // 语法格式:OpenPort(Port:LPCWSTR;BaudRate,ByteSize,Parity,StopBits:integer)// 实现功能:打开串口 // 参数:port,串口号;例如wince下为从COM1:,COM2:。..。.win32下为COM1,COM2.。..。.. ;其他略,顾名思义哈 // 返回值:错误信息 //============================================================================== ================= function TCE_Series.OpenPort(Port:LPCWSTR;BaudRate,ByteSize,Parity,StopBits:integer):String; var cc:TCOMMCONFIG; begin result:=‘’; hComm:=CreateFile(port, GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0); // 打开COM

Windows CE嵌入式系统程序开发

Windows CE嵌入式系统程序开发 《Windows CE嵌入式系统程序开发》 基本信息 作者:胡文冯剑姜海涛胡玥 丛书名:单片机与嵌入式丛书 出版社:机械工业出版社 ISBN:9787111419150 上架时间:2013-5-8 出版日期:2013 年5月 开本:16开 页码:471 版次:1-1 所属分类:计算机 > 计算机组织与体系结构 > 嵌入式计算机 内容简介 计算机书籍 《windows ce嵌入式系统程序开发(基于arm11)》主要分为3部分,包括软件篇、硬件篇和项目篇。软件篇着重讲解了windows ce体系结构、搭建windows embedded ce 6.0开发环境和windows ce应用程序开发;硬件篇重点讲解了s3c6410硬件体系结构、windows ce boot loader与oal开发,在windows embedded ce 6.0和visual studio 2005开发环境下,采用c++开发接口驱动程序;项目篇提供完整的综合应用项目的程序开发实例,详细介绍了开发过程和源代码。并且安排了丰富的实验内容与课后实践,让读者深刻理解和掌握嵌

入式系统开发的整个过程,了解底层驱动程序驱动硬件的原理和上层应用程序的设计方法。 《windows ce嵌入式系统程序开发(基于arm11)》内容丰富实用,层次清晰,叙述详尽,方便教学与自学。本书可作为高等院校计算机类、电子类和控制类等专业高年级本科生、研究生学习嵌入式windows ce程序开发的教材,也可作为全国大学生电子设计竞赛培训教材,以及工程技术人员进行嵌入式系统开发与应用的参考书。 目录 《windows ce嵌入式系统程序开发(基于arm11)》 前言 第一部分软件篇 第1章windows ce系统结构 / 2 1.1 windows embedded ce 6.0的体系结构 / 2 1.2 内存管理 / 7 1.2.1 内存结构 / 7 1.2.2 windows embedded ce 6.0虚拟内存模型 / 8 1.3 文件系统与存储管理 / 12 1.3.1 文件系统 / 12 1.3.2 注册表 / 14 1.3.3 存储管理器 / 16 1.4 进程与线程 / 19 1.4.1 windows ce进程 / 19 1.4.2 windows ce线程 / 21 1.4.3 线程调度 / 24 1.4.4 线程同步 / 26 1.4.5 进程间通信 / 30 1.5 中断处理 / 31 1.5.1 中断基本概念 / 31 .1.5.2 中断服务例程 / 33 1.5.3 中断服务线程 / 34 第2章搭建windows ce开发环境 / 36 2.1 安装visual studio 2005 / 36

WinCE流驱动程序设计概述

微 处 理 机 M I CROPROCESS ORS W inCE 流驱动程序设计概述 顾峥浩,王自强,聂文华 (南京大学电子科学与工程系,南京210093) 摘 要:介绍了W inCE 操作系统下流驱动的设计方法,并在I ntel 公司的DBPXA255开发板下提供了关于8位数码管LED 的设计实例。 关键词:W inCE;流驱动;DBPXA255中图分类号:TP316.7 文献标识码:B 文章编号:1002-2279(2007)03-0081-03 The D e s i gn o f S tream I n te rface D ri ve r fo r W i nC E G U Zheng -hao,WANG Zi -qiang,N I E W en -hua (D epart m ent of Electronics and Engineering,N anjing U niversity,N anjing 210093,China ) Abstract:This paper intr oduces the strea m interface driver of W inCE,and p resents a sa mp le driver f or the Hex LED s of I ntel ’s DBPXA255. Key words:W inCE;Strea m interface driver;DBPXA255 1 引 言 W inCE 是一款由微软公司推出的面向嵌入式 领域的操作系统,被广泛应用于手机、P DA 、平板电 脑以及各种工控领域中。由于嵌入式设备硬件平台的多样性,针对不同的硬件编写驱动程序,从而使W inCE 上层屏蔽底层硬件的多样性就显得尤为重 要。 W inCE 的驱动按类型分有四种,分别为本地驱动(Native device driver )、流驱动、US B 驱动和网络驱动。其中流驱动由于接口简单、支持硬件设备最多,因而最为常用。下面将结合DBPXA255开发板中流驱动的一个简单实例,详细说明其设计方法。 2 流驱动开发的基本知识 2.1 开发W inCE 驱动的基本工具 驱动程序属于板级支持包(BSP )开发的一部分,可以使用微软的Platfor m Builder 工具进行设计。该工具将驱动编译成动态库,并整合到CE 系统中去。如果成功,则会得到一个NK .bin 的文件,此文件即为按照你的硬件平台定制的内核镜像,将其下载到嵌入式设备中就可以运行W inCE 了。笔者使用的是其.Net 版本。2.2 DBPXA255开发板 PXA255是I ntel 公司推出的取代Str ong AR M S A1110的新一代嵌入式应用处理器,属于ar m 系 列,它拥有Thumb 压缩指令、64位长乘法指令、增强型DSP 指令等先进特性,并集成了众多的外部接口,支持L inux 、W inCE 、Pal m OS 、Sy mbian OS 等主流嵌入式操作系统。DBPXA255开发板基于该型处理器,添加了一些外设如触摸屏、声卡接口等,在嵌入式开发中有着广泛的应用。2.3 W inCE 设备驱动程序的加载 大部分W inCE 驱动程序在系统引导的时候被设备管理器加载,加载信息被放在注册表的特定子键中,一般被设定为“HKEY _LOCAL _MACH I N E \DR I V ERS\BuiltI n ”。例如音频设备(W ave Dev )的加载信息: [HKEY _LOCAL _MACH I N E \D rivers \BuiltI n \W ave Dev\] "Prefix"="WAV ""D ll"="wavedev .dll" "I ndex"=dword:1"O rder"=dword:0 Prefix 的值代表设备的前缀名,用于标识与特 定名称设备相关联的文件流访问接口,必须由三个大写字母组成。在这里它的值为WAV ,那么设备的打开、关闭例程就为WAV_Open 和WAV_Cl ose 。 “D ll ”的值代表该设备驱动程序所在的动态库的名称,这里系统将在“wavedev.dll"中查找对 作者简介:顾峥浩(1981-),男,江苏无锡人,硕士研究生,主研方向:W inCE 、L inux 下嵌入式开发及应用。收稿日期:2005-03-02   第3期 2007年6月     No .3 Jun .,2007

wince串口编程

https://www.wendangku.net/doc/5a2291785.html,中串口通信设计 摘要: 利用Evc开发Wince中的串口设计 关键字: WINCE、Evc、串口通信 作者 Tony §串口通信程序开发过程:几个概念: 1. 仿真器(Emulator):在开发平台上,模拟应用程序的运行环境(Run Environment),产生与目标机上运行程序同样的效果,就像在目标机上运行一样。在eMeded Micosoft Visual C++4.0上都带有仿真器,我们开发的软件不需要在特定的WinCE目标机上运行,只需要在仿真器上运行正确就可以了。当然,在目标机上更加能够看到想得到的效果。 2. 系统运行环境:主要是CPU系列,我们在产生WinCE的应用程序的时候,有一个选择,要求所选择的CPU架构与之相符,如果多选了,就有可能出如下错误:找不到vcxxx.exe文件。通常情况下,我们所用的Cpu都是X86系列,所以我们就选择X86和一个仿真器就可以了,如下图所示: 3. eMbeded VC++:专门用来做window ce上的应用程序的开发工具,作用等同于pc 机上window平台下的VC++。eMbeded VC++开发的程序不能在Win32平台下运行,VC++开发的程序不能在WinCE下运行。 L 串口测试软件的详细设计。采用面向对象的程序设计方法,把一些业务逻辑抽象出来,形成一些通用的类,方便移植与继承,同时也方便维护。类描述了一组有相同特性(数

据元素)和相同行为(函数)的对象。 在eMbded VC++集成环境中,选择File->New,然后选择Project,输入工程名称,单击OK,系统将会为我们生成一些代码及EVC的程序框架。如下图所示: 1) 串口操作的对象化 串口的操作,首先要打开串口才能操作,就是说首先要打开串口驱动,然后进行下一步的操作。在操作接收后,需要关闭串口,以释放内存。我们的串口软件驻留在电子盘上,通过PC104的串口,与单片机的串口进行通信。在不能确定单片机什么时候发送数据来得情况下,我们必须启动一个线程来监视串口,当有数据(主要是确定有一个8位的字符为标志)到达时,我们就写入缓存,保存下来。当然,我们也可以往串口写入数据,让单片机去处理,这个处理过程不是我们软件的任务,由单片机程序去处理。由此,我们抽象一个CPort的类来处理这些过程。 class CPort { public: CPort(); virtual ~CPort(); BOOL Open( int nPort);//, int nBaud); BOOL PortClose (void); BOOL SendData( const char *buffer, int size ); int ReadData(BYTE *data); BOOL m_bOpened; HANDLE m_hIDComDev; DWORD dwError;

用Labview开发WINCE应用程序

用Labview开发WINCE应用程序 概述 这几年安装Windows CE系统的单板电脑开始在工控行业里普及。用VS2005/VS2008开发Windows CE系统的应用程序可以像开发PC机的应用程序一样。现在我们还可以选择LabVIEW开发Windows CE系统的应用程序。这样我们就可以很容易开发出漂亮而且专业的界面。如仪表,波形显示等。Labview 2009安装和激活Touch Panel Module后即可支持Windows CE。推出的WINCE工业单板电脑系列有4.3寸,5.6寸,7寸,8寸,10.4寸,15寸均支持Labview开发。 图1 安装Windows CE系统的单板电脑 1.用Labview 2009开发WinCE应用程序 需要安装的工具包括了:USB驱动程序、Microsoft ActiveSync 同步软件、Labview 2009、和LabVIEW 2009 Touch Panel Module。随光盘附带有丰富的例子:串口、波形图等。 1.1.准备步骤 1.1.1.安装USB驱动程序 Wince 单板电脑首次与PC机(一般是桌面电脑)相连时,会提示需安装USB驱动程序。以后可跳过这步。将PC机与Wince 单板电脑通过USB口相连,当PC机提示发现新硬件时,找到附带光盘中的USB驱动文件夹中WINCE下面的wceusbsh 文件。 1.1. 2.安装工具软件步骤 1.Microsoft ActiveSync 4.2同步软件;

2.开发工具: ①安装Labview 2009开发系统平台; ②安装触摸屏面板模块(LabVIEW 2009 Touch Panel Module); 1.1.3.重点提示 以上工具安装完成后,当WinCE运行并与开发机通过USB 相连时,ActiveSync 会自动启动,要求建立合作关系,如下图 1.1: 图 1.1 按默认设置即可,完成后如下图 1.2所示: 图 1.2

相关文档