vc读写rs232口

打开RS232:
HANDLE hComPort = CreateFile(
"COM1", //String,COM name. GENERIC_READ|GENERIC_WRITE, // access mode
0, // share mode
NULL, // security attributes
OPEN_EXISTING, // how to create
FILE_FLAG_OVERLAPPED,// file attributes
NULL); // handle to file with attributes to copy

if (hComPort == INVALID_HANDLE_VALUE)
return FALSE;

if (!GetCommState(hComPort, &dcb))
{
CloseHandle(hComPort);
return FALSE;
}
//设置通信参数
dcb.BaudRate = (DWORD)m_SysOption.nBaudRateModem;
dcb.ByteSize = (BYTE)m_SysOption.nByteSizeModem;
dcb.StopBits = (BYTE)m_SysOption.nStopBitsModem;
dcb.Parity = (BYTE)m_SysOption.nParityModem;
dcb.EvtChar = COMM_TAILOR;
dcb.fDtrControl = DTR_CONTROL_ENABLE;

if(!SetCommState(hComPort, &dcb))
{
CloseHandle(hComPort);
return FALSE;
}

if (!SetCommMask(hComPort, EV_RXFLAG))
{
CloseHandle(hComPort);
return FALSE;
}

//set com timeout
COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.ReadTotalTimeoutConstant = 0;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 0;
if (!SetCommTimeouts(hComPort,&CommTimeOuts))
{
CloseHandle(hComPort);
return FALSE;
}

if (!PurgeComm(hComPort, PURGE_TXCLEAR|PURGE_RXCLEAR))
{
CloseHandle(hComPort);
return FALSE;
}

读取:
OVERLAPPED OVL;
memset(&OVL,0,sizeof(OVERLAPPED));
OVL.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
ReadFile(hComPort ,pBufRecv,dwToRead,&dwLen,&OVL)
输出:
OVERLAPPED OVL;
memset(&OVL,0,sizeof(OVERLAPPED));
OVL.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
ReadFile(hComPort ,pBufRecv,dwToRead,&dwLen,&OVL)

WriteFile(hComPort ,pBufSend,dwLen,& dwLen, &OVL);//WIN98下,&OVL可以为NULL
//在NT或WIN2K下不能为NULL


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值