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

Dependencies:   AS289R2 mbed

Files at this revision

API Documentation at this revision

Comitter:
MACRUM
Date:
Sat Sep 03 04:33:46 2016 +0000
Child:
1:3a6d4c7a3a73
Commit message:
Initial commit

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sat Sep 03 04:33:46 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/f9eeca106725
\ No newline at end of file