付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MiniARMDate:产 RS232、摘 MiniARMDate:产 RS232、摘 MiniARM修订历iMiniARM修订历iMiniARM目录概包文件组MiniARM目录概包文件组包接口说明及使用方包应用举1MiniARM概MINIARM M3350Windows Embedded CE动程序,用户可以直接使用 Windows Embedded CE 的 API CreateFile()、CloseHandle()m()等函数。但直接使用 API 函API的包的名称为epcSerial。包是在Windows EmbeddedMiniARM概MINIARM M3350Windows Em
2、bedded CE动程序,用户可以直接使用 Windows Embedded CE 的 API CreateFile()、CloseHandle()m()等函数。但直接使用 API 函API的包的名称为epcSerial。包是在Windows Embedded CE的数据收发等功能,并且支持异步接收(即线程接收)方式。1.1 包文件组31.11.1 (1) (2) epcSerial.dll epcSerial.dll(3) 和应用程序(exe文件)1MiniARM包接口说明及使用方用户在使用包编写程序时,只需要包含epcSerial.h MiniARM包接口说明及使用方用户在使用包编写程序时
3、,只需要包含epcSerial.h 3epcSerialOpen()、epcSerialOpen1()、 按默认值设置(默认设置为 8 位数据位,1 ) 2epcSerialOpen1(UCHAR UCHAR UCHAR ucDataBit,UCHAR it,UCHAR epcSerialOpen(UCHAR ucPort, UCHAR ucBaudRate串口正在使用(请先关闭串口,然后再打开) 和if ( epcSerialOpen(COM1BAUD115200COM_OK MessageBox (_T(打开COM1 成功.); else MessageBox (_T(打开COM1 失败M
4、iniARM 3epcSerialOpen2(UCHAR UCHAR UCHAR ucDataBit, UCHAR ucStit,UCHAR ucParity, UCHARMiniARM 3epcSerialOpen2(UCHAR UCHAR UCHAR ucDataBit, UCHAR ucStit,UCHAR ucParity, UCHAR ucDTRShake, UCHAR ucRTSShake);,取值参考表1.5 ucBaudRate: 波特率,取值参考表1.5 数据位,取值参考表1.5 停止位,取值参考表1.5 校验位,取值参考表1.5 ucDTRShake:DTR值参考表值参考表
5、ucPort: 串 ,取值参考表1.5 ucDataBit: 数据位,取值参考表1.5 ucSt it: 停止位,取值参考表ucParity: 串口正在使用(请先关闭串口,然后再打开) 和if (epcSerialOpen1(COM1,BAUD115200,DATA_BIT8,STOP_BIT1, PAR_NONE) = COM_OK) MessageBox (_T(打开COM1 成功 else MessageBox (_T(打开COM1 失败MiniARM使用epcSerialOpen()、epcSerialOpen1()和epcSerialOpen2()接口函数时,各参数的取值4取值(标识
6、符MiniARM使用epcSerialOpen()、epcSerialOpen1()和epcSerialOpen2()接口函数时,各参数的取值4取值(标识符300Bps600Bps1200Bps2400Bps串口正在使用(请先关闭串口,然后再打开) 和if (epcSerialOpen2(COM1,BAUD115200,DATA_BIT8,STOP_BIT1,PAR_NONE, DTR_DISABLE, RTS_DISABLE) = COM_OK) MessageBox (_T(打开COM1 成功 else MessageBox (_T(打开COM1 失败MiniARM54800Bps9600
7、Bps14400Bps19200Bps38400Bps56000Bps57600Bps5678MiniARM54800Bps9600Bps14400Bps19200Bps38400Bps56000Bps57600Bps567811.52DTR置为DTR允许 DTR“握手RTS 置为RTS 置为当接收缓冲区数据小于半满时 RTS为ON,当接收缓冲区数据超RTS 为OFFRTS 恢复为OFFMiniARMepcSerialClose 6BOOL ucPort, BYTE DWORD MiniARMepcSerialClose 6BOOL ucPort, BYTE DWORD *pucSendBuf
8、:待发送数据缓冲区指针(TRUE: 发送成功FALSE(参数错误或串口没打开和/* 打开串口if (epcSerialSendData (COM1, m_sbuf, 100) ) MessageBox (_T(数据发送成功 else MessageBox (_T(数据发送失败BOOL epcSerialClose(UCHAR ,取值参考表TRUE: 关闭成功FALSE(串口尚未打开,所以不能关闭和退出应用程序前,必须要调用此函数关闭已打/* 打开串口,进行数据发送或接收if (epcSerialClose(COM1) ) MessageBox (_T(关闭COM1 成功 else Messag
9、eBox (_T(关闭COM1 失败MiniARM read7BOOL epcSerialRcvDaread(UCHAR ucPort, DWORD dwLength, DWORD dwOutTime,MiniARM read7BOOL epcSerialRcvDaread(UCHAR ucPort, DWORD dwLength, DWORD dwOutTime,(线程方式,取值参考表一次接收数据的个数 (最大为1024) dwOutTime: 接收超时时间控制为mS,最小为10)Rcv: (参数错误、串口没有打开或串口接收线程已建立过DWORD epcSerialRcvData(UCHAR
10、 ucPort, BYTE DWORD dwLength, DWORD dwOutTime, (阻塞方式DWORD 接收的数据个数(最大为DWORD 接收超时时间控为mS,最小为为TRUE 先清除串口接收缓冲区(再重新接收数据FLASE(超时时间计算: 字符间隔超过dwOutTime或总时间超过dwOutTime1*dwLength/* 打开串口if (epcSerialRcvData (COM1, m_rbuf, 10, 500, TRUE) = 10) /* 数据处 else MessageBox (_T(没有接收到10 字节数据MiniARM 1.11 8DWORD 获取包版本无DWOR
11、D epcSerialRxClear(UCHAR MiniARM 1.11 8DWORD 获取包版本无DWORD epcSerialRxClear(UCHAR ,取值参考表(参数错误、串口没有打开和无/* 打开串口if (epcSerialRxClear (COM1) MessageBox (_T(清除串口接收缓冲区成功 else MessageBox (_T(清除串口接收缓冲区失败和本函数会建立一个线程接收数据,接收到数据后回Rcv()以进行处理只有调用 epcSerialRcvData()或 epcSerialClose()函数,才会关闭接收线/* 定义串口接收回调函void CALLBA
12、CK CUART1Dlg:ChgStrDisp(CUART1Dlg BYTE *buf, DWORD len) /* 从buflen个数据,然后通过p_dlg指针向窗口输出显示 /* 打开串If (epcSerialRcvDaread (COM1, 100, 100, (RCV)ChgStrDispthis MiniARMVS2008MFCepcSerial.h、epcSerial.lib(P(C)epcSerial.lib(4) 编写程序代码MiniARMVS2008MFCepcSerial.h、epcSerial.lib(P(C)epcSerial.lib(4) 编写程序代码,并包含epc
13、Serial.h头文件。比如,在UART_EX1Dlg.h“#includeepcSerial.h 生成解决方案,生成最终的可执行文件将生成的可执行文件(exe)epcSerial.dll 文件包应用举为了使用户能更好地使用包编写自己的应用程序,下面进行举例说明应用例程 1线程接收方read()接口函数。在本例程中,用户入要发送的数据,然后单击“发送数据”按钮进行数据发送;串口数据接收则由 epcSerial(1) VS2008MFC框工程 UART_EX1(2) 将包的epcSerial.h、epcSerial.lib到应用工程的目录下,如图9返回当包版本号(返回 0 x100,表示 V1.
14、00;返回 0 x110,表示和无 /* 获取包版本号 MiniARM(3) 设置 (P,MiniARM(3) 设置 (P,(C)epcSerial.lib1.3 在UART_EX1Dlg.h文件中包含epcSerial.h头文件,如程程1.1 包含MiniARM框如图 1.4所示,相应控制的属性如表 1.12所示1.4 UART_EX1UART_EX1 工程的各控件属性列静态文本(S MiniARM框如图 1.4所示,相应控制的属性如表 1.12所示1.4 UART_EX1UART_EX1 工程的各控件属性列静态文本(S ic静态文本(S ic波特率静态文本(S ic数据位静态文本(S ic
15、停止位静态文本(S ic校验位静态文本(S ic下拉列表框(Combo下拉列表框(Combo下拉列表框(Combo#if_MSC_VER=#pragma/_MSC_VER=#include classCUART_EX1Dlg:publicMiniARM(6) 为True,选择Sort为False1.5 UART_EX1(7) 按照的方法,分别BO_BAUDBO_DATA 、BO_PARITY 控MiniARM(6) 为True,选择Sort为False1.5 UART_EX1(7) 按照的方法,分别BO_BAUDBO_DATA 、BO_PARITY 控件属性设VerticalScrollbar
16、TrueSort为FalseData(8) 1.13所示下拉列表框(Combo下拉列表框(Combo组编辑框(Edit编辑框(Edit按钮按钮按钮按钮MiniARM1.13 UART_EX1(9) 在VS20081.14 (10)编框的IDC_EDIT_RCV(接收区)和IDC_EDIT_SEND(发送区)两个编辑框1.6 IDC_EDIT_RCVMiniARM1.13 UART_EX1(9) 在VS20081.14 (10)编框的IDC_EDIT_RCV(接收区)和IDC_EDIT_SEND(发送区)两个编辑框1.6 IDC_EDIT_RCVMiniARM1.7 IDC_EDIT_SEND
17、将会出现项目中的所有消息列表,如 图 1.8 所示。在消息列表中选择WM_DESTROY,MiniARM1.7 IDC_EDIT_SEND 将会出现项目中的所有消息列表,如 图 1.8 所示。在消息列表中选择WM_DESTROY,最后点击如图 1.9所示的弹出按钮,这样就为个MiniARM1.9 框增加WM_DESTROY MiniARM1.9 框增加WM_DESTROY 编辑窗口自动定位到OnInitDialog()函数处,修改OnInitDialog()函数代码,另外还要添加一No,用于保存当前使用的程UART_EX1 当前使用的变 s ic UCHARNo = 0;*Function*框
18、初始化代码*input*output*ReturnedBOOL CUART_EX1Dlg:OnInitDialog()/Settheiconforthisdialog. Theframeworkdoesthis/ when the applications main window is not a dialog SetIcon(m_hIcon, TRUE);/Setbigicon /Setsmall/centertothehpcMiniARM(12) 右键单击“打开端口”按钮选择“添加事件处理程序入“MiniARM(12) 右键单击“打开端口”按钮选择“添加事件处理程序入“函数处理 程序调用控
19、件的GetCurSel() 函数取得当前串口设置值,并通过GenPortTbl、GenBaudTbl包所能识别的参数值,最后使用epcSerialOpen1()接口数打开串口。正确打开串口后,使用read()接口函数建立接收线程,指串口接收回调函数为uartChgStrDisp(),用户参数为当前对象this指针UART_EX1 的“打开端口”按钮单击事件代const UCHAR GenPortTbl4= COM1, COM2, COM4, COM5;const UCHAR GenBaudTbl6= BAUD4800, BAUD9600, BAUD19200, BAUD38400, const
20、 UCHAR GenDa=DATA_BIT5,DATA_BIT6,DATA_BIT7,DATA_BIT8;/* 默认选用/* 默认选择115200波特/* 默认选择8位数据/* 默认选择1位停止/* 默认选择无奇偶校验returnMiniARMconst UCHAR GenStopTbl3= STOP_BIT1, STOP_BIT1_5, STOP_BIT2;MiniARMconst UCHAR GenStopTbl3= STOP_BIT1, STOP_BIT1_5, STOP_BIT2;const UCHAR GenParityTbl5= PAR_NONE, PAR_ODD, PAR_EVE
21、N, PAR_MARK, *Function*先取得串口设置参数,然后打开串口,若出错提示*input*output*Returnedvoid CUART_EX1Dlg:OnBtnOpenport()/TODO:Addyourcontrolnotificationhandlercodehere UCHAR ucData; UCHAR ucStop; UCHAR * UpdateDa = GenPortTbl= GenBaudTbl= GenDa= GenStopTbl= MiniARM(13) 串口接收回调函数uartChgStrDisp()需要手工在UART_EX1Dlg.cpp文件中添加,
22、且要在它MiniARM(13) 串口接收回调函数uartChgStrDisp()需要手工在UART_EX1Dlg.cpp文件中添加,且要在它是CUART_EX1Dlg类的一个方法代码分别如程1.5所示。UartChgStrDisp()函数首先进入临界区状态,防止主线程同时操作窗口示;接着从pucBuf串口接收到的字符,并转换为Unicode编码格式;后添加到m_strRcv变量中去,再调用SetWindowText显示接收到的字符;最后,退出临界区程class CUART_EX1Dlg:publicif ( epcSerialOpen1(NoucBauducDataucStopucParity
23、) != COM_OK /* 若打开串口失败,则直接返if ( !epcSerialRcvDaNo, 100, 100, (RCV)uartChgStrDispthis) ) 设置打开端口关闭端口pcbtnOpenClose=(CButton*)GetDlgItem(IDC_BTN_OPENPORT); pcbtnOpenClose=(CButton*)GetDlgItem(IDC_BTN_CLOSEPORT); MiniARM*Function*MiniARM*Function*input调用*output*ReturnedvoidCALLBACK CUART_EX1Dlg:uartChgS
24、trDisp(CUART_EX1Dlg *pDlg,BYTE *pucBuf, DWORD /* 初始化临界区对/* 进入临界 /* 取得控件指for(i=0;im_strRcv += strTmp;/Implemen ion s icvoidCALLBACK uartChgStrDisp(CUART_EX1Dlg *pDlg,BYTE DWORD MiniARM(14) 添加“关闭端口”按钮单击事件代码,如程序epcSerialClose()接口MiniARM(14) 添加“关闭端口”按钮单击事件代码,如程序epcSerialClose()接口函数来关闭串口及串口接收线程1.6所示。程序直接
25、调用程UART_EX1 的“关闭端口”按钮单击事件代(15) 发送数据按钮单击事件代码如程*Function*input*output*Returnedvoid CUART_EX1Dlg:OnBtnCloseport()/TODO:Addyourcontrolnotificationhandlercodehere 设置打开端口关闭端口pcbtnOpenClose=(CButton*)GetDlgItem(IDC_BTN_OPENPORT); pcbtnOpenClose=(CButton*)GetDlgItem(IDC_BTN_CLOSEPORT); /* 显示在窗口/* 退出临界临界区对象资
26、MiniARM函数取得要发送的数据(通过m_strSend变量实现MiniARM函数取得要发送的数据(通过m_strSend变量实现),然后将数据转换为ASCII码(据),最后调用epcSerialSendData()接口函数来发送数据UART_EX1 的“发送数据”按钮单击事件代*Function*input*output*Returnedvoid CUART_EX1Dlg:OnBtnSend()/TODO:Addyourcontrolnotificationhandlercodehere dwLen=m_strSend.GetLength(); if (dwLen 80) dwLen=/*
27、 最多80个字转换为ASCIIfor(i=0;idwLen;i+)ucSendBufi=(char)if( No,ucSendBuf,dwLen)MiniARM(16) 添加“清除接收区”按钮单击事件代码,如程区状态,防止MiniARM(16) 添加“清除接收区”按钮单击事件代码,如程区状态,防止串口接收线程同时操作窗口显示;接着将m_strRcv变量赋值空字符串,然后用UpdateData()函数来更新窗口显示,即实现接收区的清除;最后,退出临界区,函数返回UART_EX1 的“清除接收区”按钮单击事件代(17) 在UART_EX1Dlg.cpp文件中,找到OnDestroy()函数定义,添
28、加关闭串口的代码(用epcSerialClose()接口函数实现),如程1.9 UART_EX1*Function*框关闭处理*Function*清空接收区中的字符串*input*output*Returnedvoid CUART_EX1Dlg:OnBtnClrrcv()/TODO:Addyourcontrolnotificationhandlercodehere CRITICAL_SECTION csDisp;/* 初始化临界区对/* 进入临界m_strRcv = _T(); /* 退出临界临界区对象资AfxMessageBox_T(数据发送失败MiniARM(18) 保存所有文件,点击生成
29、生成解决方案后,将会在工程目录下的 M3350(ARMV4I)ReleaseMiniARM(18) 保存所有文件,点击生成生成解决方案后,将会在工程目录下的 M3350(ARMV4I)Release 子目录中产生可执行文件 UART_EX1.exe(19) 将UART_EX1.exe和1.10 UART_EX1 *input*output*Returnedvoid CUART_EX1Dlg:OnDestroy()/TODO:Addyourmessagehandlercode/* 关闭串MiniARM1.11 UART_EX1PC应用例程 2查询接收方本例程主要演示了如何使用 包的阻塞方式来接收
30、串口数据(即使用epcSeralcvData()MiniARM1.11 UART_EX1PC应用例程 2查询接收方本例程主要演示了如何使用 包的阻塞方式来接收串口数据(即使用epcSeralcvData()接口函数。在本例程中,用户可通过下拉列表框选择通信的串口、波特率、数据位、停止位和校验位等参数;单击“打开端口”即可打开串口,单击“通信检测”onln?则提示通信检测成功,否则提示通信检测失败。(1) 参考本节应用例程1 的操作步骤及相关设置,使用VS2008 建立一个基于MFC 智框工程UART_EX2。(2) 将包的epcSerial.h、epcSerial.lib文件到应用工程的目录下
31、,在 (P (C) epcSerial.lib(3) UART_EX2Dlg.hepcSerial.h (4) 编辑UART_EX2框如图 1.12所示通信检测按钮的ID为1MiniARM1.12 UART_EX2给框的一些控件(“设置”框内的控件)1 框关闭处理函数MiniARM1.12 UART_EX2给框的一些控件(“设置”框内的控件)1 框关闭处理函数 OnDestory()修改OnInitDialog()No,用于保存当前使UART_EX2 当前使用的变 s ic UCHARNo = 0;*Function*框初始化代码*input*output*ReturnedBOOL CUART
32、_EX2Dlg:OnInitDialog()/Settheiconforthisdialog. Theframeworkdoesthis/ whentheapplicationsmainwindowisnotaMiniARM(8) 右键单击“打开端口”按钮选择“添加事件处理程序函MiniARM(8) 右键单击“打开端口”按钮选择“添加事件处理程序函数处理 程序控件的GetCurSel()函数取得当前串口设置值,并通过GenPortTbl、GenBaudTbl、等表转换为包所能识别的参数值,最后使用epcSerialOpen2()接口函数UART_EX2 的“打开端口”按钮单击事件代const
33、UCHAR GenPortTbl4= COM1, COM2, COM4, COM5;const UCHAR GenBaudTbl6= BAUD4800, BAUD9600, BAUD19200, BAUD38400, /Setbig /Setsmall/centertothehpc/TODO:Addextrainitialization/* 默认选用/* 默认选择115200波特/* 默认选择8位数据/* 默认选择1位停止/* 默认选择无奇偶校验returnMiniARMconst UCHAR GenDaMiniARMconst UCHAR GenDa=DATA_BIT5,DATA_BIT6,
34、DATA_BIT7,DATA_BIT8;const UCHAR GenStopTbl3= STOP_BIT1, STOP_BIT1_5, STOP_BIT2;const UCHAR GenParityTbl5= PAR_NONE, PAR_ODD, PAR_EVEN, PAR_MARK, *Function*先取得串口设置参数,然后打开串口,若出错提示*input*output*Returnedvoid CUART_EX2Dlg:OnBtnOpenport()/TODO:Addyourcontrolnotificationhandlercodehere UCHAR ucData; UCHAR
35、ucStop; UCHAR * MiniARM(9) 添加“关闭端口”按钮单击事件代码,如程序epcSerialClose()接口函数来关闭串口及串MiniARM(9) 添加“关闭端口”按钮单击事件代码,如程序epcSerialClose()接口函数来关闭串口及串口接收线程1.12所示。程序直接调用程1.12 “关闭端口”按钮单击事件代*Function*input*output*ReturnedNo = GenPortTbl= GenBaudTbl= GenDa= GenStopTblucParity = GenParityTblIf( No,ucBaud,ucData,ucStop,DTR_DISABLE,RTS_DISABLE) !=COM_OK) AfxMessageBox(_T(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中小企业加密通信技术选型与应用指南报告
- 算力优化智能制造生产线分析报告
- 2026年及未来5年市场数据中国户外电子屏广告行业发展监测及投资战略数据分析研究报告
- 体育课运动负荷控制2025年秋季考试试题
- 2026湖南第一师范学院招聘非事业编制人员3人备考题库完整答案详解
- 2026福建泉州市第一医院编外人员招聘9人备考题库(一)附答案详解(满分必刷)
- 2026广东深圳武宣县中医医院招聘编外聘用人员4人备考题库(第一期)及答案详解参考
- 2026广东佛山市顺德区公立医院招聘高层次人才48人备考题库附答案详解(夺分金卷)
- 招40人!互助县公开招聘乡镇社会救助经办服务人员备考题库含答案详解(模拟题)
- 2026福建福州市船政幼儿园教师招聘1人备考题库及答案详解(有一套)
- 人教版五年级数学下册 7 折线统计图 第1课时 单式折线统计图(教学课件)
- 重庆市中考物理真题试题(A卷含解析)
- 2024年中核工程集团招聘笔试参考题库含答案解析
- 汉代典客、大行、鸿寐考述
- 中国特色社会主义思想概论 课件 第四章 坚持以人民为中心
- Unit3FoodPartA(教学设计)闽教版英语三年级下册
- 2022-2023学年天津市南开区七年级(下)期中英语试卷-普通用卷
- Q-SY 08839-2021 专职消防队建设管理规范
- GB/T 17214.4-2005工业过程测量和控制装置的工作条件第4部分:腐蚀和侵蚀影响
- 第六章-德国古典文论-(《西方文学理论》课件)
- 国家开放大学《中国文学基础#》形考任务1-4参考答案
评论
0/150
提交评论