VC实现串口通信例程

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

VC实现串口通信例程

作者:阮帮秋(2001.4)

摘要:WIN95界面下的VC++串口通讯程序在WIN32下是不建议对端口进行操作的,在WIN32中所有的设备都被看成是文件,串行口也不例外也是作为文件来进行处理的。

关键词串行口,DWORD,缓冲区

WIN95界面下的VC++串口通讯程序在WIN32下是不建议对端口进行操作的,在WIN32中所有的设备都被看成是文件,串行口也不例外也是作为文件来进行处理的。这是我的一份关于串口编程的读书笔记,对于使用VC进行编程的同行应该有一定的帮助。

1.打开串口:

在Window 95下串行口作为文件处理,使用文件操作对串行口进行处理。使用CreateFile()打开串口,CreateFile()将返回串口的句柄。

HANDLE CreateFile(

LPCTSTR lpFileName, // pointer to name of the file

DWORD dwDesiredAccess, // access (read-write) mode

DWORD dwShareMode, // share mode

LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes

DWORD dwCreationDistribution, // how to create

DWORD dwFlagsAndAttributes, // file attributes

HANDLE hTemplateFile // handle to file with attributes to copy

);

lpFileName: 指明串口制备,例:COM1,COM2

dwDesiredAccess: 指明串口存取方式,例:GENERIC_READ|GENERIC_WRITE

dwShareMode: 指明串口共享方式

lpSecurityAttributes: 指明串口的安全属性结构,NULL为缺省安全属性

dwCreateionDistribution: 必须为OPEN_EXISTIN

dwFlagAndAttributes: 对串口唯一有意义的是FILE_FLAG_OVERLAPPED

hTemplateFile: 必须为NULL

2.关闭串口:

CloseHandle(hCommDev);

3.设置缓冲区长度:

BOOL SetupComm(

HANDLE hFile, // handle of communications device

DWORD dwInQueue, // size of input buffer

DWORD dwOutQueue // size of output buffer

);

MPROP结构:

可使用GetCommProperties()取得COMMPROP结构,COMMPROP结构中记载了系统支持的各项设置。

typedef struct _COMMPROP { // cmmp

WORD wPacketLength; // packet size, in bytes

WORD wPacketVersion; // packet version

DWORD dwServiceMask; // services implemented

DWORD dwReserved1; // reserved

DWORD dwMaxTxQueue; // max Tx bufsize, in bytes

DWORD dwMaxRxQueue; // max Rx bufsize, in bytes

DWORD dwMaxBaud; // max baud rate, in bps

DWORD dwProvSubType; // specific provider type

DWORD dwProvCapabilities; // capabilities supported

DWORD dwSettableParams; // changeable parameters

DWORD dwSettableBaud; // allowable baud rates

WORD wSettableData; // allowable byte sizes

WORD wSettableStopParity; // stop bits/parity allowed

DWORD dwCurrentTxQueue; // Tx buffer size, in bytes

DWORD dwCurrentRxQueue; // Rx buffer size, in bytes

DWORD dwProvSpec1; // provider-specific data

DWORD dwProvSpec2; // provider-specific data

WCHAR wcProvChar[1]; // provider-specific data

} COMMPROP;

dwMaxBaud:

BAUD_075 75 bps

BAUD_110 110 bps

BAUD_134_5 134.5 bps

BAUD_150 150 bps

BAUD_300 300 bps

BAUD_600 600 bps

BAUD_1200 1200 bps

BAUD_1800 1800 bps

BAUD_2400 2400 bps

BAUD_4800 4800 bps

BAUD_7200 7200 bps

BAUD_9600 9600 bps

BAUD_14400 14400 bps

BAUD_19200 19200 bps

BAUD_38400 38400 bps

BAUD_56K 56K bps

相关文档
最新文档