EVC应用程序实例分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第 6 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
EVC 应用程实例分析
杭州立宇泰电子有限公司编著(v1.0)
操作结束。
注意:ARMSYS2410 开发板上 CS8900 网络连接的 IP 地址必须设置为“通过 DHCP 获的 IP 地址”模式,
GetCommMask函数用于得到串口已经设置了的串口事件,参数hFile指定已经打开的串口句柄,参数 lpEvtMask用于存取得到的串口事件集。
SetCommMask函数的功能于GetCommMask函数相发,用于设置串口事件集。 WaitCommEvent函数用于等待预先设置的串口事件中的某一事件发生。参数lpEvtMask用于存储已经发 生的事件,参数lpOverlapped必须被设置为NULL,因为在CE中不支持重叠结构。

第 1 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
EVC 应用程序实例分析
杭州立宇泰电子有限公司编著(v1.0)
(3)语言设置为“英语”,其他保持默认。点“Next>”继续。
(4)保持默认值并点击“Next>”继续:
EVC 应用程序实例分析
杭州立宇泰电子有限公司编著(v1.0)
(2)选择 ARMSYS2410 作为激活的 Platform,并点击 OK:
1.3 编译并下载
(1)选择“Build”菜单下的“Rebuild All”,如下图所示:
这时系统将会交叉编译您的工程。
杭州立宇泰电子有限公司 网址:
EVC 应用程序实例分析
杭州立宇泰电子有限公司编著(v1.0)
HANDLE hFile, DWORD dwFlags); 参数hFile表示打开的串口句柄。 参数dwFlags表示操作类型,在CE下该参数有如下两种取值。 PURGE_TXCLEAR:清空发送缓冲区 PURGE_RXCLEAR:清空接收缓冲区 这两个值可以组合使用,表示同时执行清空发送缓冲和接收缓冲区的功能
3.7、清空串口缓冲区
WINCE提供了PurgeComm函数清空串口的发送缓冲区和接收缓冲区,PurgeComm函数的定义如下: BOOL PurgeComm(
杭州立宇泰电子有限公司 网址:

第 10 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
(6)继续保持默认值并点击“Finish”继续:
杭州立宇泰电子有限公司 网址:

第 3 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
EVC 应用程序实例分析
杭州立宇泰电子有限公司编著(v1.0)
杭州立宇泰电子有限公司 网址:

第 2 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
EVC 应用程序实例分析
杭州立宇泰电子有限公司编著(v1.0)
(5)保持默认值并点击“Next>”继续:
结果如下图所示:
1.2 与 SDK 关联
(1)选择“Build”菜单中的“Set Active Platform…”:
杭州立宇泰电子有限公司 网址:

第 4 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808

第 5 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
EVC 应用程序实例分析
杭州立宇泰电子有限公司编著(v1.0)
(2)如果编译成功,会有一个自动下载的过程,要求此时你连接好了 USB 线、同时激活了 ARMSYS2410 与 PC 机上 Microsoft ActiveSync 软件之间的同步连接。如果一切顺利,可以看到下载成功的显示:
EVC 应用程序实例分析
杭州立宇泰电子有限公司编著(v1.0)
EVC 应用程序实例分析
ARMSYS2410/2440 平台可以采用 EVC4.0 作为应用程序开发工具。本文档将就产品光盘中提供的几 个 EVC 实例程序代码进行讲解,帮助用户尽可能快速地了解 EVC 应用程序的编写方法。各个例子的源代 码和 EVC 工程文件。用户可以在光盘中的“evc 实例”目录中找到。
//指向COMSTAT,用于存储当前窗口的状态
);
结合上面的知识,来看看光盘中提供的串口代码
解压光盘中的SerialPort.rar本地磁盘,去掉只读属性,打开工程SerialPort.vcw,选择刚才装的SDK 编译环境,此时,如果开发板wince已经启动,并且和PC同步上了,那么执行build命令后,EVC就会自动 把编译成功的应用程序下载的开发板上。
EVC 应用程序实例分析
);
3.4、异步串口 I/O
杭州立宇泰电子有限公司编著(v1.0)
CE不支持重叠I/O操作,需要分别用单独的线程去读写串口,通过多线程的模拟重叠操作。同时,CE 提供了WaitCommEvent函数,该函数将阻塞线程,直到预先设置的串口事件中的某一事件发生。在使用串 口事件前,还需要了解如下三个函数:
EVC 应用程序实例分析
如,可以使用以下代码来关闭打开的串口: if(m_hComm!=INVALID_HANDLE_VALUE) { CloseHandle(m_hComm); m_hComm=INVALID_HANDLE_VALUE;
return TRUE; }
杭州立宇泰电子有限公司编著(v1.0)
(3)“Finished downloading”表示此时应用程序已经下载到 ARMSYS2410 开发板,打开 WinCE 中“我的 电脑”:
1.4 运行
(1)双击 EVCDEMO 图标,即可观察到程序运行状况:
杭州立宇泰电子有限公司 网址:


第 7 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
EVC 应用程序实例分析
使用”go”命令: 进行同步调试,如图:
杭州立宇泰电子有限公司编著(v1.0)
3.串口通讯实例
3.1、打开、关闭串口
在WINCE中,应用程序可以通过CreateFile函数来打开串口,下面的代码将调用CreateFile函数以读写
3.5、设置端口读写超时
在调用ReadFile和WriteFile函数从串口读取数据和写入数据时,WINCE提供了超时机制,也就是设置 了等待它们返回的时间长度。设置串口超时函数SetCommTimeouts的定义如下:
BOOL SetCommTimeouts( HANDLE hFile, //指向已经打开的句柄 LPCOMMTIMEOUTS lpCommTimeouts );
这些实例在 ARMSYS2410 平台和 ARMSYS2440 平台上都是可以使用的,为说明方便,我们以 ARMSYS2410 平台为例。
1. 在 Embedded Visual C++中建立应用程序
1.1 新建工程
(1)运行 Embedded Visual C++4.0 集成开发环境,建立一个新的工程。点击“File”菜单下的“New”,如 下图所示:
data,
length*sizeof(char),
&dwBytesWritten,
NULL
杭州立宇泰电子有限公司 网址:

第 9 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
3.3、读、写串口
可以使用ReadFile和WriteFile函数读取串口数据和向串口中写入数据。例如,可以用以下代码来读
写串口数据:
fReadState=ReadFile(
m_hComm,
data,
length,
&dwLength,
NULL
);
fWriteState=WriteFile(
m_hComm,
否则即使同步上也无法通过 EVC 下载应用程序到 WINCE 中。
2.利用 EVC 进行同步调试
能够成功地将程序下载到 ARMSYS2410 上之后,我们就可以进一步利用 EVC 环境调试(Debug)这 个程序。
如下图所示,在程序中设置一个断点,如图:
杭州立宇泰电子有限公司 网址:www.hzlitai.
打开串口后,串口就已经被独占了,当我们不使用该串口时,应该使用CloseHandle函数来关闭它。例
杭州立宇泰电子有限公司 网址:

第 8 页 共 72 页
电话:0571-56763523 56763526 传真:0571-56763523-808
BOOL GetCommMask(HANDLE hFile,LPDWORD lpEvtMask); BOOL SetCommMask(HANDLE hFile,DWORD dwEvtMask); BOOL WaitCommEvent( HANDLE hFile, LPDWORD lpEvtMask, LPOVERLAPPED lpOverlapped );
3.2、配置串口
在使用串口前,必须配置好串口的波特率、奇偶校验和数据位等参数。CE提供了GetCommState和 SetCommState函数,分别用于获取串口的当前参数和设置串口的参数,他们的定义如下:
BOOL GetCommState( HANDLE hFile, LPDCB lpDCB);
BOOL SetCommState( HANDLE hFile, LPDCB lpDCB); 这两个函数都包含了相同的参数,其中参数hFile是输入参数,指向已打开的句柄,参数 lpDCB指向 DCB结构的指针,在GetCommState函数中,它属于输出函数,在SetCommState函数中,它属于输入函数。
的方式打开串口:
m_hComm=CreateFile(
Port,
//设备名
GENERIC_READ|GENERIC_WRITE, //允许读写
0,
//独占
0,
OPEN_EXISTING,
//打开而不是创建
0,
0
);
如果打开串口成功,将返回打开串口的句柄,否则将返回INVALID_HANDLE_VALUE.
3.8、清除错误并查询状态
WINCE还提供了一个非常有用的函数ClearCommError,用于清除驱动程序产生的任何错误状态并返回
窗口状态,该函数定义如下:
BOOL ClearCommError(
HANDLE hFile,
//已经打开的句柄
LPDWORD lpErrors, //发生的错误码
LPCOMSTAT lpStat
(2)新建对话框中选择“Project”标签页,选中“WCE MFC AppWizard(exe)”项目,并在 Project name: 后输入工程名称,在 Location:中设置工程所在路径。在 CPUs 栏目中选择“Win32(WCE ARMV4I)” 点击 OK 按钮继续。
杭州立宇泰电子有限公司 网址:
3.6、控制串口
WINCE提供SetCommBreak函数,用于停止传输字符并将串口置于中断状态:还提供了ClearCommBreak, 用于重新传输字符。SetCommBreak和ClearCommBreak函数的定义如下:
BOOL SetCommBreak(HANDLE hFile); BOOL ClearCommBreak(HANDLE hFile) 以上两个函数都只有唯一的入口函数hFile,表示已经打开的串口的句柄。
相关文档
最新文档