模块:GM65条码模块
平台:正点原子精英版
作用:模块连接到串口3,在LCD屏上打印扫描到的数据和数据长度,左半区域为历史数据,右区域为实时数据及其长度
效果图:
驱动程序:
unsigned int usart_table_get[20];//条码数据存储
unsigned int max=0;//条码数据数量
void USART3_IRQHandler(void) //串口3中断服务程序
{
if(USART_GetITStatus(USART3,USART_IT_RXNE) != RESET)
{
u8 DATA_ASCII;
static u8 i=0;
static u8 a=0;
USART_ClearITPendingBit(USART3,USART_IT_RXNE);
DATA_ASCII = USART_ReceiveData(USART3);
usart_table_get[i++]=DATA_ASCII;
if(DATA_ASCII==0x0D)
{
max=i-1;
while(i>1)
{
USART_ITConfig(USART3,USART_IT_RXNE,DISABLE);
//LCD左半区域打印历史数据,占满后清空
LCD_ShowChar(0+((i-2)*12),a*40,usart_table_get[i-2],24,0);
i--;
}
i=0;
a++;
if(a==20)
{
a=0;
LCD_Fill(0,0,240,800,GRAY);
}
}
USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
}
}
实现程序:
if(max1!=max)//若两次打印的条码数量不同,清空实时显示的区域
LCD_Fill(240,0,480,24,GRAY);
if(max>0&&max<20)
{
max1=max;
for(i=0;i<max1;i++)
LCD_ShowChar(240+i*12,0,usart_table_get[i],24,0);
}
LCD_ShowNum(240,40,max,2,24);//打印条码数据数量