@mixly/arduino-avr
Version:
适用于mixly的arduino avr模块
1,088 lines (1,013 loc) • 63.9 kB
JavaScript
import { Profile, JSFuncs } from 'mixly';
import { Variables } from 'blockly/core';
export const group_lcd_init2 = function (_, generator) {
var varName = this.getFieldValue('VAR');
var TYPE = this.getFieldValue('TYPE');
var SCL = this.getFieldValue('SCL');
var SDA = this.getFieldValue('SDA');
var board_type = JSFuncs.getPlatform();
var device = generator.valueToCode(this, 'device', generator.ORDER_ATOMIC) || '0x27';
if (SDA == Profile.default.SDA[0][1] && SCL == Profile.default.SCL[0][1]) {
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_LiquidCrystal_I2C'] = '#include <LiquidCrystal_I2C.h>';
generator.definitions_['var_declare_LiquidCrystal_I2C_' + varName] = 'LiquidCrystal_I2C ' + varName + '(' + device + ',' + TYPE + ');';
}
else {
if (board_type.match(RegExp(/AVR/))) {
generator.definitions_['include_SoftI2CMaster'] = '#include <SoftI2CMaster.h>';
generator.definitions_['include_LiquidCrystal_SoftI2C'] = '#include <LiquidCrystal_SoftI2C.h>';
generator.definitions_['var_declare_LiquidCrystal_SoftI2C_' + varName] = 'LiquidCrystal_SoftI2C ' + varName + '(' + device + ',' + TYPE + ',' + SCL + ',' + SDA + ');';
}
else {
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_LiquidCrystal_SoftI2C'] = '#include <LiquidCrystal_I2C.h>';
generator.definitions_['var_declare_LiquidCrystal_I2C_' + varName] = 'LiquidCrystal_I2C ' + varName + '(' + device + ',' + TYPE + ');';
generator.setups_["setup_Wire"] = 'Wire.begin(' + SDA + ',' + SCL + ');';
}
}
generator.setups_['setup_lcd_init_' + varName] = varName + '.init();';
generator.setups_['setup_lcd_backlight_' + varName] = varName + '.backlight();';
return '';
};
export const group_lcd_init3 = function (_, generator) {
var varName = this.getFieldValue('VAR');
var TYPE = this.getFieldValue('TYPE');
var RS = this.getFieldValue('RS');
var EN = this.getFieldValue('EN');
var D4 = this.getFieldValue('D4');
var D5 = this.getFieldValue('D5');
var D6 = this.getFieldValue('D6');
var D7 = this.getFieldValue('D7');
generator.definitions_['include_LiquidCrystal'] = '#include <LiquidCrystal.h>';
generator.definitions_['var_declare_LiquidCrystal' + varName] = 'LiquidCrystal ' + varName + '(' + RS + ',' + EN + ',' + D4 + ',' + D5 + ',' + D6 + ',' + D7 + ');';
generator.setups_['setup_lcd_begin_' + varName] = varName + '.begin(' + TYPE + ');';
return '';
};
export const group_lcd_print = function (_, generator) {
var varName = this.getFieldValue('VAR');
var str1 = generator.valueToCode(this, 'TEXT', generator.ORDER_ATOMIC) || '""';
var str2 = generator.valueToCode(this, 'TEXT2', generator.ORDER_ATOMIC) || '""';
var code = varName + '.setCursor(0, 0);\n'
code += varName + '.print(' + str1 + ');\n';
code += varName + '.setCursor(0, 1);\n';
code += varName + '.print(' + str2 + ');\n';
//code+=varName+'.setCursor(0, 2);\n';
//code+=varName+'.print('+str3+');\n';
//code+=varName+'.setCursor(0, 3);\n';
//code+=varName+'.print('+str4+');\n';
return code;
};
export const group_lcd_print2 = function (_, generator) {
var varName = this.getFieldValue('VAR');
var str = generator.valueToCode(this, 'TEXT', generator.ORDER_ATOMIC) || 'String("")';
var row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC) || '1';
var column = generator.valueToCode(this, 'column', generator.ORDER_ATOMIC) || '1';
var code = varName + '.setCursor(' + column + '-1, ' + row + '-1);\n'
code += varName + '.print(' + str + ');\n';
return code;
};
export const group_lcd_power = function () {
var varName = this.getFieldValue('VAR');
var dropdown_stat = this.getFieldValue('STAT');
var code = varName + '.' + dropdown_stat + '();\n'
return code;
};
export const display_4digitdisplay_power = function (_, generator) {
var stat = this.getFieldValue("STAT");
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_TM1650'] = '#include <TM1650.h>';
generator.definitions_['var_declare_display_4display'] = 'TM1650 tm_4display;';
generator.setups_['setup_wire_begin'] = 'Wire.begin();';
generator.setups_['setup_display_4display_init'] = 'tm_4display.init();';
return 'tm_4display.' + stat + '();\n';
}
export const display_4digitdisplay_displayString = function (_, generator) {
var value = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_TM1650'] = '#include <TM1650.h>';
generator.definitions_['var_declare_display_4display'] = 'TM1650 tm_4display;';
generator.setups_['setup_wire_begin'] = 'Wire.begin();';
generator.setups_['setup_display_4display_init'] = 'tm_4display.init();';
return 'tm_4display.displayString(' + value + ');\n';
}
export const display_4digitdisplay_showDot = function (_, generator) {
var no = this.getFieldValue("NO");
var stat = this.getFieldValue("STAT");
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.definitions_['include_TM1650'] = '#include <TM1650.h>';
generator.definitions_['var_declare_display_4display'] = 'TM1650 tm_4display;';
generator.setups_['setup_wire_begin'] = 'Wire.begin();';
generator.setups_['setup_display_4display_init'] = 'tm_4display.init();';
return 'tm_4display.setDot(' + no + ',' + stat + ');\n';
}
var tm1637_DIO;
var tm1637_CLK;
export const display_TM1637_init = function (_, generator) {
tm1637_CLK = this.getFieldValue('CLK');
tm1637_DIO = this.getFieldValue('DIO');
var NAME = this.getFieldValue('NAME') || 'display';
generator.definitions_['include_SevenSegmentTM1637'] = '#include <SevenSegmentTM1637.h>';
generator.definitions_['var_declare_SevenSegmentTM1637' + NAME] = 'SevenSegmentTM1637 ' + NAME + '(' + tm1637_CLK + ',' + tm1637_DIO + ');';
generator.setups_['setup_' + NAME + '.begin()'] = NAME + '.begin();';
return '';
};
export const display_TM1637_displyPrint = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'display';
//var Speed = generator.valueToCode(this, 'Speed', generator.ORDER_ATOMIC);
var VALUE = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);
var code = NAME + '.print(' + VALUE + ');' + '\n';
return code;
};
export const display_TM1637_displayTime = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'display';
generator.definitions_['include_SevenSegmentExtended'] = '#include <SevenSegmentExtended.h>';
generator.definitions_['var_declare_SevenSegmentTM1637' + NAME] = 'SevenSegmentExtended ' + NAME + '(' + tm1637_CLK + ',' + tm1637_DIO + ');';
var hour = generator.valueToCode(this, 'hour', generator.ORDER_ATOMIC);
var minute = generator.valueToCode(this, 'minute', generator.ORDER_ATOMIC);
var dropdown_stat = this.getFieldValue("STAT");
var code = NAME + '.printTime(' + hour + ',' + minute + ',' + dropdown_stat + ');\n';
return code;
};
export const display_TM1637_clearDisplay = function () {
var stat = this.getFieldValue("STAT");
var NAME = this.getFieldValue('NAME') || 'display';
return NAME + '.' + stat + '();\n';
};
export const display_TM1637_Brightness = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'display';
var BRIGHTNESS = generator.valueToCode(this, 'Brightness', generator.ORDER_ATOMIC);
var code = NAME + '.setBacklight(' + BRIGHTNESS + ');\n';
return code;
};
// HT16K33点阵初始化
export const HT16K33_Init = function (_, generator) {
var SDA = this.getFieldValue('SDA');
var SCL = this.getFieldValue('SCL');
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
generator.definitions_['include_Matrix'] = '#include <Matrix.h>';
generator.definitions_['var_declare' + matrixName] = 'Matrix ' + matrixName + '(' + SDA + ',' + SCL + ');';
generator.setups_['setup_' + matrixName] = matrixName + '.begin(0x70);';
var code = matrixName + '.clear();\n';
return code;
};
// Max7219点阵初始化
export const MAX7219_init = function (_, generator) {
var pin_cs = generator.valueToCode(this, 'PIN2', generator.ORDER_ATOMIC);
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var hDisplays = generator.valueToCode(this, 'hDisplays', generator.ORDER_ATOMIC);
var vDisplays = generator.valueToCode(this, 'vDisplays', generator.ORDER_ATOMIC);
generator.definitions_['include_SPI'] = '#include <SPI.h>';
generator.definitions_['include_Adafruit_GFX'] = '#include <Adafruit_GFX.h>';
generator.definitions_['include_Max72xxPanel'] = '#include <Max72xxPanel.h>';
generator.definitions_['var_declare_Max72xxPanel'] = 'Max72xxPanel ' + matrixName + ' = Max72xxPanel(' + pin_cs + ',' + hDisplays + ',' + vDisplays + ');';
var code = '';
return code;
};
// 点阵屏画点
export const display_Matrix_DrawPixel = function (_, generator) {
var matrixType = this.getFieldValue('TYPE');
var write = this.getFieldValue('WRITE');
var pos_x = generator.valueToCode(this, 'XVALUE', generator.ORDER_ASSIGNMENT);
var pos_y = generator.valueToCode(this, 'YVALUE', generator.ORDER_ASSIGNMENT);
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var dropdown_type = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
if (matrixType == "HT16K33") {
var code = matrixName + '.drawPixel(' + pos_x + ',7-' + pos_y + ',' + dropdown_type + ');\n'
}
else {
var code = matrixName + '.drawPixel(' + pos_x + ',' + pos_y + ',' + dropdown_type + ');\n'
}
if (write !== 'OFF') {
code += matrixName + '.write();\n';
}
return code;
};
// 点阵屏滚动显示文本
export const display_Matrix_TEXT = function (_, generator) {
var matrixName = "myMatrix";
var textString = generator.valueToCode(this, 'TEXT', generator.ORDER_ASSIGNMENT);
var speed = generator.valueToCode(this, 'Speed', generator.ORDER_ATOMIC);
var code = matrixName + '.scrollMessage(' + textString + ',' + speed + ');\n'
return code;
};
// 点阵屏显示文本
export const display_Matrix_print = function (_, generator) {
var matrixName = "myMatrix";
var write = this.getFieldValue('WRITE');
var textString = generator.valueToCode(this, 'TEXT', generator.ORDER_ASSIGNMENT);
var code = matrixName + '.setCursor(0, 0);\n';
code += matrixName + '.print(' + textString + ');\n';
if (write !== 'OFF') {
code += matrixName + '.write();\n';
}
return code;
};
// 点阵屏显示_显示图案
export const display_Matrix_DisplayChar = function (_, generator) {
var matrixType = this.getFieldValue('TYPE');
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var write = this.getFieldValue('WRITE');
var NO = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
var dotMatrixArray = generator.valueToCode(this, 'LEDArray', generator.ORDER_ASSIGNMENT);
generator.definitions_['var_declare_LEDArray'] = 'uint8_t LEDArray[8];';
var code = '';
code += 'memcpy_P(&LEDArray, &' + dotMatrixArray + ', 8);\n';
code += 'for(int index_i=0; index_i<8; index_i++)\n';
code += '{\n'
//code+=' LEDArray[index_i]='+dotMatrixArray+'[index_i];\n';
code += ' for(int index_j=' + (NO) + '*8; index_j<' + (NO) + '*8+8; index_j++)\n'
//code+=' for(int index_j=7; index_j>=0; index_j--)\n'
code += ' {\n'
code += ' if((LEDArray[index_i]&0x01)>0)\n';
if (matrixType == "HT16K33") {
code += ' ' + matrixName + '.drawPixel(index_j, index_i,1);\n';
code += ' else\n ' + matrixName + '.drawPixel(index_j, index_i,0);\n';
}
else {
code += ' ' + matrixName + '.drawPixel(index_j, 7-index_i,1);\n';
code += ' else\n ' + matrixName + '.drawPixel(index_j, 7-index_i,0);\n';
}
code += ' LEDArray[index_i] = LEDArray[index_i]>>1;\n';
code += ' } \n';
code += '}\n';
if (write !== 'OFF') {
code += matrixName + '.write();\n';
}
return code;
};
// 点阵屏显示_点阵数组
export const display_Matrix_LedArray = function (_, generator) {
var varName = this.getFieldValue('VAR');
var a = new Array();
for (var i = 1; i < 9; i++) {
a[i] = new Array();
for (var j = 1; j < 9; j++) {
a[i][9 - j] = (this.getFieldValue('a' + i + j) == "TRUE") ? 1 : 0;
}
}
var code = '{';
for (var i = 1; i < 9; i++) {
var tmp = ""
for (var j = 1; j < 9; j++) {
tmp += a[i][j];
}
tmp = (parseInt(tmp, 2)).toString(16)
if (tmp.length == 1) tmp = "0" + tmp;
code += '0x' + tmp + ((i != 8) ? ',' : '');
}
code += '};';
//generator.definitions_[varName] = "uint8_t " + varName + "[8]=" + code;
generator.definitions_[varName] = "const uint8_t " + varName + "[8] PROGMEM =" + code;
return [varName, generator.ORDER_ATOMIC];
};
// 点阵位图数据
export const display_matrix_bitmap = function (_, generator) {
var varName = this.getFieldValue('VAR');
var a = this.getFieldValue('BITMAP');
var code = '{';
for (var i = 7; i >= 0; i--) {
var tmp = "";
for (var j = 7; j >= 0; j--) {
tmp += a[i][j];
}
tmp = (parseInt(tmp, 2)).toString(16);
if (tmp.length == 1) tmp = "0" + tmp;
code += '0x' + tmp + ((i !== 0) ? ',' : '');
}
code += '};';
generator.definitions_[varName] = "const uint8_t " + varName + "[8] PROGMEM =" + code;
return [varName, generator.ORDER_ATOMIC];
};
// 点阵设置亮度
export const display_Matrix_Brightness = function (_, generator) {
var matrixType = this.getFieldValue('TYPE');
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var BRIGHTNESS = generator.valueToCode(this, 'Brightness', generator.ORDER_ATOMIC);
if (matrixType == "HT16K33") {
var code = matrixName + '.setBrightness(' + BRIGHTNESS + ');\n';
}
else {
var code = matrixName + '.setIntensity(' + BRIGHTNESS + ');\n';
}
return code;
};
// 点阵 全亮/全灭/关闭/开启
export const display_Matrix_fillScreen = function () {
var write = this.getFieldValue('WRITE');
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var FILLSCREEN_TYPE = this.getFieldValue('FILLSCREEN_TYPE');
var code = matrixName + '.' + FILLSCREEN_TYPE + ';\n'
if (write !== 'OFF') {
code += matrixName + '.write();\n';
}
return code;
};
// 点阵屏旋转
export const display_Max7219_Rotation = function (_, generator) {
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var dropdown_type = this.getFieldValue('Rotation_TYPE');
var NO = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
var code = matrixName + '.setRotation(' + NO + ',' + dropdown_type + ');\n'
return code;
};
// 点阵屏位置
export const display_Max7219_setPosition = function (_, generator) {
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var NO = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
var X = generator.valueToCode(this, 'X', generator.ORDER_ATOMIC);
var Y = generator.valueToCode(this, 'Y', generator.ORDER_ATOMIC);
var code = matrixName + '.setPosition(' + NO + ',' + X + ',' + Y + ');\n'
return code;
};
// 点阵屏旋转
export const display_HT16K33_Rotation = function () {
//var matrixName = this.getFieldValue('matrixName');
var matrixName = "myMatrix";
var dropdown_type = this.getFieldValue('Rotation_TYPE');
var code = matrixName + '.setRotation(4-' + dropdown_type + ');\n'
return code;
};
// 点阵屏 图案数组
export const LedArray = function (_, generator) {
var varName = this.getFieldValue('VAR');
var a = new Array();
for (var i = 1; i < 9; i++) {
a[i] = new Array();
for (var j = 1; j < 9; j++) {
a[i][j] = (this.getFieldValue('a' + i + j) == "TRUE") ? 1 : 0;
}
}
var code = '{';
for (var i = 1; i < 9; i++) {
var tmp = ""
for (var j = 1; j < 9; j++) {
tmp += a[i][j];
}
tmp = (parseInt(tmp, 2)).toString(16)
if (tmp.length == 1) tmp = "0" + tmp;
code += '0x' + tmp + ((i != 8) ? ',' : '');
}
code += '};\n';
generator.definitions_[varName] = "byte " + varName + "[]=" + code;
return [varName, generator.ORDER_ATOMIC];
};
// 点阵屏预设图案
export const Matrix_img = function (_, generator) {
var dropdown_img_ = this.getFieldValue('img_');
var code = '"' + dropdown_img_ + '"';
code = '{';
for (var i = 0; i < 15; i += 2) {
code += '0x' + dropdown_img_.substr(i, 2) + ((i != 14) ? ',' : '');
}
code += '};\n';
generator.definitions_['matrix_img_' + dropdown_img_] = "const uint8_t " + 'matrix_img_' + dropdown_img_ + "[8] PROGMEM=" + code;
return ['matrix_img_' + dropdown_img_, generator.ORDER_ATOMIC];
};
// 点阵屏 设置生效
export const display_Matrix_write = function () {
return 'myMatrix.write();\n';
};
export const oled_init = function (_, generator) {
var OLED_TYPE = this.getFieldValue('OLED_TYPE');
var NAME = this.getFieldValue('NAME') || 'u8g2';
var ROTATION = this.getFieldValue('ROTATION');
var SDA = this.getFieldValue('SDA');
var SCL = this.getFieldValue('SCL');
var ADDRESS = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0x3C';
var board_type = JSFuncs.getPlatform();
//var board_type ="ESP8266";
generator.definitions_['include_U8g2lib'] = '#include <U8g2lib.h>';
if (board_type.match(RegExp(/AVR/))) {
if (SDA == Profile.default.SDA[0][1] && SCL == Profile.default.SCL[0][1])
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_' + OLED_TYPE + '_1_HW_I2C ' + NAME + '(' + ROTATION + ', U8X8_PIN_NONE);';
else
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_' + OLED_TYPE + '_1_SW_I2C ' + NAME + '(' + ROTATION + ', ' + SCL + ', ' + SDA + ', U8X8_PIN_NONE);';
}
else {
if (SDA == Profile.default.SDA[0][1] && SCL == Profile.default.SCL[0][1])
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_' + OLED_TYPE + '_F_HW_I2C ' + NAME + '(' + ROTATION + ', U8X8_PIN_NONE);';
else
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_' + OLED_TYPE + '_F_SW_I2C ' + NAME + '(' + ROTATION + ', ' + SCL + ', ' + SDA + ', U8X8_PIN_NONE);';
}
generator.definitions_['include_Wire'] = '#include <Wire.h>';
generator.setups_["setup_u8g2" + NAME] = NAME + '.setI2CAddress(' + ADDRESS + '*2);\n'
+ ' ' + NAME + '.begin();';
var code = '';
return code;
};
export const u8g2_spi_init = function (_, generator) {
var U8G2_TYPE_SPI = this.getFieldValue('U8G2_TYPE_SPI');
var NAME = this.getFieldValue('NAME') || 'u8g2';
var ROTATION = this.getFieldValue('ROTATION');
var CLK = this.getFieldValue('CLK');
var MOSI = this.getFieldValue('MOSI');
var CS = this.getFieldValue('CS');
var DC = this.getFieldValue('DC');
var RST = this.getFieldValue('RST');
generator.definitions_['include_U8g2lib'] = '#include <U8g2lib.h>';
generator.definitions_['include_SPI'] = '#include <SPI.h>';
generator.setups_["setup_u8g2" + NAME] = NAME + '.begin();';
if (CLK == "SCK" && MOSI == "MOSI")
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_' + U8G2_TYPE_SPI + '_1_4W_HW_SPI ' + NAME + '(' + ROTATION + ', ' + CS + ', ' + DC + ', ' + RST + ');';
else
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_' + U8G2_TYPE_SPI + '_1_4W_SW_SPI ' + NAME + '(' + ROTATION + ', ' + CLK + ',' + MOSI + ',' + CS + ', ' + DC + ', ' + RST + ');';
var code = '';
return code;
};
export const u8g2_LCD12864_spi_init = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var ROTATION = this.getFieldValue('ROTATION');
var DC = this.getFieldValue('DC');
//var RST = this.getFieldValue('RST');
generator.definitions_['include_U8g2lib'] = '#include <U8g2lib.h>';
generator.definitions_['include_SPI'] = '#include <SPI.h>';
generator.setups_["setup_u8g2" + NAME] = NAME + '.begin();';
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_ST7920_128X64_1_HW_SPI ' + NAME + '(' + ROTATION + ', ' + DC + ', U8X8_PIN_NONE);';
var code = '';
return code;
};
export const u8g2_LCD12864_8080_init = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var ROTATION = this.getFieldValue('ROTATION');
var DB0 = this.getFieldValue('DB0');
var DB1 = this.getFieldValue('DB1');
var DB2 = this.getFieldValue('DB2');
var DB3 = this.getFieldValue('DB3');
var DB4 = this.getFieldValue('DB4');
var DB5 = this.getFieldValue('DB5');
var DB6 = this.getFieldValue('DB6');
var DB7 = this.getFieldValue('DB7');
var ENABLE = this.getFieldValue('ENABLE');
var DC = this.getFieldValue('DC');
//var RST = this.getFieldValue('RST');
generator.definitions_['include_U8g2lib'] = '#include <U8g2lib.h>';
generator.setups_["setup_u8g2" + NAME] = NAME + '.begin();';
generator.definitions_['var_declare_U8G2' + NAME] = 'U8G2_ST7920_128X64_1_8080 ' + NAME + '(' + ROTATION + ', ' + DB0 + ', ' + DB1 + ', ' + DB2 + ', ' + DB3 + ', ' + DB4 + ', ' + DB5 + ', ' + DB6 + ', ' + DB7 + ', ' + ENABLE + ', U8X8_PIN_NONE, ' + DC + ');';
var code = '';
return code;
};
export const oled_clear = function () {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var code = NAME + ".clearDisplay();\n";
return code;
};
export const oled_face = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var POS_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC) || '0';
var POS_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC) || '0';
var FACE_IMAGE = this.getFieldValue('FACE_IMAGE');
var pos = FACE_IMAGE.indexOf(',');
var varName = "FACE_" + FACE_IMAGE.substring(0, pos);
FACE_IMAGE = FACE_IMAGE.substring(pos + 1, FACE_IMAGE.length);
// YANG use PROGMEM to save the RAM space
//generator.definitions_['var_declare' + varName] = 'static unsigned char ' + varName + '[]={' + FACE_IMAGE + ' };\n';
//var code="u8g2.drawXBM("+POS_x+","+POS_y+",89,64,"+varName+");\n";
generator.libs_[varName] = 'const static unsigned char ' + varName + '[] PROGMEM ={' + FACE_IMAGE + ' };';
var code = NAME + ".drawXBMP(" + POS_x + "," + POS_y + ",89,64," + varName + ");\n";
return code;
};
export const oled_icons = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var POS_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC) || '0';
var POS_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC) || '0';
var ICON_SIZE = this.getFieldValue('ICON_SIZE');
var ICON_IMAGE = this.getFieldValue('ICON_IMAGE');
var code = NAME + ".setFontPosBottom();\n" + NAME + ".setFont(u8g2_font_open_iconic_all_" + ICON_SIZE + "x_t);\n"
+ NAME + ".drawGlyph(" + POS_x + "," + POS_y + "+" + ICON_SIZE + "*8," + ICON_IMAGE + ");\n";
return code;
};
export const oled_drawPixel = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var pos_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC) || '0';
var pos_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC) || '0';
var code = "";
code = code + NAME + '.drawPixel(' + pos_x + ',';
code += pos_y + ');\n';
return code;
};
export const oled_page = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var branch = generator.statementToCode(this, 'DO');
//branch = branch.replace(/(^\s*)|(\s*$)/g, "");
var code = '';
if (branch) {
code = NAME + ".firstPage();"
+ "\ndo"
+ "\n{"
+ "\n" + branch
+ "}while(" + NAME + ".nextPage());\n";
}
return code;
};
export const oled_showBitmap = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var start_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC) || '0';
var start_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC) || '0';
var width = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC) || '0';
var height = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC) || '0';
var data_name = generator.valueToCode(this, 'bitmap_name', generator.ORDER_ATOMIC);
data_name = data_name.replace(/"/g, "");
var code = "";
//YANG use PROGMEM to save the RAM space
//code = 'u8g2.drawXBM(' + start_x + ', ';
code = NAME + '.drawXBMP(' + start_x + ', ';
code += start_y + ', ';
code += width + ', ';
code += height + ', ' + data_name + ');\n';
return code;
};
export const oled_define_bitmap_data = function (_, generator) {
var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), Variables.NAME_TYPE);
var text = this.getFieldValue('TEXT');
//YANG use PROGMEM to save the RAM space
//generator.definitions_['var_declare' + varName] = 'static unsigned char ' + varName + '[]={' + text + ' };\n';
generator.libs_[varName] = 'const static unsigned char ' + varName + '[] PROGMEM ={' + text + ' };';
return '';
};
export const oled_drawLine = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var start_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC) || '0';
var start_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC) || '0';
var end_x = generator.valueToCode(this, 'END_X', generator.ORDER_ATOMIC) || '0';
var end_y = generator.valueToCode(this, 'END_Y', generator.ORDER_ATOMIC) || '0';
var code = "";
code = NAME + '.drawLine(' + start_x + ',';
code += start_y + ',';
code += end_x + ',';
code += end_y + ');\n';
return code;
};
export const oled_draw_Str_Line = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var start_x = generator.valueToCode(this, 'START_X', generator.ORDER_ATOMIC) || '0';
var start_y = generator.valueToCode(this, 'START_Y', generator.ORDER_ATOMIC) || '0';
var length = generator.valueToCode(this, 'LENGTH', generator.ORDER_ATOMIC) || '0';
var TYPE = this.getFieldValue('TYPE');
var code = "";
code = NAME + ".draw" + TYPE + "Line(" + start_x + ',';
code += start_y + ',';
code += length + ');\n';
return code;
};
export const oled_drawTriangle = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var D0_x = generator.valueToCode(this, 'D0_X', generator.ORDER_ATOMIC) || '0';
var D0_y = generator.valueToCode(this, 'D0_Y', generator.ORDER_ATOMIC) || '0';
var D1_x = generator.valueToCode(this, 'D1_X', generator.ORDER_ATOMIC) || '0';
var D1_y = generator.valueToCode(this, 'D1_Y', generator.ORDER_ATOMIC) || '0';
var D2_x = generator.valueToCode(this, 'D2_X', generator.ORDER_ATOMIC) || '0';
var D2_y = generator.valueToCode(this, 'D2_Y', generator.ORDER_ATOMIC) || '0';
var code = "";
code = NAME + '.drawTriangle(' + D0_x + ',';
code += D0_y + ',';
code += D1_x + ',';
code += D1_y + ',';
code += D2_x + ',';
code += D2_y + ');\n';
return code;
};
export const oled_drawFrame = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var D0_x = generator.valueToCode(this, 'D0_X', generator.ORDER_ATOMIC) || '0';
var D0_y = generator.valueToCode(this, 'D0_Y', generator.ORDER_ATOMIC) || '0';
var Width = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC) || '0';
var Height = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC) || '0';
var type = this.getFieldValue('TYPE');
var code = "";
code = NAME + '.' + type + '(' + D0_x + ',';
code += D0_y + ',';
code += Width + ',';
code += Height + ');\n';
return code;
};
export const oled_drawRFrame = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var D0_x = generator.valueToCode(this, 'D0_X', generator.ORDER_ATOMIC) || '0';
var D0_y = generator.valueToCode(this, 'D0_Y', generator.ORDER_ATOMIC) || '0';
var Width = generator.valueToCode(this, 'WIDTH', generator.ORDER_ATOMIC) || '0';
var Height = generator.valueToCode(this, 'HEIGHT', generator.ORDER_ATOMIC) || '0';
var Rauius = generator.valueToCode(this, 'RADIUS', generator.ORDER_ATOMIC) || '0';
var type = this.getFieldValue('TYPE');
var code = "";
code = NAME + '.' + type + '(' + D0_x + ',';
code += D0_y + ',';
code += Width + ',';
code += Height + ',';
code += Rauius + ');\n';
return code;
};
export const oled_drawCircle = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var D0_x = generator.valueToCode(this, 'D0_X', generator.ORDER_ATOMIC) || '0';
var D0_y = generator.valueToCode(this, 'D0_Y', generator.ORDER_ATOMIC) || '0';
var Rauius = generator.valueToCode(this, 'RADIUS', generator.ORDER_ATOMIC) || '0';
var type = this.getFieldValue('TYPE');
var opt = this.getFieldValue('OPT');
var code = "";
code = NAME + '.' + type + '(' + D0_x + ',';
code += D0_y + ',';
code += Rauius + "," + opt + "); \n";
return code;
};
export const oled_drawEllipse = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var D0_x = generator.valueToCode(this, 'D0_X', generator.ORDER_ATOMIC) || '0';
var D0_y = generator.valueToCode(this, 'D0_Y', generator.ORDER_ATOMIC) || '0';
var Rauius_X = generator.valueToCode(this, 'RADIUS_X', generator.ORDER_ATOMIC) || '0';
var Rauius_Y = generator.valueToCode(this, 'RADIUS_Y', generator.ORDER_ATOMIC) || '0';
var type = this.getFieldValue('TYPE');
var opt = this.getFieldValue('OPT');
var code = "";
code = NAME + '.' + type + '(' + D0_x + ',';
code += D0_y + ',';
code += Rauius_X + ",";
code += Rauius_Y + "," + opt + "); \n";
return code;
};
export const oled_print = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var POS_x = generator.valueToCode(this, 'POS_X', generator.ORDER_ATOMIC) || '0';
var POS_y = generator.valueToCode(this, 'POS_Y', generator.ORDER_ATOMIC) || '0';
var TEXT = generator.valueToCode(this, 'TEXT', generator.ORDER_ATOMIC) || '0';
generator.setups_["setup_enableUTF8Print" + NAME] = NAME + '.enableUTF8Print();\n';
var code = "";
code = NAME + '.setCursor(' + POS_x + ',';
code += POS_y + "); \n";
code += NAME + ".print(" + TEXT + "); \n";
return code;
};
export const oled_set_EN_Font = function () {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var FONT_NAME = this.getFieldValue('FONT_NAME');
var FONT_SIZE = this.getFieldValue('FONT_SIZE');
var FONT_STYLE = this.getFieldValue('FONT_STYLE');
var code = NAME + ".setFont(u8g2_font_" + FONT_NAME + FONT_STYLE + FONT_SIZE + "_tf);\n" + NAME + ".setFontPosTop();\n";
return code;
};
export const oled_set_CN_Font = function () {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var FONT_NAME = this.getFieldValue('FONT_NAME');
var FONT_SIZE = this.getFieldValue('FONT_SIZE');
var code = NAME + ".setFont(u8g2_font_" + FONT_SIZE + FONT_NAME + ");\n" + NAME + ".setFontPosTop();\n";
return code;
};
export const oled_set_ZH_TW_Font = function () {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var code = NAME + ".setFont(u8g2_font_unifont_t_chinese1);\n" + NAME + ".setFontPosTop();\n";
return code;
};
// OLED背光亮度
export const u8g2_setContrast = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var Contrast = generator.valueToCode(this, 'Contrast', generator.ORDER_ATOMIC);
var code = NAME + '.setContrast(' + Contrast + ');\n';
return code;
};
// 返回UTF8字符串宽度
export const get_utf8_width = function (_, generator) {
var NAME = this.getFieldValue('NAME') || 'u8g2';
var str = generator.valueToCode(this, 'str', generator.ORDER_ATOMIC);
generator.definitions_['getutf8width' + NAME] = 'int ' + NAME + '_getUTF8Width(String str) {\n const char *string_variable = str.c_str();\n return ' + NAME + '.getUTF8Width(string_variable);\n}';
var code = NAME + '_getUTF8Width(String(' + str + '))';
return [code, generator.ORDER_ATOMIC];
};
// LCD自定义图案显示
export const lcd_display_pattern = function (_, generator) {
var name = this.getFieldValue('name');
var number = this.getFieldValue('number');
var row = generator.valueToCode(this, 'row', generator.ORDER_ATOMIC);
var column = generator.valueToCode(this, 'column', generator.ORDER_ATOMIC);
var pattern = generator.valueToCode(this, 'pattern', generator.ORDER_ATOMIC);
generator.setups_["setup_lcd_display_pattern" + number] = '' + name + '.createChar(' + number + ', ' + pattern + ');';
var code = '' + name + '.setCursor(' + column + '-1, ' + row + '-1);\n' + name + '.write(' + number + ');\n';
return code;
};
export const lcd_pattern = function (_, generator) {
var varName = this.getFieldValue('VAR');
var a = new Array();
for (var i = 1; i < 9; i++) {
a[i] = new Array();
for (var j = 1; j < 6; j++) {
a[i][6 - j] = (this.getFieldValue('a' + i + j) == "TRUE") ? 1 : 0;
}
}
var code = '{0B' + a[8][5] + '' + a[8][4] + '' + a[8][3] + '' + a[8][2] + '' + a[8][1] + ',0B' + a[7][5] + '' + a[7][4] + '' + a[7][3] + '' + a[7][2] + '' + a[7][1] + ',0B' + a[6][5] + '' + a[6][4] + '' + a[6][3] + '' + a[6][2] + '' + a[6][1] + ',0B' + a[5][5] + '' + a[5][4] + '' + a[5][3] + '' + a[5][2] + '' + a[5][1] + ',0B' + a[4][5] + '' + a[4][4] + '' + a[4][3] + '' + a[4][2] + '' + a[4][1] + ',0B' + a[3][5] + '' + a[3][4] + '' + a[3][3] + '' + a[3][2] + '' + a[3][1] + ',0B' + a[2][5] + '' + a[2][4] + '' + a[2][3] + '' + a[2][2] + '' + a[2][1] + ',0B' + a[1][5] + '' + a[1][4] + '' + a[1][3] + '' + a[1][2] + '' + a[1][1] + '};';
generator.definitions_[varName] = "byte " + varName + "[]=" + code;
return [varName, generator.ORDER_ATOMIC];
};
export const display_lcd_bitmap = function (_, generator) {
var varName = this.getFieldValue('VAR');
var bitmap = this.getFieldValue('BITMAP');
var code = '{';
var i = 0;
for (; i < bitmap.length - 1; i++) {
code += '0B' + bitmap[i].join('') + ',';
}
code += '0B' + bitmap[i].join('') + '};';
generator.definitions_[varName] = "byte " + varName + "[]=" + code;
return [varName, generator.ORDER_ATOMIC];
};
function rgb565(colour) {
colour = colour.substr(1);
var R, G, B;
R = colour.substr(0, 2);
G = colour.substr(2, 2);
B = colour.substr(4, 2);
colour = R + G + B;
colour = "0x" + colour;
var RGB565_red = (colour & 0xf80000) >> 8;
var RGB565_green = (colour & 0xfc00) >> 5;
var RGB565_blue = (colour & 0xf8) >> 3;
var n565Color = RGB565_red + RGB565_green + RGB565_blue;
return n565Color;
}
// 初始化TFT
export const TFT_init_with_pin = function (_, generator) {
const PIN_CS = this.getFieldValue('CS');
const PIN_DC = this.getFieldValue('DC');
const PIN_RST = this.getFieldValue('RST');
const TYPE = this.getFieldValue('TYPE');
let icType = TYPE.split('_')[0];
let initParam = '';
if (TYPE === 'ST7735_INITR_GREENTAB') {
initParam = 'INITR_GREENTAB';
} else if (TYPE === 'ST7735_INITR_REDTAB') {
initParam = 'INITR_REDTAB';
} else if (TYPE === 'ST7735_INITR_BLACKTAB') {
initParam = 'INITR_BLACKTAB';
} else if (TYPE === 'ST7735_160×80') {
initParam = 'INITR_MINI160x80';
} else if (TYPE === 'ST7735_160×128') {
initParam = '128, 160';
} else if (TYPE === 'ST7789_240×135') {
initParam = '135, 240';
} else if (TYPE === 'ST7789_240×240') {
initParam = '240, 240';
} else if (TYPE === 'ST7789_320×240') {
initParam = '240, 320';
} else if (TYPE === 'ST7796_480×320') {
initParam = '';
}
generator.definitions_["include_Adafruit_GFX"] = '#include <Adafruit_GFX.h>';
generator.definitions_["include_Adafruit_tft"] = '#include <Adafruit_' + icType + '.h>';
generator.definitions_["include_SPI"] = '#include <SPI.h>';
generator.definitions_['var_declare_Adafruit_tft'] = 'Adafruit_' + icType + ' tft = Adafruit_' + icType + '(' + PIN_CS + ', ' + PIN_DC + ', ' + PIN_RST + ');';
generator.setups_["setup_tft_init"] = 'tft.' + (icType === 'ST7735' ? 'initR' : 'init') + '(' + initParam + ');';
generator.setups_["setup_tft_fillScreen"] = 'tft.fillScreen(0x0000);';
generator.definitions_["include_U8g2_for_Adafruit_GFX"] = '#include <U8g2_for_Adafruit_GFX.h>';
generator.definitions_['var_declare_U8G2_FOR_ADAFRUIT_GFX'] = 'U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx;';
generator.setups_["setup_u8g2_for_adafruit_gfx"] = 'u8g2_for_adafruit_gfx.begin(tft);';
var code = '';
return code;
};
//将字符串转整数
function myAtoi(str) {
str = str.replace(/(^\s*)|(\s*$)/g, "");//去掉字符串最前面的空格,中间的不用管
var str1 = "";
for (let i = 0; i < str.length; i++) {
if ((str.charAt(i) == "-" || str.charAt(i) == "+") && i == 0) {
str1 = str1.concat(str.charAt(i))
}//如果“+”“-”号在最前面
else if (/^\d+$/.test(str.charAt(i))) {
str1 = str1.concat(str.charAt(i))
}//用字符串存储值
else {
break//直接跳出for循环
}
}
if (str1 - 0 > 2147483647) {
return 2147483647
} //str-0 字符串化为数组最简单也是最常用的方法
else if (str1 - 0 < -2147483648) {
return -2147483648
}
if (isNaN(str1 - 0)) return 0//"+"/"-"这种情况,返回0
return str1 - 0
}
//将一个数字转化成16进制字符串形式
function toHex(num) {
return num < 16 ? "0x0" + num.toString(16).toUpperCase() : "0x" + num.toString(16).toUpperCase();
}
//将文本或符号编码
function encodeUnicode(str) {
let res = [];
for (let i = 0; i < str.length; i++) {
res[i] = ("00" + str.charCodeAt(i).toString(16)).slice(-4);
}
return "_u" + res.join("_u");
}
var canvas = document.createElement("canvas");//创建canvas
var ctx = canvas.getContext("2d");//获得内容描述句柄
var bitArr = new Array();
//显示汉字(使用位图显示)
export const TFT_st7735_show_hz = function (_, generator) {
var text_st7735_name = 'tft';
var checkbox_st7735_show_hz = 'TRUE';
var checkbox_st7735_show_hz_message = 'TRUE';
var checkbox_st7735_show_hz_save = this.getFieldValue('st7735_show_hz_save') == 'TRUE';
var dropdown_st7735_hz_sharp = this.getFieldValue('st7735_hz_sharp');
var text_st7735_hz_line_height = this.getFieldValue('st7735_hz_line_height');
var dropdown_hz_up_down = this.getFieldValue('hz_up_down');
var text_hz_up_down_data = this.getFieldValue('hz_up_down_data');
var dropdown_hz_left_right = this.getFieldValue('hz_left_right');
var text_hz_left_right_data = this.getFieldValue('hz_left_right_data');
var value_st7735_hz_data = generator.valueToCode(this, 'st7735_hz_data', generator.ORDER_ATOMIC);
var value_st7735_hz_x = generator.valueToCode(this, 'st7735_hz_x', generator.ORDER_ATOMIC);
var value_st7735_hz_y = generator.valueToCode(this, 'st7735_hz_y', generator.ORDER_ATOMIC);
var value_st7735_hz_height = generator.valueToCode(this, 'st7735_hz_height', generator.ORDER_ATOMIC);
var value_st7735_hz_width = generator.valueToCode(this, 'st7735_hz_width', generator.ORDER_ATOMIC);
var value_st7735_hz_color = generator.valueToCode(this, 'st7735_hz_color', generator.ORDER_ATOMIC);
var dropdown_st7735_hz_variant = 'normal';
var dropdown_st7735_hz_style = 'normal';
var dropdown_st7735_hz_thickness = 'normal';
var fontSize_width = myAtoi(value_st7735_hz_width);
var fontSize_height = myAtoi(value_st7735_hz_height);
var bs = Math.ceil(fontSize_width / 8);//每行占字节数
var move_x = 0;
var move_y = 0;
if (dropdown_hz_up_down == "hz_down") {
move_y = myAtoi(text_hz_up_down_data);
}
else {
move_y = myAtoi("-" + text_hz_up_down_data);
}
if (dropdown_hz_left_right == "hz_right") {
move_x = myAtoi(text_hz_left_right_data);
}
else {
move_x = myAtoi("-" + text_hz_left_right_data);
}
canvas.width = fontSize_width;
canvas.height = fontSize_height;
ctx.font = dropdown_st7735_hz_style + ' ' + dropdown_st7735_hz_variant + ' ' + dropdown_st7735_hz_thickness + ' ' + text_st7735_hz_line_height + 'px ' + dropdown_st7735_hz_sharp;
ctx.textAlign = "left";
ctx.textBaseline = "top";
var c = value_st7735_hz_data;
ctx.fillStyle = "#000000";
ctx.fillRect(0, 0, fontSize_width, fontSize_height);//涂背景
ctx.fillStyle = "#ffffff";
ctx.fillText(c, move_x, move_y);//写字
var data = ctx.getImageData(0, 0, fontSize_width, fontSize_height).data;//获取图像
var zm = new Array(bs * fontSize_height);
for (var i = 0; i < zm.length; i++)zm[i] = 0;//初始化字模数组
for (var i = 0; i < fontSize_height; i++)//读像素值组成字模数组
for (var j = 0; j < fontSize_width; j++)
if (data[i * fontSize_width * 4 + j * 4]) zm[parseInt(j / 8) + i * bs] += bitArr[j % 8];
var outStr = "";//将字模数组转化为十六进制形式
for (var i = 0; i < zm.length - 1; i++)outStr += toHex(zm[i]) + ",";
outStr += toHex(zm[i]);
var zm1 = new Array(bs * fontSize_height);
var outstr1 = "";
for (var i in zm) zm1[i] = zm[i].toString(2);
for (var i in zm1) {
var str = "";
for (var j = 0; j < 8 - zm1[i].length; j++)str += "0";
zm1[i] = str + zm1[i];
}
for (var i in zm1) outstr1 += zm1[i];
var HZ_image = "";
var num_hz = 0;
for (var i = 0; i < fontSize_width; i++) {
HZ_image += "--";
if (i == (fontSize_width - 1)) HZ_image += "\n|";
}
for (var data_hz of outstr1) {
num_hz++;
if (num_hz == outstr1.length) {
HZ_image += "|\n";
}
else if (num_hz % (bs * 8) < fontSize_width && num_hz % (bs * 8) > 0) {
if (data_hz == "0") HZ_image += " ";
else if (data_hz == "1") HZ_image += "0 ";
}
else if (num_hz % (bs * 8) == 0) {
HZ_image += "|\n|";
}
}
for (var i = 0; i < fontSize_width; i++) {
HZ_image += "--";
}
HZ_image = "/*" + "\n" + HZ_image + "\n" + "*/";
var hz_sharp = "";
switch (dropdown_st7735_hz_sharp) {
case "STHeiti":
hz_sharp = "华文黑体";
break;
case "STKaiti":
hz_sharp = "华文楷体";
break;
case "STXihei":
hz_sharp = "华文细黑";
break;
case "STSong":
hz_sharp = "华文宋体";
break;
case "STZhongsong":
hz_sharp = "华文中宋";
break;
case "STFangsong":
hz_sharp = "华文仿宋";
break;
case "STCaiyun":
hz_sharp = "华文彩云";
break;
case "STHupo":
hz_sharp = "华文琥珀";
break;
case "STLiti":
hz_sharp = "华文隶书";
break;
case "STXingkai":
hz_sharp = "华文行楷";
break;
case "STXinwei":
hz_sharp = "华文新魏";
break;
case "simHei":
hz_sharp = "黑体";
break;
case "simSun":
hz_sharp = "宋体";
break;
case "NSimSun":
hz_sharp = "新宋体";
break;
case "FangSong":
hz_sharp = "仿宋";
break;
case "KaiTi":
hz_sharp = "楷体";
break;
case "FangSong_GB2312":
hz_sharp = "仿宋_GB2312";
break;
case "KaiTi_GB2312":
hz_sharp = "楷体_GB2312";
break;
case "LiSu":
hz_sharp = "隶书";
break;
case "YouYuan":
hz_sharp = "幼圆";
break;
case "PMingLiU":
hz_sharp = "新细明体";
break;
case "MingLiU":
hz_sharp = "细明体";
break;
case "DFKai-SB":
hz_sharp = "标楷体";
break;
case "Microsoft JhengHei":
hz_sharp = "微软正黑体";
break;
case "Microsoft YaHei":
hz_sharp = "微软雅黑体";
break;
default:
hz_sharp = dropdown_st7735_hz_sharp;
break;
}
hz_sharp = "字体:" + hz_sharp + " 字号:" + text_st7735_hz_line_height + "px" + " 显示文字:" + value_st7735_hz_data;
if (checkbox_st7735_show_hz) {
generator.definitions_['var_declare_oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = HZ_image + "\n//" + hz_sharp;
if (checkbox_st7735_show_hz_save) {
generator.libs_['oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = HZ_image + "\n//" + hz_sharp + "\nstatic const unsigned char PROGMEM oled_st7735_" + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data) + "[" + (bs * fontSize_height) + "]={" + outStr + "};";
}
else {
generator.libs_['oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = HZ_image + "\n//" + hz_sharp + "\nunsigned char oled_st7735_" + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data) + "[" + (bs * fontSize_height) + "]={" + outStr + "};";
}
}
else {
if (checkbox_st7735_show_hz_message) {
generator.definitions_['var_declare_oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = "//" + hz_sharp;
if (checkbox_st7735_show_hz_save) {
generator.libs_['oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = "//" + hz_sharp + "\nstatic const unsigned char PROGMEM oled_st7735_" + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data) + "[" + (bs * fontSize_height) + "]={" + outStr + "};";
}
else {
generator.libs_['oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = "//" + hz_sharp + "\nunsigned char oled_st7735_" + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data) + "[" + (bs * fontSize_height) + "]={" + outStr + "};";
}
}
else {
if (checkbox_st7735_show_hz_save) {
generator.libs_['oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = "static const unsigned char PROGMEM oled_st7735_" + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data) + "[" + (bs * fontSize_height) + "]={" + outStr + "};";
}
else {
generator.libs_['oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data)] = "unsigned char oled_st7735_" + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data) + "[" + (bs * fontSize_height) + "]={" + outStr + "};";
}
}
}
if (checkbox_st7735_show_hz_message) {
var code = '//绘制位图 ' + hz_sharp + ' X坐标:' + value_st7735_hz_x + ' Y坐标:' + value_st7735_hz_y + ' 位图宽度:' + value_st7735_hz_width + ' 位图高度:' + value_st7735_hz_height + '\n' + text_st7735_name + '.drawBitmap(' + value_st7735_hz_x + ', ' + value_st7735_hz_y + ', oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + encodeUnicode(value_st7735_hz_data) + ', ' + value_st7735_hz_width + ', ' + value_st7735_hz_height + ', ' + value_st7735_hz_color + ');\n';
}
else {
var code = text_st7735_name + '.drawBitmap(' + value_st7735_hz_x + ', ' + value_st7735_hz_y + ', oled_st7735_' + dropdown_st7735_hz_sharp + '_' + text_st7735_hz_line_height + 'px' + en