?? print.c
字號:
/****************************************Copyright (c)**************************************************
**
**
**
**
**--------------File Info-------------------------------------------------------------------------------
** File name: PRINT.c
** Last modified Date:
** Last Version: 1.0
** Descriptions: 打印機驅動
**
**------------------------------------------------------------------------------------------------------
** Created by: 潘妙青
** Created date: 2002-2-25
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#define __SRC
#include"PRINT.h"
#undef __SRC
#define PRINT_ADDRESS 0x83FEFFFF
//#define PRINT_ACKCOM (0x00000000 | (1 << 23))
#define PRINT_STBCOM (0x00000000 | (1 << 23))
#define PRINT_BUSYCOM (0x00000000 | (1 << 24))
void print_port_init(void)
{
// PINSEL0 = PINSEL0 & (~PRINT_STBCOM); //SET P0.23 GPIO
// PINSEL0 = PINSEL0 & (~PRINT_BUSYCOM); //SET P0.24 GPIO
IO0DIR = IO0DIR | PRINT_STBCOM; //SET P0.23 OUT
// IO0DIR = IO0DIR & (~PRINT_ACKCOM); //SET P0.23 IN
IO0DIR = IO0DIR & (~PRINT_BUSYCOM); //SET P0.24 IN
}
/****************************************************************************
* 名稱:print_busy()
* 功能:查詢打印機狀態
* 入口參數:
* 出口參數:
****************************************************************************/
int print_busy(void)
{
if(IO0PIN & PRINT_BUSYCOM)
return 1;
else
return 0;
}
/****************************************************************************
* 名稱:print_ack()
* 功能:查詢打印機應答
* 入口參數:
* 出口參數:
****************************************************************************/
//int print_ack(void)
//{
// if(!(IO0PIN & PRINT_ACKCOM))
// return 1;
// else
// return 0;
//}
/****************************************************************************
* 名稱:print_byte()
* 功能:打印一字節
* 入口參數:打印數據
* 出口參數:
****************************************************************************/
void print_byte(uint8 data)
{
volatile uint8 *print_addr = (volatile uint8 *)PRINT_ADDRESS;
while(print_busy()); //等待打印機空閑
IO0CLR = PRINT_STBCOM; //選通打印機
*print_addr = data;
IO0SET = PRINT_STBCOM; //選通打印機
}
/****************************************************************************
* 名稱:print_init()
* 功能:打印接口初始化
* 入口參數:
* 出口參數:
****************************************************************************/
void print_init(void)
{
print_port_init();
print_byte(0x1B);
print_byte(0x40); //初始化打印機
// print_byte(0x1B);
// print_byte(0x61);
// print_byte(0x00); //設定左邊界對齊
// print_byte(0x1B);
// print_byte(0x63);
// print_byte(0x34);
// print_byte(0x01); //設定無紙停止打印
// print_byte(0x1B);
// print_byte(0x4C);
// print_byte(0x04); //設定左邊界對齊為4mm
return;
}
void entry_chinese_print_mode(void)
{
print_byte(0x1C);
print_byte(0x26); //設定漢字模式
return;
}
void leave_chinese_print_mode(void)
{
print_byte(0x1C);
print_byte(0x2E); //退出漢字模式
return;
}
void reset_print(void)
{
print_byte(0x1B);
print_byte(0x40); //清除打印緩沖
//恢復默認值
//選擇字符打印方式
}
void set_left_justify(void)
{
print_byte(0x1B);
print_byte(0x61);
print_byte(0x00); //設定左對齊,一直有效到下一次重新設定
}
void set_center_justify(void)
{
print_byte(0x1B);
print_byte(0x61);
print_byte(0x01); //設定中心對齊,一直有效到下一次重新設定
}
void set_right_justify(void)
{
print_byte(0x1B);
print_byte(0x61);
print_byte(0x02); //設定右對齊,一直有效到下一次重新設定
}
void cansel_justify_mode(void)
{
print_byte(0x1B);
print_byte(0x61);
print_byte(0x03); //取消對齊方式
}
void start_print(void)
{
print_byte(0x0A); //打印并換行
}
void print_and_forward(uint8 mm)
{
print_byte(0x1B);
print_byte(0x4A);
print_byte(8 * mm); //打印并向前走n毫米,只對本行有效
}
void print_and_backward(uint8 mm)
{
print_byte(0x1B);
print_byte(0x6A);
if(mm > 225)
mm = 225;
print_byte(8 * mm); //打印并向后走n毫米,只對本行有效
print_byte(0x0A);
}
void set_row_space_4mm(void) //設定行間距為4毫米
{
print_byte(0x1B);
print_byte(0x32);
}
void set_row_space(uint8 mm)
{
print_byte(0x1B);
print_byte(0x33);
if(mm > 225)
mm = 225;
print_byte(8 * mm); //設定行間距為mm毫米
}
void set_right_space(uint8 mm)
{
print_byte(0x1B);
print_byte(0x20);
print_byte(8 * mm); //設定西文字符右邊空mm毫米
}
void set_print_mode(uint8 mode) //0:不放大 1:倍高 2:倍寬 3:倍寬 + 倍高
{
print_byte(0x1B);
print_byte(0x21);
switch(mode)
{
case 0:
print_byte(0x00);
break;
case 1:
print_byte(0x10);
break;
case 2:
print_byte(0x20);
break;
case 3:
print_byte(0x30);
break;
default:
print_byte(0x00);
}
}
void set_row_double_width(void) //一行內該命令后字符以正常寬度2倍打印
{
print_byte(0x1B);
print_byte(0x0E);
print_byte(0x0A);
}
void set_nopaper_stop(void)
{
print_byte(0x1B);
print_byte(0x63);
print_byte(0x34);
print_byte(0x01);
print_byte(0x0A);
}
void forward_cut_all(uint8 mm) //flag = 0:直接切紙 flag = 1:走紙n毫米切紙
{
print_byte(0x1D);
print_byte(0x56);
print_byte(0x42); //走紙n毫米切紙
print_byte(mm * 8);
print_byte(0x0A);
}
void cut_all(void)
{
print_byte(0x1B);
print_byte(0x69);
print_byte(0x0A);
}
void cut_half(void)
{
print_byte(0x1B);
print_byte(0x6D);
print_byte(0x0A);
}
void set_absolute_position()
{
}
void set_print_pic()
{
}
void print_pic()
{
}
/****************************************************************************
* 名稱:print_string()
* 功能:打印字符串
* 入口參數:打印字符,長度
* 出口參數:
****************************************************************************/
void print_string(char *data, int datalen)
{
int i;
if(data == NULL || datalen == 0)
return;
for(i = 0; i < datalen; i++)
print_byte(*(data + i));
return;
}
void print_chinese_string(char *data, int datalen)
{
int i;
if(data == NULL || datalen == 0)
return;
entry_chinese_print_mode();
for(i = 0; i < datalen; i++)
print_byte(*(data + i));
leave_chinese_print_mode();
return;
}
void print_picture(char *string, int strlen)
{
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -