基础版本
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
#include "config.h" //全局声明
|
||||
|
||||
/*_____ D E C L A R A T I O N ________________________________________________*/
|
||||
void Print_Num(u8 GunNum,u8 Lin,u64 Num,u8 Dec)
|
||||
{
|
||||
volatile u8 i,j,D;
|
||||
for(i = 22;i < 32;i ++)
|
||||
TXHData.PrintInfo.PrintBuff[Lin][i] = 0x20;
|
||||
for(i = 0;i< 16;i++)
|
||||
{
|
||||
if((Num>>(i*4)) == 0)
|
||||
break;
|
||||
}
|
||||
if(i <= Dec && Dec > 0)
|
||||
{
|
||||
if(i == 0 )
|
||||
i+=Dec;
|
||||
i ++;
|
||||
|
||||
TXHData.PrintInfo.PrintBuff[Lin][30-i] = '0';
|
||||
}
|
||||
if(Dec)
|
||||
{
|
||||
D = 1;
|
||||
TXHData.PrintInfo.PrintBuff[Lin][30- Dec] = '.';
|
||||
}
|
||||
for(j = 0;j < Dec; j++)
|
||||
TXHData.PrintInfo.PrintBuff[Lin][30- j] = 0x30 + (((Num>>j*4)) & 0x00000000000f);
|
||||
|
||||
for(j = Dec+D;j < i + D; j++)
|
||||
TXHData.PrintInfo.PrintBuff[Lin][30- (j+1-D)] = 0x30 + (((Num>>(j-D)*4)) & 0x00000000000f);
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:print_init()
|
||||
//** 函数功能:硬件初始化。
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t print_init(uint8_t *pData)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData = 0x40;
|
||||
return 2;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:printSetChinese()
|
||||
//** 函数功能:设置中文打印
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t printChinese(uint8_t *pData)
|
||||
{
|
||||
*pData++ = 0X1C;
|
||||
*pData++ = '&';
|
||||
return 2;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:printCR()
|
||||
//** 函数功能:打印当前所有,并走一行
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t printCR(uint8_t *pData)
|
||||
{
|
||||
*pData = PCR;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:printLF()
|
||||
//** 函数功能:走纸。
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t printLF(uint8_t *pData)
|
||||
{
|
||||
*pData = LF;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:LFnRow()
|
||||
//** 函数功能:执行N点行走纸。
|
||||
//** 入口参数:行数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t LFnRow(uint8_t *pData,uint8_t row)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = J;
|
||||
*pData = row;
|
||||
return 3;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setPageLen()
|
||||
//** 函数功能:设置页长。
|
||||
//** 入口参数:页长 (0表示256页)
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setPageLen(uint8_t *pData,uint8_t pageLen)
|
||||
{
|
||||
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x43;
|
||||
*pData = pageLen;
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setLeftSpace(uint8 spaceNumber)
|
||||
//** 函数功能:设置左间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setLeftSpace(uint8_t *pData,uint8_t spaceNumber)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x6c;
|
||||
*pData = spaceNumber;
|
||||
|
||||
return 3;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setRightSpace(uint8 spaceNumber)
|
||||
//** 函数功能:设置右间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setRightSpace(uint8_t *pData,uint8_t spaceNumber)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x51;
|
||||
*pData = spaceNumber;
|
||||
|
||||
return 3;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setWordSpace(uint8 wordSpace)
|
||||
//** 函数功能:设置字间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setWordSpace(uint8_t *pData, uint8_t wordSpace)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x70;
|
||||
*pData = wordSpace;
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setRowSpace(uint8 rowSpace)
|
||||
//** 函数功能:设置字间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setRowSpace(uint8_t *pData, uint8_t rowSpace)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x31;
|
||||
*pData = rowSpace;
|
||||
return 3;
|
||||
}
|
||||
//F*****************************************************************************
|
||||
//* NAME:
|
||||
//* PURPOSE:
|
||||
//* PARAMS:
|
||||
//* return:
|
||||
//******************************************************************************
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
#ifndef __Printf_H_
|
||||
#define __Printf_H_
|
||||
//硬件定义
|
||||
#define PrintfUsart USART3
|
||||
#define Printf_DMA DMA1
|
||||
|
||||
#define Printf_TX_DMAAddrSet(x) (DMA1_Channel2->CMAR = x) //设置发送缓存地址
|
||||
#define Printf_TX_DMALenSet(x) (DMA1_Channel2->CNDTR = x) //设置发送DMA长度
|
||||
#define Printf_TX_DMAStart() DMA_Cmd(DMA1_Channel2,ENABLE) //开启发送DMA
|
||||
#define Printf_TX_DMAStop() DMA_Cmd(DMA1_Channel2,DISABLE) //开启发送DMA
|
||||
#define Printf_TX_DMAy_Channelx DMA1_Channel2 //Printf发送使用的DMA通道
|
||||
|
||||
|
||||
#define USART3_Print GPIO_ResetBits(GPIOA,GPIO_Pin_4);//485接收使能
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//字符定义
|
||||
#define LF 0x0a //打印换行命令
|
||||
#define ESC 0X1B
|
||||
#define J 0x4A
|
||||
#define DLE 0X10
|
||||
#define EOT 0X04
|
||||
#define PCR 0X0D
|
||||
|
||||
#define C_PrintPageLen 10 //定义页长
|
||||
#define C_multiple 2 //放大倍数
|
||||
#define C_leftSpace 1 //右限
|
||||
#define C_rightSpace 0 //右限
|
||||
#define C_wordSpace 1 //字间距
|
||||
#define C_rowSpace 4 //行间距
|
||||
|
||||
typedef enum
|
||||
{
|
||||
noSend,
|
||||
sending,
|
||||
}printProStae_TypeDef;
|
||||
|
||||
//******************************************************************************
|
||||
//*-------------- 变量声名 -----------------------------------------------------
|
||||
//******************************************************************************
|
||||
|
||||
//******************************************************************************
|
||||
//*-------------- 函数声名 -----------------------------------------------------
|
||||
//******************************************************************************
|
||||
extern void printUsartIsr(void);
|
||||
extern void printTxDmaInt(void);
|
||||
extern void printSend(u8 *pData, u8 len);
|
||||
extern void Print_Num(u8 GunNum,u8 Lin,u64 Num,u8 Dec);
|
||||
extern uint8_t print_init(uint8_t *pdata);
|
||||
extern uint8_t printChinese(uint8_t *pData);
|
||||
extern uint8_t printLF(uint8_t *pdata);
|
||||
extern uint8_t printCR(uint8_t *pData);
|
||||
extern uint8_t LFnRow(uint8_t *pData,uint8_t row);
|
||||
extern uint8_t setPageLen(uint8_t *pData,uint8_t pageLen);
|
||||
extern uint8_t setLeftSpace(uint8_t *pData,uint8_t spaceNumber);
|
||||
extern uint8_t setRightSpace(uint8_t *pData,uint8_t spaceNumber);
|
||||
extern uint8_t setWordSpace(uint8_t *pData, uint8_t wordSpace);
|
||||
extern uint8_t setRowSpace(uint8_t *pData, uint8_t rowSpace);
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PT_Null,
|
||||
PT_LastRecord,
|
||||
PT_Record,
|
||||
|
||||
}PrintItem;
|
||||
|
||||
extern void Printf_DMATX_IRQHandler(void);
|
||||
|
||||
extern void Printf_Init(void);
|
||||
extern void PrintfTask(void);
|
||||
void Printf_UpData(u8 GunNum, PrintItem Type);
|
||||
#endif //#ifndef
|
||||
@@ -0,0 +1,219 @@
|
||||
/*C*****************************************************************************
|
||||
* NAME: print.c
|
||||
*-------------------------------------------------------------------------------
|
||||
* RELEASE:
|
||||
* REVISION: 1.0
|
||||
*-------------------------------------------------------------------------------
|
||||
* PURPOSE:
|
||||
*
|
||||
*******************************************************************************/
|
||||
/*_____ I N C L U D E S ______________________________________________________*/
|
||||
|
||||
#include "main_def.h" //全局声明
|
||||
|
||||
uint8_t printBuf[gunNumber][C_printBuf];
|
||||
uint32_t printQueue[gunNumber][C_printQueue];
|
||||
|
||||
volatile printProStae_TypeDef printState = noSend;
|
||||
|
||||
|
||||
|
||||
//******************************************************************************
|
||||
// printUsartIsr(void) 打印串口中断
|
||||
//******************************************************************************
|
||||
void printUsartIsr(void)
|
||||
{
|
||||
//TC中断
|
||||
if((printUsart->SR & USART_FLAG_TC) != 0)
|
||||
{
|
||||
// printUsart->CR1 &= ~USART_Mode_Tx;
|
||||
printUsart->CR1 &= ~USART_FLAG_TC; //禁止TC中断
|
||||
printUsart->SR &= ~USART_FLAG_TC; //清除TC中断标志
|
||||
printState = noSend;
|
||||
}
|
||||
//RX中断
|
||||
else if((printUsart->SR & USART_FLAG_RXNE) != 0)
|
||||
{
|
||||
printUsart->CR1 &= ~USART_FLAG_RXNE; ///禁止接收中断
|
||||
printUsart->SR &= ~USART_FLAG_RXNE; ///清接收中断
|
||||
}
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
// printTxDmaInt 打印DMA串口中断
|
||||
//******************************************************************************
|
||||
void printTxDmaInt(void)
|
||||
{
|
||||
printT_DMAy_Channelx->CCR &= ~0x01; //使用能DMA
|
||||
printT_DMAy_Channelx->CCR &= ~DMA_IT_TC; //禁止DMA中断
|
||||
print_DMA->IFCR |= 0X01 << ((printTxDmaChNb - 1)<< 2); ///清DMA中断
|
||||
printUsart->CR1 |= USART_FLAG_TC; //使能TC中断
|
||||
printUsart->CR3 &= ~(0X01 << 7); //禁用口发送触发
|
||||
}
|
||||
|
||||
//******************************************************************************
|
||||
//printSend
|
||||
//******************************************************************************
|
||||
void printSend(uint8_t *pData, uint8_t len)
|
||||
{
|
||||
printState = sending;
|
||||
printUsart->CR1 &= ~USART_Mode_Rx;
|
||||
printUsart->CR1 |= USART_Mode_Tx;
|
||||
///初始化默认值
|
||||
//启动DMA数据发送
|
||||
printT_DMAy_Channelx->CMAR = (u32)pData; ///初始化源寄存器地址
|
||||
printT_DMAy_Channelx->CPAR = (u32)(&(printUsart->DR)); ///初始化目的寄存器地址
|
||||
printT_DMAy_Channelx->CNDTR = len; ///初始化数据个数
|
||||
//使能串口DMA
|
||||
print_DMA->IFCR |= 0X01 << ((printTxDmaChNb - 1) << 2);
|
||||
printT_DMAy_Channelx->CCR |= DMA_IT_TC; ///使能DMATC中断
|
||||
printT_DMAy_Channelx->CCR |= 0x01; ///使用能DMA
|
||||
printUsart->SR &= ~USART_FLAG_TC ; ///清除TC中断标志
|
||||
printUsart->CR1 &= ~USART_FLAG_TC ; ///禁止TC中断
|
||||
printUsart->CR3 &= ~(0x01 << 6);
|
||||
printUsart->CR3 |= 0X01 << 7; //启用串口触发DMA
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:print_init()
|
||||
//** 函数功能:硬件初始化。
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t print_init(uint8_t *pData)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData = 0x40;
|
||||
return 2;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:printSetChinese()
|
||||
//** 函数功能:设置中文打印
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t printChinese(uint8_t *pData)
|
||||
{
|
||||
*pData++ = 0X1C;
|
||||
*pData++ = '&';
|
||||
return 2;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:printCR()
|
||||
//** 函数功能:打印当前所有,并走一行
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t printCR(uint8_t *pData)
|
||||
{
|
||||
*pData = PCR;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:printLF()
|
||||
//** 函数功能:走纸。
|
||||
//** 入口参数:
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t printLF(uint8_t *pData)
|
||||
{
|
||||
*pData = LF;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:LFnRow()
|
||||
//** 函数功能:执行N点行走纸。
|
||||
//** 入口参数:行数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t LFnRow(uint8_t *pData,uint8_t row)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = J;
|
||||
*pData = row;
|
||||
return 3;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setPageLen()
|
||||
//** 函数功能:设置页长。
|
||||
//** 入口参数:页长 (0表示256页)
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setPageLen(uint8_t *pData,uint8_t pageLen)
|
||||
{
|
||||
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x43;
|
||||
*pData = pageLen;
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setLeftSpace(uint8 spaceNumber)
|
||||
//** 函数功能:设置左间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setLeftSpace(uint8_t *pData,uint8_t spaceNumber)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x6c;
|
||||
*pData = spaceNumber;
|
||||
|
||||
return 3;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setRightSpace(uint8 spaceNumber)
|
||||
//** 函数功能:设置右间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setRightSpace(uint8_t *pData,uint8_t spaceNumber)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x51;
|
||||
*pData = spaceNumber;
|
||||
|
||||
return 3;
|
||||
}
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setWordSpace(uint8 wordSpace)
|
||||
//** 函数功能:设置字间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setWordSpace(uint8_t *pData, uint8_t wordSpace)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x70;
|
||||
*pData = wordSpace;
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
//********************************************************************************************************
|
||||
//** 函数名称:setRowSpace(uint8 rowSpace)
|
||||
//** 函数功能:设置字间距。
|
||||
//** 入口参数:间距数
|
||||
//** 出口参数:字节数量
|
||||
//*********************************************************************************************************/
|
||||
uint8_t setRowSpace(uint8_t *pData, uint8_t rowSpace)
|
||||
{
|
||||
*pData++ = ESC;
|
||||
*pData++ = 0x31;
|
||||
*pData = rowSpace;
|
||||
return 3;
|
||||
}
|
||||
//F*****************************************************************************
|
||||
//* NAME:
|
||||
//* PURPOSE:
|
||||
//* PARAMS:
|
||||
//* return:
|
||||
//******************************************************************************
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
#ifndef __PRINT_H_
|
||||
#define __PRINT_H_
|
||||
/*H******************************************************************************
|
||||
* NAME: time_count.h
|
||||
*********************************************************************************/
|
||||
//硬件定义
|
||||
#define printUsart USART3
|
||||
#define print_DMA DMA1
|
||||
#define printR_DMAy_Channelx DMA1_Channel3
|
||||
#define printT_DMAy_Channelx DMA1_Channel2
|
||||
#define printRxDmaChNb 3
|
||||
#define printTxDmaChNb 2
|
||||
//缓冲数定义
|
||||
#define C_printBuf 100
|
||||
|
||||
#define C_printQueue 80 //打印机消息队列
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//字符定义
|
||||
#define LF 0x0a //打印换行命令
|
||||
|
||||
#define ESC 0X1B
|
||||
|
||||
#define J 0x4A
|
||||
|
||||
#define DLE 0X10
|
||||
|
||||
#define EOT 0X04
|
||||
|
||||
#define PCR 0X0D
|
||||
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
noSend,
|
||||
sending,
|
||||
}printProStae_TypeDef;
|
||||
|
||||
|
||||
|
||||
|
||||
//******************************************************************************
|
||||
//*-------------- 变量声名 -----------------------------------------------------
|
||||
//******************************************************************************
|
||||
extern uint8_t printBuf[gunNumber][C_printBuf];
|
||||
extern uint32_t printQueue[gunNumber][C_printQueue];
|
||||
extern volatile printProStae_TypeDef printState;
|
||||
|
||||
|
||||
|
||||
//******************************************************************************
|
||||
//*-------------- 函数声名 -----------------------------------------------------
|
||||
//******************************************************************************
|
||||
extern void printUsartIsr(void);
|
||||
extern void printTxDmaInt(void);
|
||||
extern void printSend(u8 *pData, u8 len);
|
||||
|
||||
extern uint8_t print_init(uint8_t *pdata);
|
||||
extern uint8_t printChinese(uint8_t *pData);
|
||||
extern uint8_t printLF(uint8_t *pdata);
|
||||
extern uint8_t printCR(uint8_t *pData);
|
||||
extern uint8_t LFnRow(uint8_t *pData,uint8_t row);
|
||||
extern uint8_t setPageLen(uint8_t *pData,uint8_t pageLen);
|
||||
extern uint8_t setLeftSpace(uint8_t *pData,uint8_t spaceNumber);
|
||||
extern uint8_t setRightSpace(uint8_t *pData,uint8_t spaceNumber);
|
||||
extern uint8_t setWordSpace(uint8_t *pData, uint8_t wordSpace);
|
||||
extern uint8_t setRowSpace(uint8_t *pData, uint8_t rowSpace);
|
||||
|
||||
#endif //#ifndef
|
||||
Reference in New Issue
Block a user