AS-289R2 library test code for mbed 2 (classic)

Dependencies:   AS289R2 mbed

Revision:
0:c407b8539f80
Child:
1:3a6d4c7a3a73
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Sep 03 04:33:46 2016 +0000
@@ -0,0 +1,168 @@
+
+
+#include "mbed.h"
+
+Serial _serial(D1, D0);  // tx, rx
+
+#define AS289_FNC_ENABLE    0x31
+#define AS289_FNC_DISABLE   0x30
+
+#define AS289_KANJI_24x24   0x30
+#define AS289_KANJI_16x16   0x31
+
+#define AS289_ANK_8x16      0x30
+#define AS289_ANK_12x16     0x31
+#define AS289_ANK_16x16     0x32
+#define AS289_ANK_24x24     0x33
+#define AS289_ANK_DEFAULT   0x31
+
+#define AS289_QR_ERR_LVL_L  0x4C
+#define AS289_QR_ERR_LVL_M  0x4D
+#define AS289_QR_ERR_LVL_Q  0x51
+#define AS289_QR_ERR_LVL_H  0x48
+
+#define AS289_BCODE_UPC_A   0x30
+#define AS289_BCODE_JAN13   0x32
+#define AS289_BCODE_JAN8    0x33
+#define AS289_BCODE_CODE39  0x34
+#define AS289_BCODE_ITF     0x35
+#define AS289_BCODE_CODABAR 0x36
+    
+void LineFeed(uint32_t lines);
+void Init(void);
+void ClearBuffer(void);
+void DoubleSizeHeight(uint32_t param);
+void DoubleSizeWidth(uint32_t param);
+void SetLargeFont(uint32_t param);
+void PrintQRCode(uint32_t err, char* buf);
+void PrintBarCode(uint32_t code, char* param);
+void SetANKFont(uint32_t font);
+void PrintBitmapImage(uint32_t cmd, uint32_t lines, char * image);
+
+
+void LineFeed(uint32_t lines)
+{
+    for(uint32_t i = 0; i < lines; i++) {
+        _serial.putc('\r');
+    }
+}
+
+void Init(void)
+{
+    _serial.printf("\x1B\x40");
+}
+
+void ClearBuffer(void)
+{
+    _serial.putc(0x18);
+}
+
+void DoubleSizeHeight(uint32_t param)
+{
+    char buf[3] = {0x1B, 0x4E};
+    buf[2] = param;
+    for (uint32_t i = 0; i < sizeof(buf); i++) {
+        _serial.putc(buf[i]);
+    }
+}
+
+void DoubleSizeWidth(uint32_t param)
+{
+    char buf[3] = {0x1B, 0x57};
+    buf[2] = param;
+    for (uint32_t i = 0; i < sizeof(buf); i++) {
+        _serial.putc(buf[i]);
+    }
+}
+
+void SetLargeFont(uint32_t param)
+{
+    char buf[3] = {0x1B, 0x4C};
+    buf[2] = param;
+    for (uint32_t i = 0; i < sizeof(buf); i++) {
+        _serial.putc(buf[i]);
+    }
+}
+
+void SetANKFont(uint32_t font)
+{
+    char buf[3] = {0x1B, 0x68};
+    buf[2] = font;
+    for (uint32_t i = 0; i < sizeof(buf); i++) {
+        _serial.putc(buf[i]);
+    }
+}
+
+void PrintQRCode(uint32_t err, char* param)
+{
+    uint32_t len = strlen(param);
+    char buf[4] = {0x1D, 0x78};
+    buf[2] = err;
+    buf[3] = len;
+    for (uint32_t i = 0; i < sizeof(buf); i++) {
+        _serial.putc(buf[i]);
+    }
+    for (uint32_t i = 0; i < len; i++) {
+        _serial.putc(param[i]);
+    }
+}
+
+void PrintBarCode(uint32_t code, char* param)
+{
+    char buf[3] = {0x1D, 0x6B};
+    buf[2] = code;
+    for (uint32_t i = 0; i < sizeof(buf); i++) {
+        _serial.putc(buf[i]);
+    }
+    for (uint32_t i = 0; i < strlen(param); i++) {
+        _serial.putc(param[i]);
+    }
+    _serial.putc('\0');
+}
+
+void PrintBitmapImage(uint32_t mode, uint16_t lines, char * image)
+{
+    char buf[3] = {0x1C, 0x2A};
+    buf[2] = mode;
+    for (uint32_t i = 0; i < sizeof(buf); i++) {
+        _serial.putc(buf[i]);
+    }
+    _serial.putc((lines >> 8) & 0xFF); // n1
+    _serial.putc((lines >> 0) & 0xFF); // n2
+    
+    if (mode == 0x61) {
+        return;
+    }
+    
+    for (uint32_t i = 0; i < (48 * lines); i++) {
+        _serial.putc(image[i]);
+    }
+}
+
+int main()
+{
+    Init();
+    LineFeed(2);
+
+    // Text print
+    _serial.printf("** Thermal Printer Shield **\r");
+    DoubleSizeWidth(AS289_FNC_ENABLE);
+    _serial.printf("AS-289R2\r\r");
+    DoubleSizeWidth(AS289_FNC_DISABLE);
+    _serial.printf("日本語文字列の印字テストです。\r\r");
+    DoubleSizeHeight(AS289_FNC_DISABLE);
+    _serial.printf("0123456789\r");
+    LineFeed(2);
+
+    // Barcode print
+    SetANKFont(AS289_ANK_8x16);
+    _serial.printf("QR\r");
+    PrintQRCode(AS289_QR_ERR_LVL_M, "https://developer.mbed.org");
+    LineFeed(2);
+
+    _serial.printf("UPC-A\r");
+    PrintBarCode(AS289_BCODE_UPC_A, "01234567890");
+    LineFeed(6);
+
+    while(1);
+}