无法从串口接收数据,请帮忙看看什么问题

Joeker 2016-01-07 05:10:18
开发工具VS2010, 平台windows 10, 代码如下,ReadFile返回TRUE, 但是dwRead总是0。而通过串口监控软件看对应的串口是有数据进来 的。请帮看看什么问题,谢谢。

#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
char buffer[1024];
DWORD dwRead;
DCB dcb;
HANDLE mComHandle;

mComHandle = CreateFile(TEXT("COM4"),
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (INVALID_HANDLE_VALUE == mComHandle) {
int nError = GetLastError();
}

GetCommState(mComHandle, &dcb);
dcb.BaudRate = CBR_115200;
dcb.Parity = NOPARITY;
dcb.ByteSize = 8;
dcb.StopBits = ONESTOPBIT;
SetCommState(mComHandle, &dcb);

SetupComm(mComHandle, 1024, 1024);
SetCommMask(mComHandle, EV_BREAK | EV_ERR | EV_RXCHAR);
PurgeComm(mComHandle, PURGE_TXCLEAR | PURGE_RXCLEAR);

memset(buffer, 0, sizeof(buffer));
while (mComHandle != INVALID_HANDLE_VALUE ) {
BOOL bSuccess = ReadFile(mComHandle, buffer, sizeof(buffer), &dwRead, NULL);
if (bSuccess) {
if (dwRead > 0) {
printf(buffer);
}
} else {
printf("LastError = %d\r\n", GetLastError());
}
}

CloseHandle(mComHandle);
}
...全文
209 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joeker 2016-01-07
  • 打赏
  • 举报
回复
代码一贴就乱,重贴一下

#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
	char buffer[1024];
	DWORD dwRead;
	DCB     dcb;
	HANDLE	mComHandle;

	mComHandle = CreateFile(TEXT("COM4"), 
							GENERIC_READ|GENERIC_WRITE, 
							0, 
							NULL,
							OPEN_EXISTING, 
							0, 
							NULL);
	if (INVALID_HANDLE_VALUE == mComHandle) {
		int nError = GetLastError();
	}

	GetCommState(mComHandle, &dcb);
	dcb.BaudRate = CBR_115200;
	dcb.Parity   = NOPARITY;
	dcb.ByteSize = 8;
	dcb.StopBits = ONESTOPBIT;  
	SetCommState(mComHandle, &dcb);

	SetupComm(mComHandle, 1024, 1024);
	SetCommMask(mComHandle, EV_BREAK | EV_ERR | EV_RXCHAR);
	PurgeComm(mComHandle, PURGE_TXCLEAR | PURGE_RXCLEAR);

	memset(buffer, 0, sizeof(buffer));
	while (mComHandle != INVALID_HANDLE_VALUE ) {
		BOOL bSuccess = ReadFile(mComHandle, buffer, sizeof(buffer), &dwRead, NULL);
		if (bSuccess) {
			if (dwRead > 0) {
				printf(buffer);
			}
		} else {
			printf("LastError = %d\r\n", GetLastError());
		}
	}

	CloseHandle(mComHandle);
}

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧