C++ 串口编程 写串口 同步通信方式

char buf[] = "Native String";
int len = strlen(buf);
BYTE * wchar=(BYTE *)buf;//将char[]转换成byte[]
 
WriteChar(wchar,len);//写串口,串口一打开,将串口一的信息wchar写到串口二中。
 
bool WriteChar(BYTE* m_szWriteBuffer,DWORD m_nToSend)//向串口写数据
{
BOOL bWrite = TRUE;
BOOL bResult = TRUE;
DWORD BytesSent = 0;
HANDLE m_hWriteEvent;
OVERLAPPED m_ov;
 
ResetEvent(m_hWriteEvent);
if (bWrite)//正确写入
{
m_ov.Offset = 0;
m_ov.OffsetHigh = 0;
// 清理缓冲区
bResult = WriteFile(hComm, // 向串口写数据,hComm串口句柄
m_szWriteBuffer, // 待写入数据的首地址
m_nToSend,      // 待写入数据的字节数长度
&BytesSent,     // 函数返回的实际写入串口的数据个数的地址
NULL );        // 重叠I/O结构的指针
if (!bResult)
{
DWORD dwError = GetLastError();//获取错误
switch (dwError)
{
case ERROR_IO_PENDING:
{
BytesSent = 0;
bWrite = FALSE;
break;
}
default:
{
break;
}
}
}
}
if (!bWrite)//写入错误
{
bWrite = TRUE;
bResult = GetOverlappedResult(hComm,   // GetOverlappedResult返回一个OVERLAPPED结构来报告包括实际传输字节在内的重叠操作结果
 &m_ov,     // 重叠结构
 &BytesSent,    // 要发送数据长度
 TRUE);         // 如果为TRUE,就一直等到异步操作结束才返回。FALSE表示立即返回
if (!bResult)
{
::MessageBox(NULL,_T("报告错误!"),_T( "Information"), MB_OK);
}
}
if (BytesSent != m_nToSend)//验证发送的数据等于试图发送的数据
{
::MessageBox(NULL,_T("写入串口错误!"),_T( "Information"), MB_OK);
}
return true;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值