CSerialPort::CSerialPort(void) { } bool CSerialPort::Open( char *szComPort) { int handle; handle = MyKernel::CreateFile( szComPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPED, NULL); try { IntPtr pCom(handle); m_MyFileStream = new FileStream(pCom, FileAccess::ReadWrite, true, 1000, true); } catch (Exception * e ) { Console::WriteLine(e->ToString()); return false; } DCB * CommSettings = new DCB(); CommSettings->DCBlength = sizeof(CommSettings); CommSettings->BaudRate = 38400; CommSettings->ByteSize = 8; CommSettings->Parity = 0; CommSettings->StopBits = 1; MyKernel::SetCommState(m_MyFileStream->get_Handle(), CommSettings); try { m_MyStreamReader = new StreamReader(m_MyFileStream); } catch (Exception * e ) { Console::WriteLine(e->ToString()); return false; } if ( m_MyFileStream->get_CanWrite() ) { try { m_MyStreamWriter = new StreamWriter(m_MyFileStream); } catch (Exception * e ) { Console::WriteLine(e->ToString()); return false; } } return true; } void CSerialPort::Write(String __gc * buf) { try { m_MyStreamWriter->Write(buf); m_MyStreamWriter->Flush(); } catch (Exception * e ) { Console::WriteLine(e->ToString()); } } String * CSerialPort::Read() { String *buf; buf = m_MyStreamReader->ReadLine(); return (buf); } void CSerialPort::Close() { m_MyStreamWriter->Close(); m_MyStreamReader->Close(); m_MyFileStream->Close(); }