分享

GetCommState(windows编程)

 凌蓝苑 2014-06-16
GetCommState 读取串口设置(波特率,校验,停止位,数据位等).
函数声明:
BOOL GetCommState(
HANDLE hFile,
LPDCB lpDCB
);
      GetCommState函数的第一个参数hFile是由CreateFile函数返回指向已打开串行口的句柄。第二个参数指向设备控制块DCB。如果函数调用成功,则返回值为非0;若函数调用失败,则返回值为0。
      当应用程序仅仅需要修改一部分串行口的配置值时,可以通过GetCommState函数获得当前的DCB结构,然后更改参数,再调用SetCommState函数设置修改过的DCB来配置串行口。
扩充:
       一般用CreateFile打开串口后,可以调用GetCommState函数来获取串口的初始配置。要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数设置串口。
       DCB结构包含了串口的各项参数设置,下面仅介绍几个该结构常用的变量:
typedefstruct _DCB { //………//波特率,指定通信设备的传输速率。这个成员可以是实际波特率值或者下面的常量值之一:
         DWORD BaudRate; //CBR_110,CBR_300,CBR_600,CBR_1200,CBR_2400,CBR_4800,CBR_9600,CBR_19200, CBR_38400, //CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000, CBR_14400 
      DWORD fParity; // 指定奇偶校验使能。若此成员为1,允许奇偶校验检查 //
      BYTE ByteSize; // 通信字节位数,4—8 BYTE 
      Parity; //指定奇偶校验方法。此成员可以有下列值://EVENPARITY 偶校验 ,NOPARITY 无校验,//MARKPARITY 标记校验,  ODDPARITY 奇校验 
      BYTE StopBits; //指定停止位的位数。此成员可以有下列值://ONESTOPBIT 1位停止位, TWOSTOPBITS 2位停止位,//ONE5STOPBITS 1.5位停止位//……… } DCB;
      GetCommState函数可以获得COM口的设备控制块,从而获得相关参数: BOOL GetCommState( HANDLE hFile, //标识通讯端口的句柄 LPDCB lpDCB //指向一个设备控制块(DCB结构)的指针 );
       SetCommState函数设置COM口的设备控制块: BOOL SetCommState( HANDLE hFile, LPDCB lpDCB );
      除了在BCD中的设置外,程序一般还需要设置I/O缓冲区的大小和超时。Windows用I/O缓冲区来暂存串口输入和输出的数据。如果通信的速率较高,则应该设置较大的缓冲区。调用SetupComm函数可以设置串行口的输入和输出缓冲区的大小。 BOOL SetupComm( HANDLE hFile, // 通信设备的句柄 DWORD dwInQueue, // 输入缓冲区的大小(字节数) DWORD dwOutQueue // 输出缓冲区的大小(字节数) )。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多