夏沐 发表于 2023-10-28 17:47:47

思普瑞特L36打印机

有没有人用过思普瑞特L36便携打印机,可编程的,可以使用蓝牙,WiFi和USB连接通信,我是用蓝牙连接,目前连接是没问题,通过蓝牙发送数据,打印一些基本的汉字,以及设置汉字的格式等都可以,但是如何打印线条,二维码,条形码呢,按照那个编程手册,打印机一点反应都没有,求助求助!!!

eric2013 发表于 2023-10-28 17:49:19

没用过,看看坛友有用过的没

夏沐 发表于 2023-11-17 18:26:51

eric2013 发表于 2023-10-28 17:49
没用过,看看坛友有用过的没

void converToPrintInstruction(uint16_t decimalData[],uint8_t size)
{
    static uint16_t Remember_Data = 0;
    static uint8_t flag = 0;
    //static uint8_t DataSendPrintf = {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 = {0};
    uint16_t position = {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 < 0 || decimalData > 4096)
      {
            //printf("Error:Input data out of range.\n");
            return;
      }
      for(i = 0; i < 384; i++)
      {
            binaryData = 0;
      }

      position = decimalData * 384 / 4096;
      binaryData] = 1;

      if(m_g >= 1)
      {
            if(position != position)
            {
                if(position > position)
                {
                  buwei = position - position;
                  for(i = 1; i <= buwei; i++)
                  {
                        binaryData-i] = 1;
                  }
                }
                else
                {
                  buwei = position - position;
                  for(i = 1; i <= buwei; i++)
                  {
                        binaryData+i] = 1;
                  }
                }
            }
            else
            {
                if(decimalData != decimalData)
                {
                   if(decimalData > decimalData)
                   {
                      binaryData+1] = 1;
                   }
                   else
                   {
                      binaryData-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 = 0x16;
      BlueSendPrintfer.DataSendPrintf = 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 = remainder + '0'; //转换成字符
                  //BlueSendPrintfer.SendData++;
                  BlueSendPrintfer.flag_num++;
                }
                else
                {
                  BlueSendPrintfer.DataSendPrintf = remainder - 10 + 'A';   //转换成大写字母       
                  //BlueSendPrintfer.SendData++;
                  BlueSendPrintfer.flag_num++;

                }
                decimalValue /= 16;
            }
      }
      //printf("\r\n1501\r\n");
    }
    flag = 1;
}

这段函数意思是什么
页: [1]
查看完整版本: 思普瑞特L36打印机