int CRs232:: ( LPCVOID lpByte, UINT nBytesToWrite)
{
int e_NotConnected =0;
int e_TransmitError =0;
int e_TransmitNotFinished =0;
DWORD dwBytesWritten, dwErrorFlags;
COMSTAT ComStat;
if( !m_bConnected ) // 串口没有打开
return e_NotConnected;
if(WaitForSingleObject(m_osWrite.hEvent,0) != WAIT_OBJECT_0)
return e_TransmitNotFinished;
ResetEvent(m_osWrite.hEvent);
if(!WriteFile(m_hComDev,lpByte,nBytesToWrite,&dwBytesWritten,&m_osWrite))
{
// 往串口发送数据
if( GetLastError() == ERROR_IO_PENDING )
return 0; // 正在后台发送
ClearCommError( m_hComDev, &dwErrorFlags, &ComStat ) ; // 出现错误,清除错误标志
return e_TransmitError; // 发送出错
}
return 0; // WriteFile返回1,发送成功}
}char Snds[6] = {0};
Snds[0] = 0x50;
Snds[1] = 0xf3;
Snds[2] = 0x00;
Snds[3] = 0x00;
Snds[4] = 0x41;
Write(Snds,5);得到的数据是: 50 f3 41
把两个 0x00 去掉了~要怎么改这个 Write 函数啊?
或者有别的办法解决吗?谢谢!
{
int e_NotConnected =0;
int e_TransmitError =0;
int e_TransmitNotFinished =0;
DWORD dwBytesWritten, dwErrorFlags;
COMSTAT ComStat;
if( !m_bConnected ) // 串口没有打开
return e_NotConnected;
if(WaitForSingleObject(m_osWrite.hEvent,0) != WAIT_OBJECT_0)
return e_TransmitNotFinished;
ResetEvent(m_osWrite.hEvent);
if(!WriteFile(m_hComDev,lpByte,nBytesToWrite,&dwBytesWritten,&m_osWrite))
{
// 往串口发送数据
if( GetLastError() == ERROR_IO_PENDING )
return 0; // 正在后台发送
ClearCommError( m_hComDev, &dwErrorFlags, &ComStat ) ; // 出现错误,清除错误标志
return e_TransmitError; // 发送出错
}
return 0; // WriteFile返回1,发送成功}
}char Snds[6] = {0};
Snds[0] = 0x50;
Snds[1] = 0xf3;
Snds[2] = 0x00;
Snds[3] = 0x00;
Snds[4] = 0x41;
Write(Snds,5);得到的数据是: 50 f3 41
把两个 0x00 去掉了~要怎么改这个 Write 函数啊?
或者有别的办法解决吗?谢谢!
你不会设置了DCB 的fNull 成员吧。
设置了fNull接收时候将丢弃 0字符