串口API编程writefile问题
BOOL CMytest080623Dlg::WriteCom(char *lpBuf,DWORD dwToWrite)
{
DWORD dwWrite;
BOOL fRes;
BOOL tmp;
unsigned long err;
// char BYTE[7] = {"abcdef"};
Wol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if(Wol.hEvent == NULL) return FALSE; //create Event Fail
//err = GetLastError();
tmp = WriteFile(hCom,lpBuf,dwToWrite,&dwWrite,&Wol);
if(!tmp)
{
err = GetLastError();
if(GetLastError() != ERROR_IO_PENDING)
fRes = FALSE; //Write File Fail
else
{
if(!GetOverlappedResult(hCom, &Wol, &dwWrite, TRUE))
fRes = FALSE; //overlapped Write File Fail
else
fRes = TRUE;
}
}
else
fRes = TRUE;
CloseHandle(Wol.hEvent);
return fRes;
}
在WriteFile()使用后使用GetLastError()得到sys error值为87 即参数不对,但我认为参数是对的。。不知道怎么回事,忘高手指教。。。
{
DWORD dwWrite;
BOOL fRes;
BOOL tmp;
unsigned long err;
// char BYTE[7] = {"abcdef"};
Wol.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if(Wol.hEvent == NULL) return FALSE; //create Event Fail
//err = GetLastError();
tmp = WriteFile(hCom,lpBuf,dwToWrite,&dwWrite,&Wol);
if(!tmp)
{
err = GetLastError();
if(GetLastError() != ERROR_IO_PENDING)
fRes = FALSE; //Write File Fail
else
{
if(!GetOverlappedResult(hCom, &Wol, &dwWrite, TRUE))
fRes = FALSE; //overlapped Write File Fail
else
fRes = TRUE;
}
}
else
fRes = TRUE;
CloseHandle(Wol.hEvent);
return fRes;
}
在WriteFile()使用后使用GetLastError()得到sys error值为87 即参数不对,但我认为参数是对的。。不知道怎么回事,忘高手指教。。。
...全文
相关推荐
MFC.zip_CreateFile串口_MFC 串口编程_mfc 串口_mfc 串口读写_串口 WriteFile
MFC串口通信编程详解,主要介绍了用CreateFile()函数和WriteFile()函数读写串口的实例,以及设置 串口属性的实例.
VC++与Turbo C串口通信编程实践:源码解析与调试指南
串口通信作为嵌入式与工控领域最基础的数据交互方式,其核心在于理解数据位、波特率、校验位等参数协商机制。在Windows环境下,Visual C++通过CreateFile与DCB结构体操作串口,而DOS环境下Turbo C则直接控制8250/16550 UART寄存器,两者路径迥异但原理相通。掌握寄存器级操作、中断接收与环形缓冲区设计,能帮助你从根本上理解串口时序与数据流控制。面对老源码在新系统上的编译兼容、乱码、丢字节等工程痛点,从API调用到底层寄存器配置,从同步阻塞到异步事件驱动,系统化的排查思路往往
基于MFC的API串口编程 十六进制发收
基于API函数的串口编程 并有十六进制发收
基于WINDOWS API函数的串口读写小程序
基于WINDOWS API函数的串口读写小程序,应用CreateFile,ReadFile,WritFile 实现数据的发送和接收,功能简单,但是对于初学者很实用。
C#使用SerialPort和API串口的例子
一个集成了SerialPort和API方式实现串口通信的例子.注意线程操作UI的部分图方便使用了不安全的代码,建议改为委托


界面
