Categories
Programming

EPSON DOT matrix char code to set page length in inches (Javascript)51 sec read

Set of codes to set page length

Find the list of char codes at http://stanislavs.org/helppc/epson_printer_codes.html

So to set the length of a page in number of lines, use

var num_lines = 72;
String.fromCharCode(27, 67) + String.fromCharCode(num_lines)

Going by the char code list to set the length of the page in inches, we should use

var page_inches = 12;
String.fromCharCode(27, 67, 48) + String.fromCharCode(page_inches);

But it just doesn’t work!!!!!

What happens is the printer thinks you want to set the page length to 48 lines and not 12 inches. Also char code 12 means form feed, so you get one of that too..

I solved it by using

var page_inches = 12;
String.fromCharCode(27, 67, 0) + String.fromCharCode(page_inches);

So you need to add String.fromCharCode(0) and not String.fromCharCode(48) and you will get a page length of 12 inches.

 

Categories
Programming

Why I use Typescript + babel?46 sec read

  • Types helps me to avoid silly mistakes by forcing me to stick to a common rule rather than total chaos.
  • Strip the types and you get javascript, so you don’t loose touch with it
  • I use a javascript transpiler (Babel) anyway. So why not exploit types.
  • It works very well with VS-Code which is an awesome product.

Typescript vs Flow

  • Nothing wrong with, but its harder to set up and documentation is not that good.
  • In case of Typescript just use VS-Code which I use anyway
  • It is pretty much the same. So everything comes down to convenience.

Typescript vs Babel

  • Babel wins for me because of plugins and presets.

Purescript?

  • Well I tried, but the documentation isn’t good enough
  • Laaaaaaaazyyyyy…
Categories
Programming

Creating a simple babel plugin1 min read

What will it do?

It will change this

let content = include_str(‘path to text file’);

to this

let content = ‘content of text file’;

It works just like the rust-lang include_str!() macro.

Code

  • While looping through the AST, our code checks for a function call (CallExpression ) named include_str
  • If one is found, we derive the required file path from the first argument to the call and the path of the file that is being transpiled
  • Contents of the file are read into a string with fs.readFIleSync
  • The CallExpression  is replaced with the string which is converted into a stringLiteral

index.js

const fs = require('fs');
const Path = require('path');

module.exports = function MyPlugin(ref) {
    var t = ref.types;
    return {
        visitor: {
            CallExpression: {
                enter: function (path) {
                    if (t.isCallExpression(path.node) && path.node.callee.name === 'include_str') {
                        let file_name = this.file.hub.file.opts.filename;
                        let fpath = Path.join(Path.dirname(file_name), path.node.arguments[0].value);
                        let content = fs.readFileSync(fpath, 'UTF-8');
                        path.replaceWith(t.stringLiteral(content));
                    }
                }
            }
        }
    };
};

 

Disclaimer

Not tested

Similar libs to check out