Win32串口编程
电子元件,电子元器件深圳市创唯电子有限公司
您现在的位置: 首页 > 电子技术
Win32串口编程  2012/3/1
Win32串口编程  Win32下串口通信与16位串口通信有很大的区别。在Win32下,可以使用两种编程方式实现串口通信,其一是调用的Windows的API函数,其二是使用ActiveX控件。使用API 调用,可以清楚地掌握串口通信的机制,熟悉各种配置和自由灵活采用不同的流控进行串口通信。下面介绍串口操作的基本知识。  打开串口:使用CreateFile()函数,可以打开串口。有两种方法可以打开串口,一种是同步方式(NonOverlapped),另外一

Win32串口编程

Win32下串口通信与16位串口通信有很大的区别。在Win32下,可以使用两种编程方式实现串口通信,其一是调用的Windows的API函数,其二是使用ActiveX控件。使用API 调用,可以清楚地掌握串口通信的机制,熟悉各种配置和自由灵活采用不同的流控进行串口通信。下面介绍串口操作的基本知识。

打开串口:使用CreateFile()函数,可以打开串口。有两种方法可以打开串口,一种是同步方式(NonOverlapped),另外一种异步方式(Overlapped)。使用Overlapped打开时,适当的方法是:

HANDLE hComm;

hComm = CreateFile( gszPort,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);

if (hComm == INVALID_HANDLE_VALUE)

// error opening port; abort

配置串口:

1.DCB配置

DCB(Device Control Block)结构定义了串口通信设备的控制设置。许多重要设置都是在DCB结构中设置的,有三种方式可以初始化DCB。

(1)通过GetCommState()函数得DCB的初始值,其使用方式为:

DCB dcb = {0};

if (!GetCommState(hComm, &dcb))

// Error getting current DCB settings

else

// DCB is ready for use.

(2)用BuildCommDCB()函数初始化DCB结构,该函数填充 DCB的波特率、奇偶校验类型、数据位、停止位。对于流控成员函数设置了缺省值。其用法是:

DCB dcb;

FillMemory(&dcb, sizeof(dcb), 0);

dcb.DCBlength = sizeof(dcb);

if (!BuildCommDCB(“9600,n,8,1“, &dcb)) {

// Couldn‘t build the DCB. Usually a problem

// with the communications specification string.

return FALSE;

}

else

// DCB is ready for use.

(3)用SetCommState()函数手动设置DCB初值。用法如下:

DCB dcb;

FillMemory(&dcb, sizeof(dcb), 0);

if (!GetCommState(hComm, &dcb)) // get current DCB

// Error in GetCommState

return FALSE;

// Update DCB rate.

dcb.BaudRate = CBR_9600 ;

// Set new state.

if (!SetCommState(hComm, &dcb))

// Error in SetCommState.

Possibly a problem with the communications

// port handle or a problem with the DCB structure itself.

手动设置DCB值时,DCB的结构的各成员的含义,可以参看MSDN帮助。

 

Win32串口编程

Win32下串口通信与16位串口通信有很大的区别。在Win32下,可以使用两种编程方式实现串口通信,其一是调用的Windows的API函数,其二是使用ActiveX控件。使用API 调用,可以清楚地掌握串口通信的机制,熟悉各种配置和自由灵活采用不同的流控进行串口通信。下面介绍串口操作的基本知识。

打开串口:使用CreateFile()函数,可以打开串口。有两种方法可以打开串口,一种是同步方式(NonOverlapped),另外一种异步方式(Overlapped)。使用Overlapped打开时,适当的方法是:

HANDLE hComm;

hComm = CreateFile( gszPort,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);

if (hComm == INVALID_HANDLE_VALUE)

// error opening port; abort

配置串口:

1.DCB配置

DCB(Device Control Block)结构定义了串口通信设备的控制设置。许多重要设置都是在DCB结构中设置的,有三种方式可以初始化DCB。

(1)通过GetCommState()函数得DCB的初始值,其使用方式为:

DCB dcb = {0};

if (!GetCommState(hComm, &dcb))

// Error getting current DCB settings

else

// DCB is ready for use.

(2)用BuildCommDCB()函数初始化DCB结构,该函数填充 DCB的波特率、奇偶校验类型、数据位、停止位。对于流控成员函数设置了缺省值。其用法是:

DCB dcb;

FillMemory(&dcb, sizeof(dcb), 0);

dcb.DCBlength = sizeof(dcb);

与《Win32串口编程》相关列表
电话:400-900-3095
QQ:800152669
库存查询
Copyright(C) 2011-2021 Szcwdz.com 创唯电子 版权所有 备案号:粤ICP备11103613号
专注电子元件代理销售  QQ:800152669  电子邮件:sales@szcwdz.com  电话:400-900-3095