0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

熱敏打印機(jī)的使用

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-02 09:51 ? 次閱讀

概述

使用這款非??蓯?ài)的熱敏打印機(jī)將微型打印機(jī)添加到任何微控制器項(xiàng)目中。也就是收據(jù)打印機(jī),它們就是您在ATM或雜貨店看到的東西。現(xiàn)在,您可以將自己的一臺(tái)小型打印機(jī)嵌入機(jī)箱中。該打印機(jī)非常適合與微控制器接口,您只需從微控制器獲得3.3V至5V TTL串行輸出即可打印文本,條形碼,位圖圖形甚至是QR碼!

該打印機(jī)使用非常常見(jiàn)的2。 25英寸寬的熱敏紙,可在Adafruit商店或任何辦公室或文具用品店中購(gòu)買(mǎi)。托架中最多可容納50英尺的紙張。您還需要5伏至9伏的可調(diào)節(jié)直流電源,該電源可提供1.5安培或在大電流打印過(guò)程中,我們的5V 2A電源可以很好地工作。

您可以在Adafruit商店購(gòu)買(mǎi)熱敏打印機(jī)套件,包括打印機(jī),紙張,電源和接線盒適配器!

當(dāng)然,我們不會(huì)給您數(shù)據(jù)表和“好運(yùn)!” —本教程和匹配的Arduino庫(kù)演示了以下內(nèi)容:

使用大,中,小文本打印

粗體 下劃線和倒排文本

變量行距

左對(duì)齊,居中對(duì)齊和右對(duì)齊

以下標(biāo)準(zhǔn)格式的條形碼: UPC A,UPC E,EAN13,EAN8,CODE39,I25,CODEBAR,CODE93,CODE128,CODE11 和 MSI -具有可調(diào)整的條形碼高度

自定義單色位圖圖形

如何打印QR碼

電源

這些打印機(jī)使用熱敏頭加熱特殊收據(jù)紙并繪制圖像和文字。這使打印機(jī)非常小-沒(méi)有移動(dòng)的墨水頭-但這意味著它們需要大量電能。該打印機(jī)特別需要 5至9伏,1.5安培電流?。∵@意味著您將需要相當(dāng)強(qiáng)勁的電源,并且無(wú)法使用USB電源供電。 需要外部適配器!

我們建議在我們的商店中使用5V 2A電源,它有足夠的電源使打印機(jī)保持滿意狀態(tài),還可以使用它來(lái)運(yùn)行一些微控制器或傳感器剩余的500 mA電流是打印機(jī)不需要的。

為打印機(jī)供電的快速方法是僅使用2.1毫米插孔適配器,您可以將其連接到打印機(jī)的紅色/黑色導(dǎo)線:

首次測(cè)試

您應(yīng)該做的第一項(xiàng)測(cè)試是確保打印機(jī)正在運(yùn)行并且電源連接正確。

首先,向上拉小塑料卡舌以打開(kāi)紙架。然后如下圖所示將57.5毫米(2 1/4英寸)熱敏紙卷插入托架。

對(duì)于產(chǎn)品ID#597“小型熱敏打印機(jī)”,最佳的紙張長(zhǎng)度將是為50英尺(約15米),因此請(qǐng)嘗試拾起該尺寸。有時(shí),如果您從辦公用品商店購(gòu)買(mǎi)紙張,紙張會(huì)稍長(zhǎng)一些,大約80或85英尺,在這種情況下,您需要從紙卷中取出紙張,直到其直徑為1.5英寸/40毫米并且容易安裝。

對(duì)于產(chǎn)品#2751“微型熱敏打印機(jī)”,紙張的最佳長(zhǎng)度為33英尺(約10米),因此請(qǐng)嘗試拾取該尺寸。

對(duì)于產(chǎn)品#2752“納米熱敏打印機(jī)” “紙張的最佳長(zhǎng)度為16英尺(約5米),因此請(qǐng)嘗試拾取該尺寸。

對(duì)于我們的熱敏打印機(jī)內(nèi)膽套件,沒(méi)有紙架,因此您可以使用任何尺寸。/li》

確保紙張沒(méi)有被裝訂或粘在托架中,它應(yīng)該可以自由旋轉(zhuǎn)。

如前所述,使用5V至9V 1.5A為打印機(jī)供電或更高的電源,例如連接2.1mm DC電源插孔:

按住按鈕o在插入電源的同時(shí),在打印機(jī)頂部(或控制板上)。您應(yīng)該會(huì)看到打印出的收據(jù),其中顯示了字體表和一些診斷信息。

有是打印機(jī)膽量上的無(wú)按鈕(#2753)。您將需要在J1上附加一個(gè)或手動(dòng)將其短路。

打印機(jī)通電后,綠色或紅色LED可能會(huì)閃爍。不一定會(huì)穩(wěn)定!

如果沒(méi)有得到打印輸出,請(qǐng)檢查紙張是否正確插入并且沒(méi)有裝訂,電源線是否正確連接,電源是否已插入等。然后嘗試再次,在連接電源時(shí)按住按鈕。

請(qǐng)注意測(cè)試頁(yè)上的波特率??赡苁?9200或9600。稍后我們需要這個(gè)數(shù)字:

某些打印機(jī)膽量(#2753)沒(méi)有自檢功能。

如果未打印出波特率,請(qǐng)嘗試使用9600作為默認(rèn)值。

Arduino代碼

要將數(shù)據(jù)發(fā)送到打印機(jī),我們將使用5V TTL串行連接。這與計(jì)算機(jī)9針串行端口上的10V RS232串行端口不同-請(qǐng)勿將打印機(jī)直接連接到標(biāo)準(zhǔn)PC端口,否則可能會(huì)損壞它。可以使用諸如FTDI電纜之類的東西與打印機(jī)進(jìn)行通訊,但是我們假設(shè)幾乎每個(gè)人都希望將其與微控制器一起使用。本教程顯示了如何將其連接到Arduino,并且我們的示例代碼與Arduino兼容。任何可以輸出TTL串行信號(hào)的微控制器都可以正常工作,并且對(duì)代碼進(jìn)行了適當(dāng)?shù)男薷摹?/p>

首先,我們將連接打印機(jī)的數(shù)據(jù)線。一種簡(jiǎn)單的連接方法是,只需將匹配顏色的22AWG左右的電線插入插頭,然后使用這些電線將其擴(kuò)展到Arduino。

對(duì)于產(chǎn)品#597

“小型熱敏打印機(jī)”的數(shù)據(jù)線有三根導(dǎo)線

black = 接地

黃色=打印機(jī)數(shù)據(jù) IN

綠色=打印機(jī)數(shù)據(jù) OUT

在電源線上,將紅色連接到5-9VDC電源,將黑色連接到電源接地

對(duì)于產(chǎn)品#2751

“微型熱敏打印機(jī)”的數(shù)據(jù)電纜具有《堅(jiān)固的五根電線

黑色= 接地

綠色=數(shù)據(jù) IN 至打印機(jī)-迷你熱敏打印機(jī)對(duì)面!

黃色=數(shù)據(jù) OUT 打印機(jī)-迷你熱敏打印機(jī)的對(duì)面!

讓紅色和藍(lán)色未連接任何東西

在電源線上,連接紅色至5-9VDC電源,黑色為地面供電

對(duì)于產(chǎn)品#2752

“納米熱敏打印機(jī)”的數(shù)據(jù)電纜具有五根電線,而沒(méi)有電源電纜

黑色= 接地

藍(lán)色=數(shù)據(jù) IN 到打印機(jī)(在PCB上標(biāo)記為 RX )

綠色=打印機(jī)的數(shù)據(jù) OUT (在PCB上標(biāo)記為 TX )

紅色= 5-9VDC電源(連接

yellow = DTR,暫時(shí)不使用,請(qǐng)?zhí)^(guò)!

對(duì)于產(chǎn)品#2753

“ Thermal Printer Guts”的數(shù)據(jù)線有五線,無(wú)電源線

在這種情況下,該電纜可能沒(méi)有顏色,請(qǐng)?jiān)?a target="_blank">連接器上查找文本??杀氖?,當(dāng)您插入電纜時(shí),它會(huì)被覆蓋

VH = 5-9VDC電源(將電源插頭的接地與上述數(shù)據(jù)連接到同一接地)

GND = 接地

PCB上標(biāo)有 RX 的數(shù)據(jù)=數(shù)據(jù) IN 到打印機(jī)

標(biāo)有 TX 的打印機(jī)上PCB =數(shù)據(jù) OUT

標(biāo)有 DTR PCB =連接到 GND 。

連接到Arduino

在Arduino端,數(shù)據(jù)輸出電線連接到數(shù)字引腳5 ,數(shù)據(jù)輸入轉(zhuǎn)到數(shù)字引腳6 ,并《接地》接地到任意 GND 引腳。您可以稍后更改數(shù)字引腳,但是要與示例代碼匹配,請(qǐng)暫時(shí)堅(jiān)持使用!

請(qǐng)注意下面的電線顏色不一定與數(shù)據(jù)電纜的顏色相匹配,因此請(qǐng)仔細(xì)檢查產(chǎn)品的輸入和輸出名稱,它們都不同!

安裝庫(kù)

現(xiàn)在是時(shí)候下載Arduino庫(kù)代碼了。

轉(zhuǎn)到 Sketch-》 Include Library-》 Manage Libraries 。..

下的Arduino庫(kù)管理器

從管理器中安裝 Adafruit熱敏打印機(jī)庫(kù)

我們還提供了有關(guān)Arduino庫(kù)安裝的出色教程,網(wǎng)址為:

http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

之后安裝庫(kù),重新啟動(dòng)Arduino IDE 。

您現(xiàn)在應(yīng)該可以通過(guò)按以下順序?yàn)g覽菜單來(lái)訪問(wèn)示例代碼: File→Sketchbook→Libraries→ Adafruit_Thermal→A_printertest

如果您的打印機(jī)測(cè)試頁(yè)顯示“ BAUDRATE:9600”,則需要對(duì)庫(kù)源代碼進(jìn)行少量更改。使用文本編輯器(記事本等)打開(kāi)文件Adafruit_Thermal.cpp并更改此行:

下載:文件

復(fù)制代碼

#define BAUDRATE 19200 #define BAUDRATE 19200

為此:

下載:文件

復(fù)制代碼

#define BAUDRATE 9600 #define BAUDRATE 9600

某些打印機(jī)到貨出廠設(shè)置為19200波特,但是有些可能設(shè)置為9600。這不會(huì)對(duì)您的設(shè)備性能產(chǎn)生負(fù)面影響!通過(guò)打印機(jī)的紙張速度已經(jīng)遠(yuǎn)遠(yuǎn)低于此速度,您將看不到任何區(qū)別……這完全是使微控制器和打印機(jī)通信的數(shù)據(jù)協(xié)議問(wèn)題。

確定將草圖(如有必要,更改波特率)上傳到Arduino。您應(yīng)該看到打印機(jī)打印出示例收據(jù),其中包括庫(kù)的所有功能。

如果這不起作用,請(qǐng)首先檢查打印機(jī)和Arduino均已供電,并且數(shù)據(jù)在其中,出線和接地線已正確連接到Arduino。

打印文本

熱敏打印機(jī)可以做一些方便的事情,其中大部分都在 A_printertest 草圖中。這些如上圖所示。按順序,從頂部開(kāi)始:

倒排的文本:這是通過(guò)調(diào)用 inverseOn()來(lái)調(diào)用的—您將獲得黑底白字而不是黑字-on-white。 inverseOff()將其關(guān)閉。

雙倍高度:這會(huì)使文本特別高,請(qǐng)調(diào)用 doubleHeightOn()-同樣,使用 doubleHeightOff()

左/中/右對(duì)齊來(lái)關(guān)閉:這會(huì)將文本與頁(yè)面的左邊緣或右邊緣對(duì)齊或居中對(duì)齊。您可以通過(guò)調(diào)用 justify(‘R’)(用于右對(duì)齊), justify(‘C’)(用于居中)或 justify( ‘L’)(用于左對(duì)齊)。左對(duì)齊是默認(rèn)狀態(tài)。

粗體文本:使其更加突出,使用 boldOn()啟用,然后用 boldOff()

帶下劃線的文本:使其更加突出,使用 underlineOn()啟用,并通過(guò) underlineOff()

大/中/小文本:默認(rèn)情況下,我們使用小號(hào),中號(hào)是高號(hào)的兩倍,大號(hào)是寬/高號(hào)的兩倍。使用 setSize(‘L’), setSize(‘M’)或 setSize(‘S’)

設(shè)置大小li》行距:您可以通過(guò)調(diào)用 setLineHeight()來(lái)更改文本行之間的間距 ,其中 numpix 是像素?cái)?shù)。最小值為24(行之間沒(méi)有多余的空格),默認(rèn)間距為32,雙倍行距的文本為64。

A_printertest草圖以查看在上下文中使用的這些。

位圖打印

此打印機(jī)可以打印出位圖,可以為帶有徽標(biāo)或類似字樣的收據(jù)添加一絲類。

第一個(gè)步驟是準(zhǔn)備徽標(biāo)。打印機(jī)只能打印單色(1位)圖像,最大寬度為384像素。我們建議從一個(gè)小的位圖(每側(cè)100像素或更小)開(kāi)始,然后嘗試獲得所需的尺寸和外觀。/p》

需要一些步驟來(lái)準(zhǔn)備要打印的圖像。對(duì)于Windows用戶,有一個(gè)不錯(cuò)的圖形用戶界面。對(duì)于Mac和Linux,使用了不同的工具……雖然外觀不那么漂亮,但效果很好。

這些條形碼打印機(jī)不應(yīng)與LaserJet混淆-它們不能很好地打印大量黑色的濃密圖像,否則它們可能會(huì)粘住并停滯!

div》

Windows

使用圖像編輯程序?qū)D像保存為1位BMP —在Windows中,內(nèi)置的 Paint 程序就足夠了。

下載,安裝并運(yùn)行 LCD Assistant 。該程序僅適用于Windows,但做得非常好!加載先前生成的BMP文件(在Paint等中)。文件必須為BMP格式-該軟件將不會(huì)讀取PNG,GIF等。然后需要調(diào)整一些設(shè)置……

首先,在設(shè)置的“字節(jié)方向”部分中,請(qǐng)選擇“水平”(上圖中的項(xiàng)目A)。

第二個(gè)(上圖中的項(xiàng)目B),您可能需要更改“寬度”設(shè)置。由于此軟件(和熱敏打印機(jī))按八個(gè)像素的水平組處理圖像,如果圖像寬度不是8的倍數(shù),它將被截?cái)啵ú眉簦┑阶罱妮^小的8像素邊界。例如,在上面的75像素寬的圖片中,輸出將被裁剪為僅72像素寬,從右側(cè)邊緣丟失了一些數(shù)據(jù)。為避免這種情況,請(qǐng)將此數(shù)字增加到下一個(gè)8的倍數(shù) (在上面的示例中為80),并且輸出將用空白像素填充以填補(bǔ)空白。請(qǐng)記住您在此處使用的數(shù)字,以后將需要它。

圖像高度不需要這樣調(diào)整,只需調(diào)整寬度即可。

將表名設(shè)置為簡(jiǎn)短但可描述的名稱(例如,上面的“ adalogo”) ,然后從“文件”菜單中選擇“保存輸出”。給文件起一個(gè)簡(jiǎn)短但描述性的名稱,以“ .h”結(jié)尾(例如“ adalogo.h”)。

要將此文件放入Arduino草圖,請(qǐng)從“草圖”菜單中選擇“添加文件…”。這將在您的代碼中添加一個(gè)新標(biāo)簽。您的原始代碼仍在最左側(cè)的標(biāo)簽下。

兩個(gè)標(biāo)簽現(xiàn)在都需要進(jìn)行一些小的更改。首先,在包含新表數(shù)據(jù)的文件頂部,將“ const unsigned char”更改為“ static const uint8_t PROGMEM”,如下所示:

接下來(lái),在包含代碼主體的標(biāo)簽中,添加“ include”語(yǔ)句以引用新文件:

下載:文件

復(fù)制代碼

#include “adalogo.h” #include “adalogo.h”

如果不確定如何正確包含代碼,請(qǐng)檢查 A_printertest 示例草圖。

您現(xiàn)在可以通過(guò)調(diào)用 printBitmap(width,height,tablename)輸出圖像,其中 width 和 height 是圖像的尺寸像素(如果您將圖像寬度更改為8的倍數(shù),請(qǐng)使用該數(shù)字而不是原始圖像尺寸),并且 tablename 是新標(biāo)簽中數(shù)組的名稱(例如,“ adalogo”) 。

圖形用戶界面很不錯(cuò),但是其中一些額外的步驟可能會(huì)造成混淆并且容易出錯(cuò)。如果您愿意,以下適用于Mac和Linux的技術(shù)也可在Windows中使用。

Mac和Linux

Mac和Linux的轉(zhuǎn)換工具不包含精美的GUI,但效果很好,并且避免了很多步驟(以及潛在的錯(cuò)誤步驟)。源圖像不需要采用BMP格式-大多數(shù)圖像格式都可以本地讀取-并可以通過(guò)進(jìn)一步編輯將輸出添加到草圖中。如果您愿意使用此方法,它也適用于Windows。

首先,如果尚未安裝處理語(yǔ)言,請(qǐng)從processing.org下載。處理看起來(lái)幾乎完全像Arduino IDE,但是它是為普通計(jì)算機(jī)而不是微控制器編寫(xiě)代碼的。這可能會(huì)使初學(xué)者感到困惑,因此,如果某些東西似乎無(wú)法編譯,請(qǐng)確保您在正確的環(huán)境中運(yùn)行代碼: Arduino 用于Arduino板,正在為您的計(jì)算機(jī)進(jìn)行處理。

此代碼在Processing 2.x(可從其網(wǎng)站上獲得的最新版本的Processing)中運(yùn)行。不要使用較舊的Processing 1.5.x版本!

您先前下載的Adafruit_Thermal庫(kù)文件夾包含一個(gè)名為 processing 的子文件夾。里面是一個(gè)名為 bitmapImageConvert.pde 的草圖。將其加載到“處理”中,然后按RUN(三角形按鈕)。

系統(tǒng)將使用系統(tǒng)的標(biāo)準(zhǔn)文件選擇對(duì)話框提示您選擇圖像。該程序僅運(yùn)行一小會(huì)兒,就會(huì)在原始圖像文件旁邊創(chuàng)建一個(gè)新文件。例如,如果您選擇了一個(gè)名為“ adalogo.png”的圖像,則在同一位置將有一個(gè)名為“ adalogo.h”的新文件。該文件包含要添加到Arduino草圖中的代碼。除非要在其中更改變量名,否則無(wú)需編輯此文件。

要將此文件放入Arduino草圖,請(qǐng)從“草圖”菜單中選擇“添加文件…”。這將在您的代碼中添加一個(gè)新標(biāo)簽。您的原始代碼仍位于最左側(cè)的選項(xiàng)卡下。

下一步,在包含代碼主體的選項(xiàng)卡中,添加“ include”語(yǔ)句以引用新文件:

下載:文件

復(fù)制代碼

#include “adalogo.h” #include “adalogo.h”

如果不確定如何正確包含代碼,請(qǐng)檢查 A_printertest 示例草圖。

如果源圖像名為adalogo.png,則生成的.h文件(adalogo.h)將包含三個(gè)名為adalogo_width,adalogo_height和adalogo_data的值,可以直接將它們按順序傳遞給printBitmap()函數(shù),如下所示:

下載:文件

復(fù)制代碼

printBitmap(adalogo_width, adalogo_height, adalogo_data); printBitmap(adalogo_width, adalogo_height, adalogo_data);

條形碼打印

熱敏打印機(jī)非常擅長(zhǎng)打印條形碼!該打印機(jī)支持11種不同的代碼- UPC A,UPC E,EAN13,EAN8,CODE39,I25,CODEBAR,CODE93,CODE128,CODE11 和 MSI 。它僅支持線性(1-D)條形碼,不能生成二維碼(如QR碼)(盡管您可以做一些破解,請(qǐng)參見(jiàn)下文?。l形碼是“即時(shí)”生成的,這很好-您可以很容易地自定義包含的高度和數(shù)據(jù)。

您可以通過(guò)調(diào)用 printBarcode(“ barcodedata”,BARCODETYPE)制作條形碼,其中第一個(gè)字符串是要編碼的數(shù)據(jù)(例如aUPC代碼)和 BARCODETYPE 可以是 UPC_A,UPC_E, EAN13,EAN8,CODE39,I25,CODEBAR,CODE93,CODE128,CODE11 或 MSI 。

某些條形碼非常受限制-您只能輸入12個(gè)數(shù)字,不能輸入任何字符。其他的則非常靈活,幾乎可以輸入任何字符。請(qǐng)查看Wikipedia列表,詳細(xì)列出條形碼的種類,然后為您的應(yīng)用選擇合適的條形碼。

條形碼的可用范圍隨打印機(jī)固件版本的不同而不同。在Adafruit_Thermal.h中查看代碼列表。

如果您愿意預(yù)先生成QR代碼,也可以打印QR代碼。舉例來(lái)說(shuō),如果您想在收據(jù)中包含一個(gè)URL并且URL保持不變,這可能會(huì)很方便。您可以在包括該站點(diǎn)在內(nèi)的許多站點(diǎn)上生成QR碼。使用最小的QR碼大小。圖片將采用PNG格式,因此,如果您使用的是Windows LCD助手工具,則需要先將其轉(zhuǎn)換為BMP(Windows Paint適用于此功能)。然后,您可以按照前面所述將其轉(zhuǎn)換并嵌入到Arduino草圖中。

CircuitPython

將熱敏打印機(jī)與CircuitPython(或Python)和Adafruit CircuitPython熱敏打印機(jī)模塊一起使用很容易。該模塊使您可以輕松地編寫(xiě)控制打印機(jī)的Python代碼,例如打印文本和條形碼(請(qǐng)注意,CircuitPython代碼現(xiàn)在不支持位圖打印不)。

CircuitPython微控制器接線

第一個(gè)完全按照Arduino前幾頁(yè)所示,通過(guò)串行連接將熱敏打印機(jī)連接到板上。確保為打印機(jī)提供電源,該電源可以在約1.5到2A的電流下提供5-9V電壓。

請(qǐng)記住,還有兩種連接打印機(jī)的方法,最簡(jiǎn)單的方法是連接打印機(jī)的電源。電路板的TX到打印機(jī)的RX –這使您可以打印任何東西,但不檢查紙張狀態(tài):

打印機(jī)電源正極(紅線)至 5-9V電源正極。

打印機(jī)電源接地(紅色旁邊的黑線)至電源負(fù)極/接地。

打印機(jī)RX(黃色)到板載串行TX 。

打印機(jī)接地(黃色旁邊的黑線)到板地/GND。

一個(gè)更高級(jí)的選項(xiàng)是連接打印機(jī)‘的TX引腳連接到開(kāi)發(fā)板的串行RX引腳。 但是要非常小心,以確保您的電路板支持5伏串行輸入!許多板卡,例如Feather M0,都不支持5V串行輸入,會(huì)損壞! :

打印機(jī)電源正極(紅線)到 5-9V直流電源正極。

打印機(jī)電源接地 (紅色旁邊的黑線)連接到電源負(fù)極/接地。

打印機(jī)RX (黃色)連接到板載串行TX 》。

打印機(jī)接地(黃色旁邊的黑線)到板接地/GND。

打印機(jī)TX 到2.2K Ω電阻的一側(cè)。

3.3K Ω電阻的一側(cè)到t的另一側(cè)他的2.2K Ω電阻。將3.3K Ω電阻的另一側(cè)連接到板地/GND。

板RX 連接到3.3K 的結(jié)Ω 和2.2K Ω電阻(即分壓器的輸出)。

再次非常小心地連接打印機(jī)TX(綠線)連接到板上!如上所述,如果不支持5伏輸入,則可能會(huì)損壞電路板。如有疑問(wèn),請(qǐng)斷開(kāi)綠線的連接!您仍然可以在沒(méi)有綠線的情況下進(jìn)行打印,只有在有紙的情況下,您才失去閱讀能力。

Python計(jì)算機(jī)接線

由于存在數(shù)十種Linux計(jì)算機(jī)/主板,可以使用,我們將展示Raspberry Pi的接線。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問(wèn)Linux上的CircuitPython指南,以了解您的平臺(tái)是否受支持。

在這里,您有兩個(gè)選擇:外部USB到串行轉(zhuǎn)換器,或USB上的內(nèi)置UART。 Pi的TX/RX引腳。下面是連接USB到串行轉(zhuǎn)換器的示例:

USB TX 至打印機(jī)RX

USB接地 》到打印機(jī)地面

以下是使用Pi內(nèi)置的示例UART:

Pi GND 至打印機(jī)接地(黑線)

Pistrong TXD 至打印機(jī)RX (黃線)

如果要使用內(nèi)置UART,則需要禁用串行控制臺(tái)并在 raspi-config 中啟用串行端口硬件。有關(guān)如何執(zhí)行此操作的詳細(xì)說(shuō)明,請(qǐng)參見(jiàn)《 Raspberry Pi上的CircuitPython指南》的“ UART/串行”部分。

如果您希望能夠檢查打印機(jī)的紙張狀態(tài),則可以可以創(chuàng)建一個(gè)具有2.2K Ω和3.3K Ω電阻器電路的簡(jiǎn)單分壓器,將打印機(jī)的5V輸出降低到更安全的3.3V電平:

打印機(jī)RX (黃色)到 Pi串行TXD 。

打印機(jī)接地(黃色旁邊的黑線)到 Pi GND。

打印機(jī)TX 到2.2K Ω電阻器的一側(cè)。

3.3 K Ω電阻的一側(cè)到2.2K Ω電阻的另一側(cè)。將3.3K Ω電阻的另一端連接到 Pi GND 。

Pi RXD 到電阻的結(jié)。 3.3K Ω和2.2K Ω電阻(即分壓器的輸出)。

您可以對(duì)USB到串行電纜使用相同的技術(shù):

USB接地到面包板接地導(dǎo)軌。

打印機(jī)RX (黃色)到 USB TX (綠色)。

打印機(jī)接地(黃色旁邊的黑線)到接地軌。

打印機(jī)TX 到2.2K Ω電阻的一側(cè)。

3.3 K Ω電阻的一側(cè)到2.2K 的另一側(cè)Ω重sistor。將3.3K Ω電阻的另一端連接到接地軌。

USB RX 連接到 3.3K Ω和2.2K Ω電阻(即分壓器的輸出)。

CircuitPython熱敏打印機(jī)庫(kù)的安裝

如果您使用CircuitPython微控制器,則需要在CircuitPython板上安裝Adafruit CircuitPython熱敏打印機(jī)庫(kù)。

首先請(qǐng)確保您正在運(yùn)行

下一步,您需要安裝必要的庫(kù)才能使用硬件-仔細(xì)按照以下步驟從Adafruit的CircuitPython庫(kù)包中查找并安裝這些庫(kù)。我們的簡(jiǎn)介指南上有一個(gè)很棒的頁(yè)面,介紹了如何為快速和非表達(dá)板安裝庫(kù)包。

記住非裝飾板,例如Trinket M0,Gemma M0和Feather/Metro M0 basic, ’需要從捆綁包中手動(dòng)安裝必要的庫(kù):

adafruit_thermal_printer

您還可以下載 adafruit_thermal_printer 文件夾在Github上的發(fā)布頁(yè)面。

在繼續(xù)之前,請(qǐng)確保您董事會(huì)的lib文件夾或根文件系統(tǒng)已復(fù)制 adafruit_thermal_printer 文件夾 。

GPS庫(kù)的Python安裝

如果將Raspberry Pi或其他計(jì)算機(jī)與Python配合使用,則需要安裝Adafruit_Blinka庫(kù),該庫(kù)在Python中提供了CircuitPython支持。這可能需要驗(yàn)證您是否正在運(yùn)行Python3。由于每個(gè)平臺(tái)都略有不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問(wèn)Linux上的CircuitPython指南以使您的計(jì)算機(jī)準(zhǔn)備就緒!

完成后,從您的命令行運(yùn)行以下命令:

下載:文件

復(fù)制代碼

sudo pip3 install adafruit-circuitpython-thermal-printer sudo pip3 install adafruit-circuitpython-thermal-printer

固件版本和波特率

在使用打印機(jī)模塊之前,必須確定打印機(jī)的固件版本和波特率。如第一個(gè)測(cè)試頁(yè)所述,通過(guò)從打印機(jī)打印測(cè)試頁(yè)很容易發(fā)現(xiàn),并在通電時(shí)按住打印機(jī)按鈕。打印出測(cè)試頁(yè),并記下底部打印的這些值:

波特率-請(qǐng)記住該值,通常為19200或9600。

版本-還要記下該值,例如2.2、2.64、2.68等。您將使用該版本來(lái)選擇用于與打印機(jī)交互的適當(dāng)模塊。

用法

如果您使用CircuitPython微控制器,請(qǐng)連接到開(kāi)發(fā)板的串行端口REPL,所以您在CircuitPython 》》》 提示符下。如果您使用的是Raspberry Pi之類的計(jì)算機(jī),請(qǐng)通過(guò)鍵入python3在命令提示符處顯示REPL。 (在某些系統(tǒng)上,python可能運(yùn)行Python 3-確保不使用Python 2,因?yàn)樗皇苤С?。?/p>

為演示傳感器的用法,我們將其初始化并從REPL中打印一些文本。

首先,您必須導(dǎo)入必要的模塊以初始化與打印機(jī)的硬件串行連接。這些命令將根據(jù)您的硬件而有所不同-選擇適當(dāng)?shù)脑O(shè)置:

下載:文件

復(fù)制代碼

# On a CircuitPython microcontroller:

import board

import busio

uart = busio.UART(board.TX, board.RX, baudrate=19200) # On a CircuitPython microcontroller:

import board

import busio

uart = busio.UART(board.TX, board.RX, baudrate=19200)

下載:文件

復(fù)制代碼

# On the Raspberry Pi with the USB-to-serial converter:

import serial

uart = serial.Serial(“/dev/ttyUSB0”, baudrate=19200, timeout=3000) # On the Raspberry Pi with the USB-to-serial converter:

import serial

uart = serial.Serial(“/dev/ttyUSB0”, baudrate=19200, timeout=3000)

下載:文件

復(fù)制代碼

# On the Raspberry Pi with built-in UART:

import serial

uart = serial.Serial(“/dev/serial0”, baudrate=19200, timeout=3000) # On the Raspberry Pi with built-in UART:

import serial

uart = serial.Serial(“/dev/serial0”, baudrate=19200, timeout=3000)

注意,串行連接的波特率由 baudrate 關(guān)鍵字。對(duì)于大多數(shù)打印機(jī),它們將使用19200波特率,但是其他打印機(jī)可能被配置為使用不同的速率,例如9600波特。 使用您在打印機(jī)測(cè)試頁(yè)上看到的波特率!

還請(qǐng)注意,CircuitPython當(dāng)前需要雙向UART連接,因此即使您沒(méi)有該板,掛鉤RX引腳(根據(jù)建議),您必須保持?jǐn)嚅_(kāi)狀態(tài),并忽略在項(xiàng)目中使用它。

創(chuàng)建ThermalPrinter類

接下來(lái),您需要導(dǎo)入熱敏打印機(jī)模塊并調(diào)用一個(gè)函數(shù)以獲取正確的類,具體取決于打印機(jī)固件的版本。 請(qǐng)按照上面提到的步驟和上一個(gè)測(cè)試頁(yè)上的步驟,找到正確的打印機(jī)版本!

下載:文件

復(fù)制代碼

import adafruit_thermal_printer

ThermalPrinter = adafruit_thermal_printer.get_printer_class(2.69) import adafruit_thermal_printer

ThermalPrinter = adafruit_thermal_printer.get_printer_class(2.69)

注意,您從get_printer_class模塊中調(diào)用了adafruit_thermal_printer函數(shù)。您必須將此功能傳遞給您所使用的熱敏打印機(jī)版本,并且它將在內(nèi)部找到要導(dǎo)入并在您的代碼中使用的正確類。在此示例中,我們指定的打印機(jī)的固件版本為2.69,但請(qǐng)確保指定打印機(jī)的版本!

結(jié)果是一個(gè)可以立即初始化的類:

初始化ThermalPrinter

現(xiàn)在構(gòu)造類:

下載:文件

復(fù)制代碼

ThermalPrinter printer = ThermalPrinter(uart)

注意,您必須傳遞先前構(gòu)建的串行UART連接。

請(qǐng)注意,它將從半到甚至五秒鐘,即可創(chuàng)建打印機(jī)并進(jìn)行初始化和預(yù)熱。您可以選擇將printer = ThermalPrinter(uart)指定為關(guān)鍵字,并手動(dòng)調(diào)用auto_warm_up=False函數(shù)來(lái)控制何時(shí)在應(yīng)用程序中需要此預(yù)熱時(shí)間(否則您會(huì)感到困惑,為什么代碼需要花很長(zhǎng)時(shí)間才能啟動(dòng))。

測(cè)試頁(yè)打印

現(xiàn)在就可以打印了!

嘗試使用warm_up功能打印完整的測(cè)試頁(yè):

下載:文件

復(fù)制代碼

test_page printer.test_page()

您應(yīng)該看到打印機(jī)測(cè)試頁(yè)已打印出來(lái)。

您可以使用printer.test_page()功能將紙張向前推進(jìn)多行,嘗試進(jìn)紙2行以留出一些空間:

下載:文件

復(fù)制代碼

feed printer.feed(2)

現(xiàn)在使用printer.feed(2)功能打印一小段文本,并輸入幾行以將其移出打印機(jī)以進(jìn)行讀?。?/p>

下載:文件

復(fù)制代碼

print printer.print(‘Hello from CircuitPython!’)

printer.feed(2)

打印機(jī)字體

您可以使用一些屬性來(lái)調(diào)整文本的打印方式。可以將每個(gè)參數(shù)設(shè)置為printer.print(‘Hello from CircuitPython!’)

printer.feed(2)值以啟用,或?qū)rue值禁用:

False-打印粗體文本。

bold-打印倒置文本(黑底白字)。

inverse-打印倒置文本(可能不適用于所有版本的打印機(jī))。

li》

upside_down-高度文本加倍。

double_height-寬度文本加倍。

double_width-刪除線文本(再次可能不適用于所有版本的打印機(jī))。

嘗試打開(kāi)粗體文本并打印一行:

下載:文件

復(fù)制代碼

strike printer.bold = True # Turn on bold

printer.print(‘This is bold text!’)

printer.bold = False # Turn off bold

# Feed lines to make visible:

printer.feed(2)

您可以將一些屬性設(shè)置為特殊值,以進(jìn)一步控制文本打?。?/p>

printer.bold = True # Turn on bold

printer.print(‘This is bold text!’)

printer.bold = False # Turn off bold

# Feed lines to make visible:

printer.feed(2)-此控件控制下劃線打印,可以為無(wú)(關(guān)閉),underline或adafruit_thermal_printer.UNDERLINE_THIN。

adafruit_thermal_printer.UNDERLINE_THICK -(文本),它控制文本的大小,可以是size , adafruit_thermal_printer.SIZE_SMALL , 或adafruit_thermal_printer.SIZE_MEDIUM 。 默認(rèn)值很小。

adafruit_thermal_printer.SIZE_LARGE -,它控制打印文本的對(duì)齊方式或位置,可以為justify , adafruit_thermal_printer.JUSTIFY_LEFT ,或adafruit_thermal_printer.JUSTIFY_CENTER 。 默認(rèn)為左對(duì)齊。

例如,打印帶有中心對(duì)齊的帶下劃線的中號(hào)粗文本:

下載:文件

復(fù)制代碼

adafruit_thermal_printer.JUSTIFY_RIGHT printer.underline = adafruit_thermal_printer.UNDERLINE_THICK

printer.size = adafruit_thermal_printer.SIZE_MEDIUM

printer.justify = adafruit_thermal_printer.JUSTIFY_CENTER

printer.print(‘Medium center!’)

# Reset back to normal printing:

printer.underline = None

printer.size = adafruit_thermal_printer.SIZE_SMALL

printer.justify = adafruit_thermal_printer.JUSTIFY_LEFT

# Feed lines to make visible:

printer.feed(2)

打印條形碼

最后,您可以使用printer.underline = adafruit_thermal_printer.UNDERLINE_THICK

printer.size = adafruit_thermal_printer.SIZE_MEDIUM

printer.justify = adafruit_thermal_printer.JUSTIFY_CENTER

printer.print(‘Medium center!’)

# Reset back to normal printing:

printer.underline = None

printer.size = adafruit_thermal_printer.SIZE_SMALL

printer.justify = adafruit_thermal_printer.JUSTIFY_LEFT

# Feed lines to make visible:

printer.feed(2)功能打印條形碼。每個(gè)打印機(jī)都支持不同類型和格式的條形碼,因此請(qǐng)查閱下載部分中有關(guān)每種類型的產(chǎn)品表。但是,以下是打印值為‘123456789012’的UPC A條形碼的示例:

Download:file

復(fù)制代碼

print_barcode printer.print_barcode(‘123456789012’, printer.UPC_A)

printer.feed(2)

printer.print_barcode(‘123456789012’, printer.UPC_A)

printer.feed(2)的第一個(gè)參數(shù)是定義條形碼值的字符串(這取決于條形碼的類型,UPC A碼是13位數(shù)字)。第二個(gè)參數(shù)是條形碼的類型,它又取決于打印機(jī)固件。您可能使用的典型值包括:

print_barcode

printer.UPC_A

printer.UPC_E

printer.EAN13

printer.EAN8

printer.CODE39

printer.ITF

printer.CODABAR

printer.CODE93

檢查紙張

如果您已經(jīng)將電路板的RX引腳連接到打印機(jī)TX (同樣,請(qǐng)務(wù)必確保您的板支持5V串行RX(很多不支持!)。您可以使用printer.CODE128函數(shù)查詢紙張狀態(tài),如果有紙,則該函數(shù)返回has_paper或True:

下載:文件

復(fù)制代碼

False printer.has_paper()

這是在CircuitPython中使用熱敏打印機(jī)的全部?jī)?nèi)容!

用法的完整演示在庫(kù)中的thermal_printer_simpletest.py演示中。

如果您正在跑步在Raspberry Pi(或任何計(jì)算機(jī))上打開(kāi)thermal_printer_simpletest.py,您必須進(jìn)行一些更改。

在Raspberry Pi上,注釋printer.has_paper()行,并取消注釋uart = busio(。..)和import serial行,將uart = serial.Serial(。..)更改為適當(dāng)?shù)拇卸丝凇?/p>

除非您使用分壓器連接打印機(jī)TX線,請(qǐng)確保注釋掉紙質(zhì)檢查代碼:

下載:文件

復(fù)制代碼

/dev/ttyUSB0 # Check if the printer has paper. This only works if the RX line is connected

# on your board (but BE CAREFUL as mentioned above this RX line is 5V?。?/p>

#if printer.has_paper():

# print(‘Printer has paper!’)

#else:

# print(‘Printer might be out of paper, or RX is disconnected!’)

現(xiàn)在,您可以使用以下命令運(yùn)行該程序:

下載:文件

復(fù)制代碼

# Check if the printer has paper. This only works if the RX line is connected

# on your board (but BE CAREFUL as mentioned above this RX line is 5V!)

#if printer.has_paper():

# print(‘Printer has paper!’)

#else:

# print(‘Printer might be out of paper, or RX is disconnected!’) python3 thermal_printer_simpletest.py

下載:Project Zip 或 thermal_printer_simpletest.py | 在Github上查看

復(fù)制代碼

python3 thermal_printer_simpletest.py # Simple demo of printer functionality.

# Author: Tony DiCola

import board

import busio

import adafruit_thermal_printer

# Pick which version thermal printer class to use depending on the version of

# your printer. Hold the button on the printer as it‘s powered on and it will

# print a test page that displays the firmware version, like 2.64, 2.68, etc.

# Use this version in the get_printer_class function below.

ThermalPrinter = adafruit_thermal_printer.get_printer_class(2.69)

# Define RX and TX pins for the board’s serial port connected to the printer.

# Only the TX pin needs to be configued, and note to take care NOT to connect

# the RX pin if your board doesn‘t support 5V inputs. If RX is left unconnected

# the only loss in functionality is checking if the printer has paper--all other

# functions of the printer will work.

RX = board.RX

TX = board.TX

# Create a serial connection for the printer. You must use the same baud rate

# as your printer is configured (print a test page by holding the button

# during power-up and it will show the baud rate)。 Most printers use 19200.

uart = busio.UART(TX, RX, baudrate=19200)

# For a computer, use the pyserial library for uart access.

# import serial

# uart = serial.Serial(“/dev/serial0”, baudrate=19200, timeout=3000)

# Create the printer instance.

printer = ThermalPrinter(uart, auto_warm_up=False)

# Initialize the printer. Note this will take a few seconds for the printer

# to warm up and be ready to accept commands (hence calling it explicitly vs.

# automatically in the initializer with the default auto_warm_up=True)。

printer.warm_up()

# Check if the printer has paper. This only works if the RX line is connected

# on your board (but BE CAREFUL as mentioned above this RX line is 5V?。?/p>

if printer.has_paper():

print(’Printer has paper!‘)

else:

print(’Printer might be out of paper, or RX is disconnected!‘)

# Print a test page:

printer.test_page()

# Move the paper forward two lines:

printer.feed(2)

# Print a line of text:

printer.print(’Hello world!‘)

# Print a bold line of text:

printer.bold = True

printer.print(’Bold hello world!‘)

printer.bold = False

# Print a normal/thin underline line of text:

printer.underline = adafruit_thermal_printer.UNDERLINE_THIN

printer.print(’Thin underline!‘)

# Print a thick underline line of text:

printer.underline = adafruit_thermal_printer.UNDERLINE_THICK

printer.print(’Thick underline!‘)

# Disable underlines.

printer.underline = None

# Print an inverted line.

printer.inverse = True

printer.print(’Inverse hello world!‘)

printer.inverse = False

# Print an upside down line.

printer.upside_down = True

printer.print(’Upside down hello!‘)

printer.upside_down = False

# Print a double height line.

printer.double_height = True

printer.print(’Double height!‘)

printer.double_height = False

# Print a double width line.

printer.double_width = True

printer.print(’Double width!‘)

printer.double_width = False

# Print a strike-through line.

printer.strike = True

printer.print(’Strike-through hello!‘)

printer.strike = False

# Print medium size text.

printer.size = adafruit_thermal_printer.SIZE_MEDIUM

printer.print(’Medium size text!‘)

# Print large size text.

printer.size = adafruit_thermal_printer.SIZE_LARGE

printer.print(’Large size text!‘)

# Back to normal / small size text.

printer.size = adafruit_thermal_printer.SIZE_SMALL

# Print center justified text.

printer.justify = adafruit_thermal_printer.JUSTIFY_CENTER

printer.print(’Center justified!‘)

# Print right justified text.

printer.justify = adafruit_thermal_printer.JUSTIFY_RIGHT

printer.print(’Right justified!‘)

# Back to left justified / normal text.

printer.justify = adafruit_thermal_printer.JUSTIFY_LEFT

# Print a UPC barcode.

printer.print(’UPCA barcode:‘)

printer.print_barcode(’123456789012‘, printer.UPC_A)

# Feed a few lines to see everything.

printer.feed(2)

下載

用于Arduino的Adafruit_Thermal庫(kù)。

LCD助手— Windows的可選位圖轉(zhuǎn)換實(shí)用程序。

處理語(yǔ)言-Mac或Linux(以及可選的Windows)的位圖轉(zhuǎn)換所需的語(yǔ)言。下載版本1.5.1,而不是2.0 beta。

熱敏打印機(jī)用戶手冊(cè)。

舊版本的熱敏打印機(jī)用戶手冊(cè)。

熱敏打印機(jī)產(chǎn)品表。

固件更改器

如果要冒險(xiǎn),可以使用制造商提供的此工具還原/更改固件。我們還沒(méi)有嘗試過(guò)。完全不支持它,您可能會(huì)損壞打印機(jī)。如果由于固件更改而停止運(yùn)行,我們將不予更換!

update_firmware.zip

問(wèn)題排查!

我無(wú)法正常工作!

首先要嘗試的是開(kāi)機(jī)測(cè)試。為此,您不需要使用arduino。

確保紙張正確插入進(jìn)紙架中,紙張應(yīng)該上下進(jìn)紙,以使紙張穿過(guò)插槽而不會(huì)彎曲

按住按鈕,然后插入打印機(jī)電源。它應(yīng)該打印出測(cè)試頁(yè)

綠色LED不會(huì)一直亮著,它會(huì)偶爾閃爍一次,這是正常的。

我是

請(qǐng)確保您擁有一個(gè)可以提供所需電流的良好電源。如果嘗試以5V電壓運(yùn)行,則即使在打印過(guò)程中電流需求達(dá)到峰值,您的電源也必須能夠保持恒定的5V電壓。如果您的打印機(jī)正在嘗試打印但又出現(xiàn)故障,那么您的電源可能會(huì)跌至5V以下。

如果可能,請(qǐng)嘗試使用更高電壓的電源。在9V電壓下,您應(yīng)該可以擺脫1A電流。

我很難獲得打印輸出

確保紙張正確插入進(jìn)紙架中,紙張應(yīng)向下或向上進(jìn)紙,以使紙張穿過(guò)插槽而不會(huì)彎曲

紙卷在托架中沒(méi)有“卡住”的感覺(jué),應(yīng)該可以輕松旋轉(zhuǎn)!

我的Arduino草圖曾經(jīng)可以使用,但是現(xiàn)在無(wú)法編譯!

已進(jìn)行一些更改以支持更廣泛的版本系列的Arduino樣板。較舊的代碼將需要更新。

舊語(yǔ)法:

Adafruit_Thermal打印機(jī)(RX_PIN,TX_PIN);

新語(yǔ)法:聲明一個(gè)SoftwareSerial對(duì)象,并將其地址傳遞給Adafruit_Thermal構(gòu)造函數(shù),如下所示:

SoftwareSerial mySerial(RX_PIN,TX_PIN);

Adafruit_Thermal打印機(jī)(&mySerial);

然后在setup()函數(shù)中:

mySerial.begin(19200);

printer.begin();

我的草圖已編譯,但輸出為

打印機(jī)的功能和行為在各種固件版本中都發(fā)生了變化

首先,檢查Adafruit_Thermal.h中的PRINTER_FIRMWARE值,確保它與打印機(jī)測(cè)試頁(yè)底部的值匹配。 e(在接通電源以打印測(cè)試頁(yè)時(shí),按住進(jìn)紙按鈕)。

某些功能在各個(gè)版本中的行為略有不同……條形碼,換行等,如果您以前使用的是較舊的庫(kù)或較舊的打印機(jī),您可能需要調(diào)整代碼以使用當(dāng)前設(shè)置生成所需的格式。

USB打印機(jī)未顯示為

打印機(jī)可能處于不同的模式。要檢查和更改當(dāng)前的USB模式,請(qǐng)執(zhí)行以下操作:

類似于自檢-在應(yīng)用 BUT KEEP HOLDING IT 時(shí)按住FEED按鈕(請(qǐng)參見(jiàn)下文) 。

您應(yīng)該獲得額外的輸出,告訴您當(dāng)前的USB模式。

如果未輸入COM,則再次按住FEED按鈕2秒鐘即可更改USB模式。

它應(yīng)打印新的USB模式,然后然后退出。

完成。

黑客

看看那些巨大的,銳利的圖像打?。∧胍恍﹩??

以下內(nèi)容……

是無(wú)證件打印機(jī)功能,不能保證正常工作。

可能需要修改您的打印機(jī)-一項(xiàng)避免保修的操作!繼續(xù),后果自負(fù)。

如果符合以下條件的 全部 ,則應(yīng)僅嘗試此操作:

首先確認(rèn)打印機(jī)在通過(guò)常規(guī)程序進(jìn)行操作時(shí)工作正常。

具有真正的性能瓶頸,首先不能通過(guò)調(diào)整打印機(jī)的時(shí)間和熱量設(shè)置來(lái)充分解決。

舒服的打開(kāi)東西和焊接。

修改后的打印機(jī)是不符合退款或交換條件。

這些打印機(jī)的串行接收緩沖區(qū)有限。將位推入打印機(jī)的速度超過(guò)了其物理加熱點(diǎn)和送紙的速度,并且您會(huì)遇到“溢出”的情況-位圖圖像變得亂碼,可能會(huì)跳過(guò)文本和格式化命令。

熱敏打印機(jī)庫(kù)試圖將數(shù)據(jù)以適當(dāng)?shù)乃俾收{(diào)整到打印機(jī)。太快,就會(huì)發(fā)生溢出。太慢了,會(huì)浪費(fèi)您的時(shí)間;打印機(jī)無(wú)法以峰值吞吐量運(yùn)行。這是一個(gè)不完善的過(guò)程……盡管我們使用非常保守的時(shí)序估計(jì),但無(wú)法預(yù)測(cè)通過(guò)打印機(jī)的實(shí)際速度……有時(shí)會(huì)仍然發(fā)生溢出。

硬件握手是打印機(jī)或其他設(shè)備可以向微控制器報(bào)告已準(zhǔn)備好接收更多數(shù)據(jù)的一種方法,實(shí)際上消除了緩沖區(qū)溢出(同時(shí)以峰值吞吐量運(yùn)行)……僅在物理上絕對(duì)必要時(shí)才停止進(jìn)紙。最佳性能。

這些熱敏打印機(jī)中的某些品種似乎支持硬件握手(例如,固件v2.64、2.68)。數(shù)據(jù)表中幾乎沒(méi)有提到這一點(diǎn),實(shí)際上在打印機(jī)的外部甚至沒(méi)有物理連接。請(qǐng)稍作手術(shù)……

“ Tiny”和“ Nano”打印機(jī)(加上“ Printer Guts”)的DTR引腳裸露-無(wú)需修改必要!向下滾動(dòng)到“代碼更改”部分以繼續(xù)。

所需的零件和工具

小型梅花槽螺絲刀

鉗子

烙鐵及相關(guān)用具

一點(diǎn)線…但理想的是母跳線

過(guò)程

拔下所有電纜,將打印機(jī)翻轉(zhuǎn)過(guò)來(lái),并卸下兩顆菲利普斯小螺釘。

取下背板,然后卸下將電路板固定到位的兩顆(有時(shí)是四顆)十字螺絲。

這些螺釘a比保留的小一些……不要混淆它們!

請(qǐng)小心,以免松開(kāi)或拔下連接器,將電路板翻轉(zhuǎn)過(guò)來(lái),尋找未打孔的帶有“ DTR”標(biāo)簽的孔。

如果您愿意的話,這里還有一些其他有趣的焊接點(diǎn)。 “ HV”是電源的原始5–9伏特。右側(cè)是一個(gè)3.3V引腳,盡管我不知道可用電流??梢韵氲降氖牵梢詼p少這些電纜的數(shù)量,從而減少項(xiàng)目中的總體布線……甚至可以在內(nèi)部安裝一個(gè)微型微控制器!

從母跳線上剪下一端,然后剝皮并鍍錫。

此會(huì)從打印機(jī)中伸出來(lái)……因此,如果您不使用連接器,則 female 跳線可以防止意外接觸物品。如果您只有普通電線,那很好,請(qǐng)注意不要讓裸露的晃來(lái)晃去。

將導(dǎo)線焊接到DTR焊盤(pán)。頂部,底部無(wú)所謂。..正好靠在串行連接插頭上,因此使用最適合您的任何路徑,都有足夠的空間來(lái)沿任一方向布線。

助聽(tīng)器可能會(huì)注意到,從技術(shù)上講,這不是DTR引腳,而是CTS。這在打印機(jī)制造商中已經(jīng)存在很久了……顯然,誤稱是幾十年前的事,但一直困擾著

在后面板上,串行和電源插座之間有一個(gè)小的金屬“手指”??梢允褂勉Q子將其彎曲以向DTR導(dǎo)線提供出口路徑。

將控制板重新擰緊到位(檢查兩條電纜是否都未松開(kāi)),在兩個(gè)插座之間布線DTR導(dǎo)線,然后將其擰緊。/p》

已完成硬件!

然后可以重新連接電源和串行插座,然后像以前一樣進(jìn)行布線。

使用跳線將DTR連接到任何可用的Arduino引腳。在我們的示例中,我們將使用數(shù)字引腳4。

打印機(jī)電子設(shè)備的工作電壓為3.3V,因此,對(duì)于3.3V板(Arduino Due等),無(wú)需進(jìn)行電平轉(zhuǎn)換…可以安全地直接連接。

代碼更改

只需一行。.. Adafruit_Thermal構(gòu)造函數(shù)。..需要更改。它可以接受可選參數(shù),即用于DTR的引腳號(hào):

下載:文件

復(fù)制代碼

Adafruit_Thermal printer(&mySerial, 4); Adafruit_Thermal printer(&mySerial, 4);

這與硬件串行端口(例如Arduino Mega或Due)同樣有效:

下載:文件

復(fù)制代碼

Adafruit_Thermal printer(&Serial1, 4); Adafruit_Thermal printer(&Serial1, 4);

不需要其他更改。嘗試使用其中一個(gè)示例草圖進(jìn)行嘗試……您會(huì)發(fā)現(xiàn)打印機(jī)突然很多更快!那是因?yàn)椴辉偈褂密浖烷T(mén)……打印機(jī)不斷向微控制器報(bào)告其實(shí)際的“就緒”狀態(tài)。

打印巨大圖像

printBitmap()函數(shù)可以從開(kāi)放流輸出圖像或?qū)⑵浯鎯?chǔ)在PROGMEM(閃存)中……如“打印位圖”頁(yè)面上所述。

盡管Arduino Mega具有高達(dá)256K的閃存空間,但AVR微控制器的局限性在于單個(gè)陣列不能超過(guò)32K……大約是384x680像素的位圖圖像。如果您嘗試在代碼中嵌入較大的圖像,則編譯器將報(bào)告錯(cuò)誤。

一種解決方法可能是將很長(zhǎng)的圖像分解為多個(gè)較小的圖像,并在不使用feed()的情況下連續(xù)打印出來(lái)

另一種方法是使用非AVR Arduino兼容板,例如32位Arduino Due。大規(guī)模陣列沒(méi)有問(wèn)題。上面的克萊斯勒大廈圖片為384x1132像素!

其他要知道的事情

只要總體點(diǎn)密度相當(dāng)?shù)停ㄈ绲陀?0%),這種打印機(jī)最適合使用淺色線條藝術(shù)以及有時(shí)抖動(dòng)的攝影圖像。較大的實(shí)心填充區(qū)域顯示出奇怪的條紋痕跡……這不是磁帶庫(kù)或打印機(jī)固件的錯(cuò)誤,而只是收據(jù)打印機(jī)操作方式的副作用,即它們一次只能加熱這么多的點(diǎn)并且必須拉動(dòng)shenanigans不能做到這一點(diǎn),否則它們就會(huì)卡住。

下面是一些精美的商業(yè)票據(jù)打印機(jī)的示例。

在第一個(gè)通知中,“純黑色”區(qū)域并不是真正的“純黑色”……仔細(xì)檢查它,您會(huì)看到它密密麻麻地抖動(dòng)了,但沒(méi)有100%被填充。

第二個(gè)確實(shí)具有實(shí)心填充,但限制了總面積。在任何給定行上,僅設(shè)置了這么多像素。

如果您嘗試打印“密集”圖像,則卡紙(圖像被垂直壓扁),將較低的濃度值傳遞給printer.begin()。默認(rèn)值為120。例如:

下載:文件

復(fù)制代碼

printer.begin(80); printer.begin(80);

DTR支持不是萬(wàn)能的。 偶爾還會(huì)出現(xiàn)毛刺…有時(shí)會(huì)溢出,有時(shí)會(huì)出現(xiàn)串行數(shù)據(jù)“成幀錯(cuò)誤”。但總體而言,它似乎相當(dāng)可靠且略微光滑!
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7458

    瀏覽量

    150859
  • 打印機(jī)
    +關(guān)注

    關(guān)注

    10

    文章

    762

    瀏覽量

    45525
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    瑞薩電子推出RX261/RX260微控制器產(chǎn)品群

    下為1μA。此外,它們還能幫助設(shè)計(jì)人員輕松實(shí)現(xiàn)防水的電容式觸控傳感器設(shè)計(jì),并提供強(qiáng)大的安全特性。得益于卓越性能與功能的完美結(jié)合,RX261/RX260產(chǎn)品群適用于家用電器、樓宇和工廠自動(dòng)化等應(yīng)用,以及智能鎖、電動(dòng)自行車(chē)和移動(dòng)式熱敏打印機(jī)等眾多應(yīng)用場(chǎng)景。
    的頭像 發(fā)表于 10-25 10:55 ?271次閱讀

    瑞薩電子推出RX261與RX260微控制器(MCU)產(chǎn)品群

    低至69微安/兆赫茲,待機(jī)模式下更是僅為1微安。此外,它們還助力設(shè)計(jì)師輕松打造具備防水功能的電容式觸控傳感器,并融入了強(qiáng)大的安全性能。憑借出色的性能與功能的完美結(jié)合,RX261/RX260系列廣泛應(yīng)用于家用電器、樓宇及工廠自動(dòng)化領(lǐng)域,同時(shí)也適用于智能鎖、電動(dòng)自行車(chē)及便攜式熱敏打印
    的頭像 發(fā)表于 10-23 11:02 ?362次閱讀

    數(shù)碼印像機(jī)怎么用

    數(shù)碼印像機(jī),也就是我們通常所說(shuō)的打印機(jī),是一種將電子文檔或圖像通過(guò)墨水或其他打印介質(zhì)轉(zhuǎn)移到紙張上的設(shè)備。打印機(jī)的種類繁多,包括噴墨打印機(jī)、激光打印機(jī)
    的頭像 發(fā)表于 10-14 09:27 ?146次閱讀

    打印機(jī)和噴墨打印機(jī)的區(qū)別

    打印機(jī),在常見(jiàn)的表述中,更常被稱為激光打印機(jī),它與噴墨打印機(jī)在多個(gè)方面存在顯著的區(qū)別。以下是對(duì)兩者區(qū)別的詳細(xì)分析:
    的頭像 發(fā)表于 09-16 15:45 ?335次閱讀

    canon打印機(jī)怎么用

    以下是一些關(guān)于Canon打印機(jī)使用的基本步驟和技巧: 安裝打印機(jī)驅(qū)動(dòng)程序: 訪問(wèn)Canon官方網(wǎng)站,根據(jù)您的打印機(jī)型號(hào)下載相應(yīng)的驅(qū)動(dòng)程序。 運(yùn)行下載的安裝程序并按照提示完成安裝。 連接打印機(jī)
    的頭像 發(fā)表于 06-14 18:05 ?1911次閱讀

    電子式多倍頻發(fā)生器(一體機(jī))工作原理——每日了解電力知識(shí)

    調(diào)節(jié)器。參數(shù)預(yù)置、保護(hù)設(shè)置、頻率選擇、電壓調(diào)節(jié)控制等,全部采用數(shù)字控制技術(shù)。內(nèi)置計(jì)算機(jī),8寸彩色液晶顯示,數(shù)據(jù)存儲(chǔ)可達(dá)到3200組。 采用觸摸式操作方式,配備熱敏打印機(jī)進(jìn)行漢字打印。 可預(yù)置50Hz、100Hz、150Hz、20
    的頭像 發(fā)表于 06-06 09:34 ?223次閱讀
    電子式多倍頻發(fā)生器(一體機(jī))工作原理——每日了解電力知識(shí)

    條形碼標(biāo)簽和條碼打印機(jī)哪個(gè)好?

    對(duì)于您的問(wèn)題,“條形碼標(biāo)簽”和“條碼打印機(jī)”哪個(gè)好,實(shí)際上取決于您的具體需求。1.條碼打印機(jī)的優(yōu)點(diǎn)條形碼打印機(jī)是一種以熱為基礎(chǔ)的打印機(jī),主要包括熱敏
    的頭像 發(fā)表于 05-08 10:56 ?594次閱讀
    條形碼標(biāo)簽和條碼<b class='flag-5'>打印機(jī)</b>哪個(gè)好?

    有誰(shuí)知道如何在熱敏打印機(jī)中實(shí)現(xiàn)圖片的灰階打印效果嗎?

    有誰(shuí)知道如何在熱敏打印機(jī)中實(shí)現(xiàn)圖片的灰階打印效果。 現(xiàn)在基本上文字打印,圖片打印功能都已開(kāi)發(fā)結(jié)束,圖片
    發(fā)表于 04-24 15:43

    PT2483L – 高電壓步進(jìn)電機(jī)驅(qū)動(dòng)IC

    PT2483L是一款高電壓步進(jìn)電機(jī)驅(qū)動(dòng)IC。適用于熱敏打印機(jī),安防云臺(tái),舞臺(tái)旋轉(zhuǎn)燈光,微型雕刻機(jī),3D打印
    的頭像 發(fā)表于 03-20 14:48 ?425次閱讀
    PT2483L – 高電壓步進(jìn)電機(jī)驅(qū)動(dòng)IC

    無(wú)線打印那些事:使用雙頻Wi-Fi,讓打印更輕松

    打印機(jī)在我們的日常生活中很常見(jiàn),從黑白激光打印機(jī),到彩色激光打印機(jī),熱敏打印機(jī)......如今越來(lái)越多小型輕便的
    的頭像 發(fā)表于 02-26 10:06 ?1184次閱讀
    無(wú)線<b class='flag-5'>打印</b>那些事:使用雙頻Wi-Fi,讓<b class='flag-5'>打印</b>更輕松

    SP-OH32SA 24V 高速熱敏打印機(jī)用戶手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《SP-OH32SA 24V 高速熱敏打印機(jī)用戶手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 01-24 09:30 ?1次下載

    熱敏打印機(jī)需求增長(zhǎng),主控選擇至關(guān)重要

    電子發(fā)燒友網(wǎng)報(bào)道(文/李寧遠(yuǎn))隨著雙碳政策的落地,現(xiàn)在很多行業(yè)都推進(jìn)綠色、節(jié)能、低碳的發(fā)展趨勢(shì),打印設(shè)備也不例外。熱敏打印機(jī)就因?yàn)槠涞秃牟男枨?、輕巧節(jié)能近年來(lái)受到了追捧。 ? 目前主流的打印
    的頭像 發(fā)表于 01-18 01:10 ?1772次閱讀

    ROHM羅姆開(kāi)發(fā)出使用1節(jié)鋰離子電池也能高速清晰打印熱敏打印

    物流行業(yè)的發(fā)展而普及的便攜式標(biāo)簽打印機(jī)以及電子貨幣支付的發(fā)展而普及的支付終端變得越來(lái)越重要。在便攜式標(biāo)簽打印機(jī)和支付終端等便攜式熱敏打印機(jī)領(lǐng)域,由于
    的頭像 發(fā)表于 01-16 16:18 ?461次閱讀
    ROHM羅姆開(kāi)發(fā)出使用1節(jié)鋰離子電池也能高速清晰<b class='flag-5'>打印</b>的<b class='flag-5'>熱敏</b><b class='flag-5'>打印</b>頭

    ROHM開(kāi)發(fā)出使用1節(jié)鋰離子電池也能高速清晰打印熱敏打印

    )驅(qū)動(dòng)的新結(jié)構(gòu)熱敏打印頭“KR2002-Q06N5AA”。 ? 近年來(lái),隨著物流行業(yè)的發(fā)展而普及的便攜式標(biāo)簽打印機(jī)以及電子貨幣支付的發(fā)展而普及的支付終端變得越來(lái)越重要。在便攜式標(biāo)簽打印機(jī)
    的頭像 發(fā)表于 01-16 14:47 ?396次閱讀
    ROHM開(kāi)發(fā)出使用1節(jié)鋰離子電池也能高速清晰<b class='flag-5'>打印</b>的<b class='flag-5'>熱敏</b><b class='flag-5'>打印</b>頭

    手持收銀機(jī)/智能安卓收銀機(jī)_POS機(jī)終端安卓主板方案定制

    的內(nèi)存,同時(shí)支持4G、WiFi和藍(lán)牙等通訊方式。它內(nèi)置了掃碼攝像頭、NFC、熱敏打印機(jī)、PSAM、刷卡模塊和金融級(jí)安全設(shè)計(jì)。
    的頭像 發(fā)表于 12-01 19:24 ?622次閱讀
    手持收銀機(jī)/智能安卓收銀機(jī)_POS機(jī)終端安卓主板方案定制