⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 functions.cpp

📁 串口程序检测
💻 CPP
字号:
///////////Head Files///////////////
#include "stdafx.h"

#include "Macro.h"
#include "Global.h"
#include "Functions.h"

#include "Uart.h"
#include "UartDlg.h"


///////////////////////////////////

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


//////////////////////////////////////////////////////////////////



bool String2HexByte(const char *str_in, BYTE *hex_out, int *pnum)
{
	int i;
	int j=0;
	char hex[3]={0};

	int len = (int)strlen(str_in);
	for(i=0;i<len;i++)
	{
		if(str_in[i]!=' ')
		{			
			if(  ((i+1)==len) || (str_in[i+1]==' ')   )
			{ 
				hex[0] = str_in[i];
				sscanf(hex,"%x",hex_out+(j++)); 	
			}
			else if(  ((i+2)==len) || (str_in[i+2]==' ')   )		
			{
				hex[0] = str_in[i];
				hex[1] = str_in[i+1];
				sscanf(hex,"%x",hex_out+(j++));
				hex[1] = 0;
				i++;
			}
			else
			{				
				return false;
			}
		}		
	}
	*pnum = j;

	return true;
}

void HexByte2String(const BYTE *hex_in, char *str_out, int num)
{
	int i,j=0;
	BYTE tmp1,tmp2;
	//CString str_tmp, str;
	for(i=0; i<num; i++) 
	{		
		//str_tmp.Format("%02X ", hex_in[i]);
		//str += str_tmp;
		tmp1 = hex_in[i]>>4;
		tmp2 = hex_in[i]&0x0f;
		if(tmp1<=9)	str_out[j++] = tmp1 + '0';
		else		str_out[j++] = tmp1 + 0x37;
		if(tmp2<=9)	str_out[j++] = tmp2 + '0';
		else		str_out[j++] = tmp2 + 0x37;
		str_out[j++] = 0x20;
	}
	str_out[j] = 0;	
}






UINT TransmitDataCTS(LPVOID pParam) 
{
	CUartDlg *pDlg = (CUartDlg *)pParam;
	CByteArray bytearray;
	//DWORD WaitStatus;

	while(pDlg->m_bTxAutoCts)
	{
		WaitForSingleObject(pDlg->m_hEventTxCts, INFINITE);	

		bytearray.SetSize(1);

		while( pDlg->m_bTxAutoCts && pDlg->m_mscomm.GetCTSHolding() ) 
		{
			bytearray.SetAt(0, pDlg->m_TxBuf[pDlg->m_cTxCycleIndex]);
			pDlg->m_mscomm.SetOutput(COleVariant(bytearray));
			pDlg->m_cTxCycleIndex++;
			if(pDlg->m_cTxCycleIndex == pDlg->m_iTxCycleNum)	pDlg->m_cTxCycleIndex = 0;			
			pDlg->m_iCountTxByte++;		
			pDlg->m_iTxByteCounterConv++; 
			if(pDlg->m_bTxStopAuto) 
			{				
				if(pDlg->m_iTxByteCounterConv == pDlg->m_iTxStopByte)
				{
					pDlg->TxStopFunc(pDlg->DetectCts, pDlg->StopAuto);
					return 0;
				}
			}
		}
		
		pDlg->ShowTxActualRate();

	}//	while(m_bTxAutoCts)

	
	return 0;
}


UINT TransmitPictureCTS(LPVOID pParam) 
{
	CUartDlg *pDlg = (CUartDlg *)pParam;
	CByteArray bytearray;
	//DWORD WaitStatus;

	while(pDlg->m_bTxPicAutoCts)
	{
		WaitForSingleObject(pDlg->m_hEventTxCts, INFINITE);	

		bytearray.SetSize(1);

		while( pDlg->m_bTxPicAutoCts&&pDlg->m_mscomm.GetCTSHolding() ) 
		{
			bytearray.SetAt(0, pDlg->m_TxPicBuf[pDlg->m_iTxByteCounterConv]);
			pDlg->m_mscomm.SetOutput(COleVariant(bytearray));
		//	pDlg->m_cTxCycleIndex++;
			pDlg->m_iCountTxByte++;	

			pDlg->m_iTxByteCounterConv++; 

			if(pDlg->m_iTxByteCounterConv == pDlg->m_iPicLength) ///////////	
			{
			//	pDlg->m_cTxCycleIndex = 0;	
			//	pDlg->m_bSendPic = false;
			//	delete []pDlg->m_TxPicBuf; //释放内存
				pDlg->TxStopFunc(pDlg->DetectCts, pDlg->StopAuto);
				return 0;
			}
		}
		pDlg->ShowTxActualRate();
	}

	
	return 0;
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -