今天学习了wince下的串口通讯实验。现小结如下:
1。设备文件名:设备文件名前缀由3个大写字母组成,用来标识与特殊流接口驱动程序相对应的特殊设备文件名。文件名前缀存储在注册表的相应驱动程序的键值中。如COM(串行驱动程序)、ACM(音频压缩管理器)等。
2。访问设备驱动方法:通过CreateFile、ReadFile、 WriteFile、 DeviceIoControl等函数访问。
3。串口通讯实现过程:
1)打开串行端口:HANDLE hCom = CreateFile(L"COM1:", GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);//注意加冒号!!!!
2)设置DCB:
int InitDCB(HANDLE hPort)
{
DCB PortDCB;//DCB串口参数结构
PortDCB.DCBlength = sizeof(DCB);
GetCommState(hPort,&PortDCB);
PortDCB.BaudRate = 9600;//波特率
PortDCB.ByteSize = 8; //数据位
PortDCB.Parity = NOPARITY; //校验位
PortDCB.StopBits = ONESTOPBIT; //停止位
return SetCommState (hPort, &PortDCB);
}
3)为指定的串口设置响应延时时间参数:
int InitCommTimeouts(HANDLE hPort)
{
COMMTIMEOUTS CommTimeouts;//时间参数
GetCommTimeouts (hPort, &CommTimeouts);//取得时间参数
CommTimeouts.ReadIntervalTimeout = MAXDWORD; //最大时间参数
CommTimeouts.ReadTotalTimeoutMultiplier = 0;
CommTimeouts.ReadTotalTimeoutConstant = 0;
CommTimeouts.WriteTotalTimeoutMultiplier = 0;
CommTimeouts.WriteTotalTimeoutConstant = 0;
return SetCommTimeouts (hPort, &CommTimeouts);
}
4)设置字符事件:SetCommMask(hCom , EV_RXCHAR);
5)设置串口读写缓冲区大小:SetupComm(hCom ,2048,2048);
6)创建接收线程:com_hThread = CreateThread(NULL, 0, ReadThreadPort, this, 0, NULL);
由于WinCE不支持重叠I/O。因此不要从主线程读写大量的串行数据,因为这些线程还负责处理用于它们窗口的消息队列。不能因为读大量的串行数据而阻塞它们。因此应用单独的专有线程来读写串口。
DWORD WINAPI ReadThreadPort(LPVOID lpvoid)//线程函数实现
{
CComChatDlg* pDlg = (CComChatDlg*)lpvoid;
BOOL fReadState;//读串口返回值
DWORD dwCommModemStatus;
DWORD dwLength;//未读字节个数
COMSTAT ComStat;//串口状态结构
DWORD dwErrorFlags;//错误码
DWORD dwBytesRead;//读字节个数
while (pDlg->com_hCom!=INVALID_HANDLE_VALUE&&pDlg->com_hCom!=NULL)
{
WaitCommEvent (pDlg->com_hCom,&dwCommModemStatus, NULL);//等待串口事件
if (dwCommModemStatus & EV_RXCHAR) //如果为数据到达事件
{
ClearCommError(pDlg->com_hCom,&dwErrorFlags,&ComStat);//读取串口状态并清除状态标志
dwLength=ComStat.cbInQue;//读缓冲区中的未读字节个数
if(dwLength>0&&dwLength<(500*sizeof(WCHAR)))
{//读串口
memset(pDlg->com_ReadChar,0,sizeof(WCHAR)*500);
fReadState=ReadFile(pDlg->com_hCom,pDlg->com_ReadChar,dwLength,&dwBytesRead,NULL);
if(!fReadState)//读取失败不理会
{
}
else//读取成功
{
//插入读入的字符串
pDlg->com_Msg.Insert(0,pDlg->com_ReadChar);
pDlg->UpdateData(FALSE);
}
}
//返回串口状态
GetCommModemStatus (pDlg->com_hCom,&dwCommModemStatus);
}
}
return 0;
}
7)最后关闭串口:
oid ShutPort(HANDLE hPort)//关闭串口
{
SetCommMask(hPort,0);//取消串口事件
CloseHandle(hPort); //关闭串口句柄
}
注:本文源码来自实验手册!!!
分享到:
相关推荐
### Windows CE 串口通信的实现 #### 一、引言 随着信息技术的发展,嵌入式系统的应用变得越来越广泛。Windows CE(以下简称WinCE)作为一款由微软推出的32位、多任务、多线程的实时操作系统,因其良好的性能而在...
最近在研究WIN CE嵌入式应用程序开发,因本人初次接触VB NET,所以对它haunted不是很了解,更谈不上是嵌入式应用程序了,没办法,还得学啊,一般我们做嵌入式应用程序主要用到串口通讯,TCP通讯和界面美化,我就先从...
MSComm控件是Microsoft在Visual C++ 6.0(vc6)中提供的一种用于实现串行通信(串口通讯)的控件。这个控件为开发者提供了方便的方式来与外部设备进行数据交换,如调制解调器、GPS接收器、温度传感器等。通过MSComm...
`CESeries`类是专为Windows CE设计的一个串口通讯类,它允许开发者轻松地实现串口的数据发送与接收功能。下面我们将详细探讨`CESeries`类的工作原理和相关知识点。 首先,`CESeries`类通常会包含以下几个核心功能:...
在本文中,我们将深入探讨如何使用Microsoft Visual C++ 6.0(简称VC6.0)集成开发环境,通过Mscomm控件来实现与单片机的串口通讯程序。Mscomm控件是Windows API提供的一个组件,它使得在应用程序中实现串行通信变得...
C#封装的一个串口操作类是指使用C#语言编写的串口操作类库,该类库可以用于Win CE操作系统。下面是该类库的详细知识点: 串口操作类的基本概念 串口是一种常用的计算机接口,用于连接外部设备,如打印机、扫描仪、...
SdpoSerial控件是专为这种环境设计的,它允许开发者在Lazarus集成开发环境中方便地实现串口通讯功能。本文将深入探讨SdpoSerial控件的使用、安装以及在Lazarus中的应用,以帮助开发者更好地理解和应用这一工具。 ...
《基于Windows CE.net的仪器控制和数据处理系统的开发》这篇论文主要探讨了如何利用Windows CE.net操作系统开发一个用于仪器控制和数据处理的系统,特别是针对RS232协议的串行通讯技术在工业和分析测试仪器中的应用...
- **I/O层**:使用与I-8000系列兼容的I/O模块,提供模拟量、数字量、继电器、RTD/热电偶输入、应变量输入、计数器/定时器和多串口模块,可扩展通过87Kx RS-485和87Ex Ethernet I/O单元连接更多模块。 - **操作接口...
在Win.CE5.0以下的操作系统上运行VB.NET程序时,需要注意该系统的API兼容性和硬件驱动支持。确保选择的串口驱动程序适用于目标平台,并且你的应用程序已经适配了这些限制。 总结来说,通过VB.NET 2003的串口通信...
4. 串口通讯:配备RS-232或RS-485串行接口,适用于远距离或特殊环境的数据传输。 三、DT940驱动程序安装与管理 1. 驱动安装:在连接DT940到电脑前,需要先安装相应的驱动程序。这通常包括USB驱动、串口驱动等,确保...
本文将深入探讨如何在WinCE环境下实现串行通讯,包括必要的概念理解、API调用以及实际应用中的注意事项。 首先,我们要了解串行通信的基本原理。串行通信是指数据按位顺序传输,每次只发送或接收一个比特。在WinCE...
在C#中实现USB HID通讯,首先需要引用`System.IO.Ports`和`System.Threading`命名空间,这些提供了串口通信和多线程操作的支持。然后,可以使用第三方库如`HidLibrary`来简化USB HID设备的访问。这个库允许我们查找...
- **强大的串口通讯功能**:支持与西门子S7-200及S7-200 SMART PLC连接,最高通讯速率达到187.5kb/s;兼容多种主流小型PLC,如三菱FX系列、欧姆龙CP1系列、台达DVP-SV/ES2系列。 - **灵活的通讯接口**:集成串口支持...
#### 串口通讯 LEC-2110提供了6个串口(COM),包括RS-232、RS-232/422/485标准的串口,支持多种串口通讯参数配置,为与各种外围设备的通讯提供了便利。 #### USB和I/O接口 提供了6个USB 2.0接口,可以连接各种USB...
在Win32系统中,串口操作类似于文件操作,通过CreateFile()函数打开或创建串口,CloseHandle()函数关闭串口,SetCommState()函数设置串口参数。示例代码中展示了如何打开COM7端口,初始化通讯设备参数,并设置波特率...
9. 支持 Windows 98/ME, 2000, XP, Windows CE 3.0, CE.NET, Linux, 和 Mac OS 等多种操作系统 在使用 PL2303 下载器时,需要安装驱动程序,包括 Win XP, Vista, Win7 等驱动的安装。安装驱动完成后,插入 PL2303 ...
在本文中,还提到了外围电路设计,如模拟A/D转换电路、开关量输入输出以及串口通讯等,这些设计使得ARM9系统能够适应多种通讯环境。例如,通过跳线选择,四个串口可以配置为RS232、RS485或RS422通讯方式。 ARM9系统...
- **新建WinCE 6.0工程**:通过Visual Studio 2005的新建项目向导,选择“Win32 Console Application”模板来创建一个新的WinCE工程。 - **编译WinCE 6.0映像**:编译完成后,可以通过Platform Builder生成最终的...
数据通讯:PDA一般可以支持串口数据线联机和蓝牙联机;智能手机支持蓝牙联机。 《道路分析掌测》主要功能: 1、 全面系统的数据库管理,一旦打开项目,所需文件都配置到位。 2、 道路正反算,平面线形任意(含不完整...