|
楼主 |
发表于 2023-11-17 18:26:51
|
显示全部楼层
void converToPrintInstruction(uint16_t decimalData[],uint8_t size)
{
static uint16_t Remember_Data = 0;
static uint8_t flag = 0;
//static uint8_t DataSendPrintf[100] = {0};
//uint8_t *DataSendPrintf = (uint8_t*)MemMalloc(1000*sizeof(uint8_t));
uint16_t i = 0, j = 0, decimalValue = 0, m_g = 0;
uint16_t buwei = 0;
uint8_t binaryData[358] = {0};
uint16_t position[NUMBER_DATA] = {0};
if(size >= NUMBER_DATA)
{
//printf("Error:Input data Number error.\n");
return;
}
if(flag != 0)return;
// DataSendPrintf = (uint8_t*)MemMalloc(1000*sizeof(uint8_t));
for(m_g = 0; m_g < size; m_g++)
{
if(decimalData[m_g] < 0 || decimalData[m_g] > 4096)
{
//printf("Error:Input data out of range.\n");
return;
}
for(i = 0; i < 384; i++)
{
binaryData = 0;
}
position[m_g] = decimalData[m_g] * 384 / 4096;
binaryData[position[m_g]] = 1;
if(m_g >= 1)
{
if(position[m_g] != position[m_g-1])
{
if(position[m_g] > position[m_g-1])
{
buwei = position[m_g] - position[m_g-1];
for(i = 1; i <= buwei; i++)
{
binaryData[position[m_g]-i] = 1;
}
}
else
{
buwei = position[m_g-1] - position[m_g];
for(i = 1; i <= buwei; i++)
{
binaryData[position[m_g]+i] = 1;
}
}
}
else
{
if(decimalData[m_g] != decimalData[m_g-1])
{
if(decimalData[m_g] > decimalData[m_g-1])
{
binaryData[position[m_g]+1] = 1;
}
else
{
binaryData[position[m_g]-1] = 1;
}
}
}
}
//printf("1630 ");
#if 0
*BlueSendPrintfer.SendData = 0x16;
BlueSendPrintfer.SendData++;
BlueSendPrintfer.flag_num++;
*BlueSendPrintfer.SendData = 0x30;
BlueSendPrintfer.SendData++;
BlueSendPrintfer.flag_num++;
#else
BlueSendPrintfer.DataSendPrintf[Remember_Data++] = 0x16;
BlueSendPrintfer.DataSendPrintf[Remember_Data++] = 0x30;
#endif
for(i = 0; i < 48; i++)
{
decimalValue = 0;
for(j = 0; j < 8; j++)
{
decimalValue += binaryData[(i * 8) + j] << (7 - j);
}
//printf("%02X ",decimalValue);
//printf("%lld ",convertDecimalToBinary(decimalValue));
//将每一位十六进制数存储在数组中
while(decimalValue != 0)
{
int remainder = decimalValue % 16;
if(remainder < 10)
{
BlueSendPrintfer.DataSendPrintf[Remember_Data++] = remainder + '0'; //转换成字符
//BlueSendPrintfer.SendData++;
BlueSendPrintfer.flag_num++;
}
else
{
BlueSendPrintfer.DataSendPrintf[Remember_Data++] = remainder - 10 + 'A'; //转换成大写字母
//BlueSendPrintfer.SendData++;
BlueSendPrintfer.flag_num++;
}
decimalValue /= 16;
}
}
//printf("\r\n1501\r\n");
}
flag = 1;
}
这段函数意思是什么 |
|