www.pudn.com > FlashTool_src_v2.9.1006.zip > com_util.cpp
/***************************************************************************** * Copyright Statement: * -------------------- * This software is protected by Copyright and the information contained * herein is confidential. The software may not be copied and the information * contained herein may not be used or disclosed except with the written * permission of MediaTek Inc. (C) 2002 * *****************************************************************************/ /******************************************************************************* * Filename: * --------- * com_util.cpp * * Project: * -------- * Flash tool * * Description: * ------------ * Flash tool utility * * Author: * ------- * FZ Hsu (mtk00303) * *============================================================================== * HISTORY * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! *------------------------------------------------------------------------------ * $Revision: 1.1 $ * $Modtime: Nov 20 2002 16:38:02 $ * $Log: //mtkvs01/vmdata/flash_tool/archives/com_util.cpp-arc $ * * Rev 1.1 Nov 20 2002 19:52:58 mtk00303 * update for reference phone * * Rev 1.0 Jul 26 2002 11:53:18 admin * Initial revision. * *------------------------------------------------------------------------------ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! *============================================================================== *******************************************************************************/ //--------------------------------------------------------------------------- #include#include DCB dcb; //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ bool open_com_port( HANDLE &hCOM_HANDLE, int i_com_port, int i_baud_rate) { if ( hCOM_HANDLE != NULL && hCOM_HANDLE != INVALID_HANDLE_VALUE ) { PurgeComm( hCOM_HANDLE, PURGE_TXABORT); PurgeComm( hCOM_HANDLE, PURGE_RXABORT); PurgeComm( hCOM_HANDLE, PURGE_TXCLEAR); PurgeComm( hCOM_HANDLE, PURGE_RXCLEAR); CloseHandle( hCOM_HANDLE); hCOM_HANDLE = NULL; } char c_com[50]; ::sprintf(c_com, "\\\\.\\COM%d", i_com_port); hCOM_HANDLE = ::CreateFile( c_com, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if( hCOM_HANDLE==INVALID_HANDLE_VALUE ) { // ShowMessage(" COM" + IntToStr( i_com_port) + " is used by other program."); hCOM_HANDLE = NULL; return false; } if( ::SetupComm(hCOM_HANDLE, 8192, 8192)==FALSE ) return false; if( ::PurgeComm(hCOM_HANDLE, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR)==FALSE ) return false; COMMTIMEOUTS TimeOut; TimeOut.ReadIntervalTimeout = 0; TimeOut.ReadTotalTimeoutMultiplier = 1; TimeOut.ReadTotalTimeoutConstant = 700; TimeOut.WriteTotalTimeoutMultiplier = 1; TimeOut.WriteTotalTimeoutConstant = 700; SetCommTimeouts(hCOM_HANDLE, &TimeOut); char c_dcb[50]; ::sprintf( c_dcb, "%d,n,8,1", i_baud_rate); BuildCommDCB( c_dcb, &dcb ); SetCommState( hCOM_HANDLE, &dcb ); return true; } //------------------------------------------------------------------------------ bool set_com_port( HANDLE &hCOM_HANDLE, int i_baud_rate) { if( hCOM_HANDLE==INVALID_HANDLE_VALUE ) { hCOM_HANDLE = NULL; return false; } if( hCOM_HANDLE==NULL ) { return false; } if ( PurgeComm( hCOM_HANDLE, PURGE_TXABORT)==0 || PurgeComm( hCOM_HANDLE, PURGE_RXABORT)==0 || PurgeComm( hCOM_HANDLE, PURGE_TXCLEAR)==0 || PurgeComm( hCOM_HANDLE, PURGE_RXCLEAR)==0 ) { return false; } if( ::SetupComm(hCOM_HANDLE, 8192, 8192)==FALSE ) return false; if( ::PurgeComm(hCOM_HANDLE, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR)==FALSE ) return false; COMMTIMEOUTS TimeOut; TimeOut.ReadIntervalTimeout = 0; TimeOut.ReadTotalTimeoutMultiplier = 1; TimeOut.ReadTotalTimeoutConstant = 700; TimeOut.WriteTotalTimeoutMultiplier = 1; TimeOut.WriteTotalTimeoutConstant = 700; SetCommTimeouts( hCOM_HANDLE, &TimeOut); char c_dcb[50]; ::sprintf( c_dcb, "%d,n,8,1", i_baud_rate); BuildCommDCB( c_dcb, &dcb ); SetCommState( hCOM_HANDLE, &dcb ); return true; } //------------------------------------------------------------------------------ bool close_com_port( HANDLE &hCOM_HANDLE ) { if ( hCOM_HANDLE != NULL && hCOM_HANDLE != INVALID_HANDLE_VALUE ) { PurgeComm( hCOM_HANDLE, PURGE_TXABORT); PurgeComm( hCOM_HANDLE, PURGE_RXABORT); if (! CloseHandle( hCOM_HANDLE)) return false; hCOM_HANDLE = NULL; } if ( hCOM_HANDLE == INVALID_HANDLE_VALUE ) { hCOM_HANDLE == NULL; } return true; } //------------------------------------------------------------------------------