ba63 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,13 @@ type RenderOptions = Partial<{
4
4
  /** If the message reaches the end of the top line, start printing on the bottom line.*/
5
5
  wrap: boolean;
6
6
  }>;
7
+ /** The start and end column positions of the section of cells used */
8
+ type UsedCells = {
9
+ /** The start position of the section of cells used */
10
+ start: number;
11
+ /** The end position of the section of cells used */
12
+ end: number;
13
+ };
7
14
  export declare class BA63 {
8
15
  private device;
9
16
  /** Current cursor position in [row, column] format */
@@ -15,7 +22,7 @@ export declare class BA63 {
15
22
  static create(): Promise<BA63>;
16
23
  private run;
17
24
  render(message: string | number[], options?: RenderOptions): Promise<void>;
18
- renderInCenter(message: string): Promise<void>;
25
+ renderInCenter(message: string): Promise<UsedCells>;
19
26
  testRender(): Promise<void>;
20
27
  carriageReturn(): Promise<void>;
21
28
  lineFeed(): Promise<void>;
@@ -24,7 +31,7 @@ export declare class BA63 {
24
31
  deleteToEOL(): Promise<void>;
25
32
  setCursorPosition(row: number, column: number): Promise<void>;
26
33
  setCursorColumn(column: number): Promise<void>;
27
- setCursorRow(row: number): Promise<void>;
34
+ setCursorRow(row: (typeof this.cursorPos)[0]): Promise<void>;
28
35
  clearDisplay(): Promise<void>;
29
36
  get lengthToEnd(): number;
30
37
  get row(): "top" | "bottom";
@@ -1 +1 @@
1
- {"version":3,"file":"BA63.d.ts","sourceRoot":"","sources":["../../src/classes/BA63.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD,KAAK,aAAa,GAAG,OAAO,CAAC;IAC3B,wFAAwF;IACxF,IAAI,EAAE,OAAO,CAAC;CACf,CAAC,CAAC;AAEH,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAe;IAE7B,sDAAsD;IACtD,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAU;IAE/C;;OAEG;gBACS,MAAM,EAAE,GAAG,CAAC,QAAQ;WAInB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAsCtB,GAAG;IAUX,MAAM,CACV,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC;IAgCV,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,GAAG,IAAI,KAAK,GAAG,QAAQ,CAE1B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
1
+ {"version":3,"file":"BA63.d.ts","sourceRoot":"","sources":["../../src/classes/BA63.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD,KAAK,aAAa,GAAG,OAAO,CAAC;IAC3B,wFAAwF;IACxF,IAAI,EAAE,OAAO,CAAC;CACf,CAAC,CAAC;AAEH,sEAAsE;AACtE,KAAK,SAAS,GAAG;IACf,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAe;IAE7B,sDAAsD;IACtD,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAU;IAE/C;;OAEG;gBACS,MAAM,EAAE,GAAG,CAAC,QAAQ;WAInB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAsCtB,GAAG;IAUX,MAAM,CACV,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC;IAgCV,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAanD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,GAAG,IAAI,KAAK,GAAG,QAAQ,CAE1B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
package/dist/index.js CHANGED
@@ -51,6 +51,11 @@ class BA63 {
51
51
  const padding = Math.floor((20 - trimmedMessage.length) / 2);
52
52
  this.setCursorPosition(this.cursorPos[0], padding);
53
53
  await this.render(trimmedMessage);
54
+ const columnCellsUsed = {
55
+ start: padding,
56
+ end: padding + trimmedMessage.length - 1
57
+ };
58
+ return columnCellsUsed;
54
59
  }
55
60
  async testRender() {
56
61
  const testMessage = "Hello from BA63!";
@@ -66,7 +71,7 @@ class BA63 {
66
71
  async lineFeed() {
67
72
  const command = [10];
68
73
  await this.run(command);
69
- this.setCursorRow(Math.min(1, this.currentRow + 1));
74
+ this.setCursorRow(1);
70
75
  }
71
76
  async backspace() {
72
77
  const command = [8];
@@ -142,4 +147,4 @@ export {
142
147
  BA63
143
148
  };
144
149
 
145
- //# debugId=C3520B00CEF43B2B64756E2164756E21
150
+ //# debugId=68289E4E9E584ABC64756E2164756E21
package/dist/index.js.map CHANGED
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/classes/BA63.ts", "../src/constants/charset.ts"],
4
4
  "sourcesContent": [
5
- "import HID from \"node-hid\";\nimport type { Charset } from \"../constants/charset\";\n\nconst vendorId = 2727;\nconst productId = 512;\n\ntype RenderOptions = Partial<{\n /** If the message reaches the end of the top line, start printing on the bottom line.*/\n wrap: boolean;\n}>;\n\nexport class BA63 {\n private device: HID.HIDAsync;\n\n /** Current cursor position in [row, column] format */\n protected cursorPos: [number, number] = [0, 0];\n\n /**\n * **NOTE**: This constructor should only be used if you already have an open HID device to interface with.\n */\n constructor(device: HID.HIDAsync) {\n this.device = device;\n }\n\n static async create(): Promise<BA63> {\n const devices = HID.devices();\n const ba63Devices = devices.filter(\n (device) => device.vendorId === vendorId && device.productId === productId\n );\n\n if (ba63Devices.length === 0) {\n throw new Error(\"BA63 device not found\");\n }\n\n /*\n * When connecting to a BA63, you'll find that there are two different interfaces\n * to connect to. Interface 0 is for updating the BA63's firmware whereas interface 1\n * is for communicating with the display itself.\n */\n const displayInterface = ba63Devices.find((d) => d.interface === 1);\n\n if (!displayInterface) {\n throw new Error(\"BA63 display interface (Interface 1) not found!\");\n }\n\n const device = await HID.HIDAsync.open(displayInterface.path!);\n\n // device.on(\"data\", (data) => {\n // console.log(\"Data received:\", data);\n // });\n\n // device.on(\"error\", (err) => {\n // console.error(\"Error:\", err);\n // });\n\n const ba63 = new BA63(device);\n await ba63.clearDisplay();\n await ba63.setCharset(0); // Set to USA charset\n\n return ba63;\n }\n\n private async run(command: number[]): Promise<void> {\n // Pad to 32 bytes (HID report size)\n const writeCommand = [0x02, 0x00, command.length, ...command];\n while (writeCommand.length < 32) {\n writeCommand.push(0x00);\n }\n\n await this.device.write(writeCommand);\n }\n\n async render(\n message: string | number[],\n options?: RenderOptions\n ): Promise<void> {\n const trimmedMessage = message.slice(0, this.lengthToEnd);\n\n const arr =\n typeof trimmedMessage === \"string\"\n ? Array.from(Buffer.from(trimmedMessage, \"ascii\"))\n : trimmedMessage;\n\n await this.run(arr);\n this.setCursorColumn(this.currentColumn + arr.length);\n\n // If wrapping is enabled, we're on the top line, and there's more message to render, continue rendering on next line\n if (\n options?.wrap &&\n this.row === \"top\" &&\n message.length > trimmedMessage.length\n ) {\n const excessMessage = message.slice(trimmedMessage.length);\n\n await this.setCursorPosition(1, 0);\n\n const excessArr =\n typeof excessMessage === \"string\"\n ? Array.from(Buffer.from(excessMessage, \"ascii\"))\n : excessMessage;\n\n await this.run(excessArr);\n this.setCursorColumn(this.currentColumn + excessArr.length);\n return;\n }\n }\n\n async renderInCenter(message: string): Promise<void> {\n const trimmedMessage = message.slice(0, 20);\n const padding = Math.floor((20 - trimmedMessage.length) / 2);\n this.setCursorPosition(this.cursorPos[0], padding);\n\n await this.render(trimmedMessage);\n }\n\n async testRender(): Promise<void> {\n const testMessage = \"Hello from BA63!\";\n await this.renderInCenter(testMessage);\n await this.setCursorRow(1);\n await this.renderInCenter(\"- Caleb\");\n }\n\n async carriageReturn(): Promise<void> {\n const command = [0x0d];\n await this.run(command);\n this.setCursorColumn(0);\n }\n\n async lineFeed(): Promise<void> {\n const command = [0x0a];\n await this.run(command);\n this.setCursorRow(Math.min(1, this.currentRow + 1));\n }\n\n async backspace(): Promise<void> {\n const command = [0x08];\n await this.run(command);\n this.setCursorColumn(Math.max(0, this.currentColumn - 1));\n }\n\n async setCharset(charset: Charset): Promise<void> {\n const command = [0x1b, 0x52, charset];\n await this.run(command);\n }\n\n async deleteToEOL(): Promise<void> {\n const command = [0x1b, 0x5b, 0x30, 0x4b];\n await this.run(command);\n }\n\n async setCursorPosition(row: number, column: number): Promise<void> {\n this.cursorPos = [row, column];\n\n const asciiRow = (row + 1).toString().charCodeAt(0);\n // asciiColumn can be more than one digit\n const asciiColumn = (column + 1)\n .toString()\n .split(\"\")\n .map((char) => char.charCodeAt(0));\n\n const command = [0x1b, 0x5b, asciiRow, 0x3b, ...asciiColumn, 0x48];\n await this.run(command);\n }\n\n async setCursorColumn(column: number): Promise<void> {\n this.setCursorPosition(this.cursorPos[0], column);\n }\n\n async setCursorRow(row: number): Promise<void> {\n this.setCursorPosition(row, this.cursorPos[1]);\n }\n\n async clearDisplay(): Promise<void> {\n const command = [0x1b, 0x5b, 0x32, 0x4a];\n await this.run(command);\n }\n\n get lengthToEnd(): number {\n return 20 - this.cursorPos[1];\n }\n\n get row(): \"top\" | \"bottom\" {\n return this.cursorPos[0] === 0 ? \"top\" : \"bottom\";\n }\n\n get currentRow(): number {\n return this.cursorPos[0];\n }\n\n get currentColumn(): number {\n return this.cursorPos[1];\n }\n}\n",
5
+ "import HID from \"node-hid\";\nimport type { Charset } from \"../constants/charset\";\n\nconst vendorId = 2727;\nconst productId = 512;\n\ntype RenderOptions = Partial<{\n /** If the message reaches the end of the top line, start printing on the bottom line.*/\n wrap: boolean;\n}>;\n\n/** The start and end column positions of the section of cells used */\ntype UsedCells = {\n /** The start position of the section of cells used */\n start: number;\n /** The end position of the section of cells used */\n end: number;\n};\n\nexport class BA63 {\n private device: HID.HIDAsync;\n\n /** Current cursor position in [row, column] format */\n protected cursorPos: [number, number] = [0, 0];\n\n /**\n * **NOTE**: This constructor should only be used if you already have an open HID device to interface with.\n */\n constructor(device: HID.HIDAsync) {\n this.device = device;\n }\n\n static async create(): Promise<BA63> {\n const devices = HID.devices();\n const ba63Devices = devices.filter(\n (device) => device.vendorId === vendorId && device.productId === productId\n );\n\n if (ba63Devices.length === 0) {\n throw new Error(\"BA63 device not found\");\n }\n\n /*\n * When connecting to a BA63, you'll find that there are two different interfaces\n * to connect to. Interface 0 is for updating the BA63's firmware whereas interface 1\n * is for communicating with the display itself.\n */\n const displayInterface = ba63Devices.find((d) => d.interface === 1);\n\n if (!displayInterface) {\n throw new Error(\"BA63 display interface (Interface 1) not found!\");\n }\n\n const device = await HID.HIDAsync.open(displayInterface.path!);\n\n // device.on(\"data\", (data) => {\n // console.log(\"Data received:\", data);\n // });\n\n // device.on(\"error\", (err) => {\n // console.error(\"Error:\", err);\n // });\n\n const ba63 = new BA63(device);\n await ba63.clearDisplay();\n await ba63.setCharset(0); // Set to USA charset\n\n return ba63;\n }\n\n private async run(command: number[]): Promise<void> {\n // Pad to 32 bytes (HID report size)\n const writeCommand = [0x02, 0x00, command.length, ...command];\n while (writeCommand.length < 32) {\n writeCommand.push(0x00);\n }\n\n await this.device.write(writeCommand);\n }\n\n async render(\n message: string | number[],\n options?: RenderOptions\n ): Promise<void> {\n const trimmedMessage = message.slice(0, this.lengthToEnd);\n\n const arr =\n typeof trimmedMessage === \"string\"\n ? Array.from(Buffer.from(trimmedMessage, \"ascii\"))\n : trimmedMessage;\n\n await this.run(arr);\n this.setCursorColumn(this.currentColumn + arr.length);\n\n // If wrapping is enabled, we're on the top line, and there's more message to render, continue rendering on next line\n if (\n options?.wrap &&\n this.row === \"top\" &&\n message.length > trimmedMessage.length\n ) {\n const excessMessage = message.slice(trimmedMessage.length);\n\n await this.setCursorPosition(1, 0);\n\n const excessArr =\n typeof excessMessage === \"string\"\n ? Array.from(Buffer.from(excessMessage, \"ascii\"))\n : excessMessage;\n\n await this.run(excessArr);\n this.setCursorColumn(this.currentColumn + excessArr.length);\n return;\n }\n }\n\n async renderInCenter(message: string): Promise<UsedCells> {\n const trimmedMessage = message.slice(0, 20);\n const padding = Math.floor((20 - trimmedMessage.length) / 2);\n this.setCursorPosition(this.cursorPos[0], padding);\n\n await this.render(trimmedMessage);\n const columnCellsUsed = {\n start: padding,\n end: padding + trimmedMessage.length - 1,\n };\n return columnCellsUsed;\n }\n\n async testRender(): Promise<void> {\n const testMessage = \"Hello from BA63!\";\n await this.renderInCenter(testMessage);\n await this.setCursorRow(1);\n await this.renderInCenter(\"- Caleb\");\n }\n\n async carriageReturn(): Promise<void> {\n const command = [0x0d];\n await this.run(command);\n this.setCursorColumn(0);\n }\n\n async lineFeed(): Promise<void> {\n const command = [0x0a];\n await this.run(command);\n this.setCursorRow(1);\n }\n\n async backspace(): Promise<void> {\n const command = [0x08];\n await this.run(command);\n this.setCursorColumn(Math.max(0, this.currentColumn - 1));\n }\n\n async setCharset(charset: Charset): Promise<void> {\n const command = [0x1b, 0x52, charset];\n await this.run(command);\n }\n\n async deleteToEOL(): Promise<void> {\n const command = [0x1b, 0x5b, 0x30, 0x4b];\n await this.run(command);\n }\n\n async setCursorPosition(row: number, column: number): Promise<void> {\n this.cursorPos = [row, column];\n\n const asciiRow = (row + 1).toString().charCodeAt(0);\n // asciiColumn can be more than one digit\n const asciiColumn = (column + 1)\n .toString()\n .split(\"\")\n .map((char) => char.charCodeAt(0));\n\n const command = [0x1b, 0x5b, asciiRow, 0x3b, ...asciiColumn, 0x48];\n await this.run(command);\n }\n\n async setCursorColumn(column: number): Promise<void> {\n this.setCursorPosition(this.cursorPos[0], column);\n }\n\n async setCursorRow(row: (typeof this.cursorPos)[0]): Promise<void> {\n this.setCursorPosition(row, this.cursorPos[1]);\n }\n\n async clearDisplay(): Promise<void> {\n const command = [0x1b, 0x5b, 0x32, 0x4a];\n await this.run(command);\n }\n\n get lengthToEnd(): number {\n return 20 - this.cursorPos[1];\n }\n\n get row(): \"top\" | \"bottom\" {\n return this.cursorPos[0] === 0 ? \"top\" : \"bottom\";\n }\n\n get currentRow(): number {\n return this.cursorPos[0];\n }\n\n get currentColumn(): number {\n return this.cursorPos[1];\n }\n}\n",
6
6
  "export const charset = {\n USA: 0,\n France: 1,\n Germany: 2,\n UK: 3,\n Denmark1: 4,\n Sweden: 5,\n Italy: 6,\n Spain1: 7,\n Japan: 8,\n Norway: 9,\n Denmark2: 10,\n Spain2: 11,\n LatinAmerica: 12,\n Standard: 30,\n Latin1: 31,\n Latin2: 32,\n Latin5_Turkey: 33,\n LatinInternational: 34,\n Cyrillic: 35,\n Hebrew: 37,\n Greek2: 36,\n Katakana: 63,\n SpacePage: 73,\n} as const;\n\nexport type Charset = (typeof charset)[keyof typeof charset];\n"
7
7
  ],
8
- "mappings": "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",
9
- "debugId": "C3520B00CEF43B2B64756E2164756E21",
8
+ "mappings": "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",
9
+ "debugId": "68289E4E9E584ABC64756E2164756E21",
10
10
  "names": []
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ba63",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "author": {
5
5
  "name": "Caleb Perry",
6
6
  "url": "https://github.com/foxtrotperry",