hadif azli / Mbed 2 deprecated TEST123

Dependencies:   mbed Blynk

Committer:
lixianyu
Date:
Fri Jun 10 15:20:20 2016 +0000
Revision:
0:d8f4c441e032
u8glib???????????i2c???

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lixianyu 0:d8f4c441e032 1 /*
lixianyu 0:d8f4c441e032 2
lixianyu 0:d8f4c441e032 3 u8g_dev_a2_micro_printer_ds.c
lixianyu 0:d8f4c441e032 4
lixianyu 0:d8f4c441e032 5 Use DC2 bitmap command of the A2 Micro panel termal printer
lixianyu 0:d8f4c441e032 6 double stroke
lixianyu 0:d8f4c441e032 7
lixianyu 0:d8f4c441e032 8 Universal 8bit Graphics Library
lixianyu 0:d8f4c441e032 9
lixianyu 0:d8f4c441e032 10 Copyright (c) 2013, olikraus@gmail.com
lixianyu 0:d8f4c441e032 11 All rights reserved.
lixianyu 0:d8f4c441e032 12
lixianyu 0:d8f4c441e032 13 Redistribution and use in source and binary forms, with or without modification,
lixianyu 0:d8f4c441e032 14 are permitted provided that the following conditions are met:
lixianyu 0:d8f4c441e032 15
lixianyu 0:d8f4c441e032 16 * Redistributions of source code must retain the above copyright notice, this list
lixianyu 0:d8f4c441e032 17 of conditions and the following disclaimer.
lixianyu 0:d8f4c441e032 18
lixianyu 0:d8f4c441e032 19 * Redistributions in binary form must reproduce the above copyright notice, this
lixianyu 0:d8f4c441e032 20 list of conditions and the following disclaimer in the documentation and/or other
lixianyu 0:d8f4c441e032 21 materials provided with the distribution.
lixianyu 0:d8f4c441e032 22
lixianyu 0:d8f4c441e032 23 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
lixianyu 0:d8f4c441e032 24 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
lixianyu 0:d8f4c441e032 25 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
lixianyu 0:d8f4c441e032 26 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lixianyu 0:d8f4c441e032 27 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
lixianyu 0:d8f4c441e032 28 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
lixianyu 0:d8f4c441e032 29 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
lixianyu 0:d8f4c441e032 30 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
lixianyu 0:d8f4c441e032 31 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lixianyu 0:d8f4c441e032 32 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
lixianyu 0:d8f4c441e032 33 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
lixianyu 0:d8f4c441e032 34 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
lixianyu 0:d8f4c441e032 35 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lixianyu 0:d8f4c441e032 36
lixianyu 0:d8f4c441e032 37
lixianyu 0:d8f4c441e032 38 */
lixianyu 0:d8f4c441e032 39
lixianyu 0:d8f4c441e032 40 #include "u8g.h"
lixianyu 0:d8f4c441e032 41
lixianyu 0:d8f4c441e032 42 #define LINE_DELAY 40
lixianyu 0:d8f4c441e032 43
lixianyu 0:d8f4c441e032 44
lixianyu 0:d8f4c441e032 45 uint8_t u8g_dev_a2_micro_printer_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
lixianyu 0:d8f4c441e032 46 {
lixianyu 0:d8f4c441e032 47 switch(msg)
lixianyu 0:d8f4c441e032 48 {
lixianyu 0:d8f4c441e032 49 case U8G_DEV_MSG_INIT:
lixianyu 0:d8f4c441e032 50 u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE);
lixianyu 0:d8f4c441e032 51 break;
lixianyu 0:d8f4c441e032 52 case U8G_DEV_MSG_STOP:
lixianyu 0:d8f4c441e032 53 break;
lixianyu 0:d8f4c441e032 54 case U8G_DEV_MSG_PAGE_NEXT:
lixianyu 0:d8f4c441e032 55 {
lixianyu 0:d8f4c441e032 56 uint8_t y, i, j;
lixianyu 0:d8f4c441e032 57 uint8_t *ptr;
lixianyu 0:d8f4c441e032 58 u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
lixianyu 0:d8f4c441e032 59
lixianyu 0:d8f4c441e032 60 y = pb->p.page_y0;
lixianyu 0:d8f4c441e032 61 ptr = pb->buf;
lixianyu 0:d8f4c441e032 62
lixianyu 0:d8f4c441e032 63 u8g_WriteByte(u8g, dev, 27); /* ESC */
lixianyu 0:d8f4c441e032 64 u8g_WriteByte(u8g, dev, 55 ); /* parameter command */
lixianyu 0:d8f4c441e032 65 u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/
lixianyu 0:d8f4c441e032 66 u8g_WriteByte(u8g, dev, 160); /* 3-255 Heating time,Unit(10us),Default:80(800us) */
lixianyu 0:d8f4c441e032 67 u8g_WriteByte(u8g, dev, 20); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/
lixianyu 0:d8f4c441e032 68
lixianyu 0:d8f4c441e032 69 u8g_WriteByte(u8g, dev, 18); /* DC2 */
lixianyu 0:d8f4c441e032 70 u8g_WriteByte(u8g, dev, 42 ); /* * */
lixianyu 0:d8f4c441e032 71 u8g_WriteByte(u8g, dev, pb->p.page_height );
lixianyu 0:d8f4c441e032 72 u8g_WriteByte(u8g, dev, pb->width/8 );
lixianyu 0:d8f4c441e032 73
lixianyu 0:d8f4c441e032 74 for( i = 0; i < pb->p.page_height; i ++ )
lixianyu 0:d8f4c441e032 75 {
lixianyu 0:d8f4c441e032 76 for( j = 0; j < pb->width/8; j++ )
lixianyu 0:d8f4c441e032 77 {
lixianyu 0:d8f4c441e032 78 u8g_WriteByte(u8g, dev, *ptr);
lixianyu 0:d8f4c441e032 79 ptr++;
lixianyu 0:d8f4c441e032 80 }
lixianyu 0:d8f4c441e032 81 u8g_Delay(LINE_DELAY);
lixianyu 0:d8f4c441e032 82 y++;
lixianyu 0:d8f4c441e032 83 }
lixianyu 0:d8f4c441e032 84
lixianyu 0:d8f4c441e032 85 /* set parameters back to their default values */
lixianyu 0:d8f4c441e032 86 u8g_WriteByte(u8g, dev, 27); /* ESC */
lixianyu 0:d8f4c441e032 87 u8g_WriteByte(u8g, dev, 55 ); /* parameter command */
lixianyu 0:d8f4c441e032 88 u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/
lixianyu 0:d8f4c441e032 89 u8g_WriteByte(u8g, dev, 80); /* 3-255 Heating time,Unit(10us),Default:80(800us) */
lixianyu 0:d8f4c441e032 90 u8g_WriteByte(u8g, dev, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/
lixianyu 0:d8f4c441e032 91
lixianyu 0:d8f4c441e032 92 }
lixianyu 0:d8f4c441e032 93 break;
lixianyu 0:d8f4c441e032 94 }
lixianyu 0:d8f4c441e032 95 return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
lixianyu 0:d8f4c441e032 96 }
lixianyu 0:d8f4c441e032 97
lixianyu 0:d8f4c441e032 98 static uint8_t u8g_dev_expand4(uint8_t val)
lixianyu 0:d8f4c441e032 99 {
lixianyu 0:d8f4c441e032 100 uint8_t a,b,c,d;
lixianyu 0:d8f4c441e032 101 a = val&1;
lixianyu 0:d8f4c441e032 102 b = (val&2)<<1;
lixianyu 0:d8f4c441e032 103 c = (val&4)<<2;
lixianyu 0:d8f4c441e032 104 d = (val&8)<<3;
lixianyu 0:d8f4c441e032 105 a |=b;
lixianyu 0:d8f4c441e032 106 a |=c;
lixianyu 0:d8f4c441e032 107 a |=d;
lixianyu 0:d8f4c441e032 108 a |= a<<1;
lixianyu 0:d8f4c441e032 109 return a;
lixianyu 0:d8f4c441e032 110 }
lixianyu 0:d8f4c441e032 111
lixianyu 0:d8f4c441e032 112 uint8_t u8g_dev_a2_micro_printer_double_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg)
lixianyu 0:d8f4c441e032 113 {
lixianyu 0:d8f4c441e032 114 switch(msg)
lixianyu 0:d8f4c441e032 115 {
lixianyu 0:d8f4c441e032 116 case U8G_DEV_MSG_INIT:
lixianyu 0:d8f4c441e032 117 u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_NONE);
lixianyu 0:d8f4c441e032 118 break;
lixianyu 0:d8f4c441e032 119 case U8G_DEV_MSG_STOP:
lixianyu 0:d8f4c441e032 120 break;
lixianyu 0:d8f4c441e032 121 case U8G_DEV_MSG_PAGE_FIRST:
lixianyu 0:d8f4c441e032 122 {
lixianyu 0:d8f4c441e032 123 //u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
lixianyu 0:d8f4c441e032 124 //u8g_WriteByte(u8g, dev, 18); /* DC2 */
lixianyu 0:d8f4c441e032 125 //u8g_WriteByte(u8g, dev, 42 ); /* * */
lixianyu 0:d8f4c441e032 126 //u8g_WriteByte(u8g, dev, pb->p.total_height*2 );
lixianyu 0:d8f4c441e032 127 //u8g_WriteByte(u8g, dev, pb->width/8*2 );
lixianyu 0:d8f4c441e032 128 }
lixianyu 0:d8f4c441e032 129 break;
lixianyu 0:d8f4c441e032 130 case U8G_DEV_MSG_PAGE_NEXT:
lixianyu 0:d8f4c441e032 131 {
lixianyu 0:d8f4c441e032 132 uint8_t y, i, j;
lixianyu 0:d8f4c441e032 133 uint8_t *ptr;
lixianyu 0:d8f4c441e032 134 uint8_t *p2;
lixianyu 0:d8f4c441e032 135 u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
lixianyu 0:d8f4c441e032 136
lixianyu 0:d8f4c441e032 137 y = pb->p.page_y0;
lixianyu 0:d8f4c441e032 138 ptr = pb->buf;
lixianyu 0:d8f4c441e032 139 //u8g_WriteByte(u8g, dev, 18); /* DC2 */
lixianyu 0:d8f4c441e032 140 //u8g_WriteByte(u8g, dev, 35 ); /* # */
lixianyu 0:d8f4c441e032 141 //u8g_WriteByte(u8g, dev, 0x0ff ); /* max */
lixianyu 0:d8f4c441e032 142
lixianyu 0:d8f4c441e032 143 u8g_WriteByte(u8g, dev, 27); /* ESC */
lixianyu 0:d8f4c441e032 144 u8g_WriteByte(u8g, dev, 55 ); /* parameter command */
lixianyu 0:d8f4c441e032 145 u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/
lixianyu 0:d8f4c441e032 146 u8g_WriteByte(u8g, dev, 160); /* 3-255 Heating time,Unit(10us),Default:80(800us) */
lixianyu 0:d8f4c441e032 147 u8g_WriteByte(u8g, dev, 20); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/
lixianyu 0:d8f4c441e032 148
lixianyu 0:d8f4c441e032 149 u8g_WriteByte(u8g, dev, 18); /* DC2 */
lixianyu 0:d8f4c441e032 150 u8g_WriteByte(u8g, dev, 42 ); /* * */
lixianyu 0:d8f4c441e032 151 u8g_WriteByte(u8g, dev, pb->p.page_height*2 );
lixianyu 0:d8f4c441e032 152 u8g_WriteByte(u8g, dev, pb->width/8*2 );
lixianyu 0:d8f4c441e032 153
lixianyu 0:d8f4c441e032 154 for( i = 0; i < pb->p.page_height; i ++ )
lixianyu 0:d8f4c441e032 155 {
lixianyu 0:d8f4c441e032 156 p2 = ptr;
lixianyu 0:d8f4c441e032 157 for( j = 0; j < pb->width/8; j++ )
lixianyu 0:d8f4c441e032 158 {
lixianyu 0:d8f4c441e032 159 u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 >> 4));
lixianyu 0:d8f4c441e032 160 u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 & 15));
lixianyu 0:d8f4c441e032 161 p2++;
lixianyu 0:d8f4c441e032 162 }
lixianyu 0:d8f4c441e032 163 u8g_Delay(LINE_DELAY);
lixianyu 0:d8f4c441e032 164 p2 = ptr;
lixianyu 0:d8f4c441e032 165 for( j = 0; j < pb->width/8; j++ )
lixianyu 0:d8f4c441e032 166 {
lixianyu 0:d8f4c441e032 167 u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 >> 4));
lixianyu 0:d8f4c441e032 168 u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 & 15));
lixianyu 0:d8f4c441e032 169 p2++;
lixianyu 0:d8f4c441e032 170 }
lixianyu 0:d8f4c441e032 171 u8g_Delay(LINE_DELAY);
lixianyu 0:d8f4c441e032 172 ptr += pb->width/8;
lixianyu 0:d8f4c441e032 173 y++;
lixianyu 0:d8f4c441e032 174 }
lixianyu 0:d8f4c441e032 175
lixianyu 0:d8f4c441e032 176 /* set parameters back to their default values */
lixianyu 0:d8f4c441e032 177 u8g_WriteByte(u8g, dev, 27); /* ESC */
lixianyu 0:d8f4c441e032 178 u8g_WriteByte(u8g, dev, 55 ); /* parameter command */
lixianyu 0:d8f4c441e032 179 u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/
lixianyu 0:d8f4c441e032 180 u8g_WriteByte(u8g, dev, 80); /* 3-255 Heating time,Unit(10us),Default:80(800us) */
lixianyu 0:d8f4c441e032 181 u8g_WriteByte(u8g, dev, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/
lixianyu 0:d8f4c441e032 182
lixianyu 0:d8f4c441e032 183 }
lixianyu 0:d8f4c441e032 184 break;
lixianyu 0:d8f4c441e032 185 }
lixianyu 0:d8f4c441e032 186 return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg);
lixianyu 0:d8f4c441e032 187 }
lixianyu 0:d8f4c441e032 188
lixianyu 0:d8f4c441e032 189 #if defined(U8G_16BIT)
lixianyu 0:d8f4c441e032 190 U8G_PB_DEV(u8g_dev_a2_micro_printer_384x240, 384, 240, 8, u8g_dev_a2_micro_printer_fn, u8g_com_null_fn);
lixianyu 0:d8f4c441e032 191 U8G_PB_DEV(u8g_dev_a2_micro_printer_192x360_ds, 192, 360, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn);
lixianyu 0:d8f4c441e032 192 U8G_PB_DEV(u8g_dev_a2_micro_printer_192x720_ds, 192, 720, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn);
lixianyu 0:d8f4c441e032 193 #else
lixianyu 0:d8f4c441e032 194 U8G_PB_DEV(u8g_dev_a2_micro_printer_384x240, 240, 240, 8, u8g_dev_a2_micro_printer_fn, u8g_com_null_fn);
lixianyu 0:d8f4c441e032 195 U8G_PB_DEV(u8g_dev_a2_micro_printer_192x360_ds, 192, 240, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn);
lixianyu 0:d8f4c441e032 196 U8G_PB_DEV(u8g_dev_a2_micro_printer_192x720_ds, 192, 240, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn);
lixianyu 0:d8f4c441e032 197 #endif
lixianyu 0:d8f4c441e032 198
lixianyu 0:d8f4c441e032 199 U8G_PB_DEV(u8g_dev_a2_micro_printer_192x120_ds, 192, 120, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn);
lixianyu 0:d8f4c441e032 200