📄 functions.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 + -