2013-04-25 71 views
0

我正在爲Star Micronics的收據打印機做一些Android編程。在它提供的示例代碼中,有一行我不太明白。我對這樣的事實感到困惑,它有點鏈接到彙編語言或某種機器特定的指令。這段代碼爲什麼使文本中心對齊?

ArrayList<Byte> list = new ArrayList<Byte>(); 
Byte[] tempList; 

// Alignment (center)     
list.addAll(Arrays.asList(new Byte[]{0x1b, 0x1d, 0x61, 0x01})); 

有人能告訴我這條線如何實現中心對齊?

+2

似乎是真正特定於應用程序。我無法告訴你,除非我打開應用程序並找到它正在使用的那一行。 – Makoto 2013-04-25 02:47:47

+0

要添加到@Makoto所做的評論,它不是機器語言。這是一個'byte []',它利用十六進制值填充(例如'00'可以表示爲'0x0')。 – 2013-04-25 02:52:08

+1

需要了解更多關於Star Micronics的信息。也許你可以得到打印機的規格表。你顯示的代碼只是填充一個字節數組。在某些時候,陣列必須發送到打印機。 (我們沒有那個代碼)打印機文檔會告訴你這些命令是什麼。在文檔的某個地方,它將解釋命令格式,您將能夠理解爲什麼0x1b,0x1d,0x61,0x01表示「中心」。 – 2013-04-25 02:52:36

回答

1

這幾乎可以肯定是發送到打印機的命令序列。確切含義取決於打印機型號,但該字節值對應於以下字符序列:

<ESC><GS>a<01> 

如果是這樣,比如說,一個TSP200系列打印機,然後根據the programmer's manual(第58頁),它對應於功能「啓用/禁用自動狀態傳輸」。既然你說效果是中心對齊,我猜這只是一個不同的打印機型號。只需在適當的程序員手冊中檢查轉義序列即可。

+0

謝謝你們。 wquist和Ted Hopp提供的鏈接非常有幫助。 – tommy20061222 2013-04-26 02:39:01