📄 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 <windows.h>
#include <stdio.h>
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;
}
//------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -