如何在 TSC 打印机中打印图像
Posted
技术标签:
【中文标题】如何在 TSC 打印机中打印图像【英文标题】:How to print image in TSC printer 【发布时间】:2014-03-25 20:56:37 【问题描述】:我正在使用 TSC ME240 打印机打印标签。 标签设计有公司标志、文字部分和条形码。 条形码和文本打印得很好,但徽标没有打印,这是存储在打印机内存中的 .bmp 图像。
每次打印标签时,都会弹出一条消息“无法打开文件”。
这是我的部分代码:
openport("printerName");
setup("80 mm", "51 mm", "4", "15", "0", "3 mm", "0");
clearbuffer();
// LOGO
downloadpcx("logo-bmp.PCX", "logo-bmp.PCX");
sendcommand("PUTPCX 19,15,\"logo-bmp.PCX\"");
printlabel("1", "1");
closeport();
我也尝试将图像存储在应用程序中,但仍然收到相同的消息。我想知道是否可能需要更改打印速度?打印机是否有可能因为打印机打印速度太快而无法打印图像?但如果打印速度设置得太低,贴纸可能会烧毁。
编辑:
我将打印机配置为较低的打印速度,但这并没有解决我的问题。
然后我尝试使用他们的示例图像,它打印得很好。我的图片是 5kb,他们的图片是 6kb,所以我知道大小与它没有任何关系。
我们将非常感谢您对此事的任何意见。这里的想法用完了。
【问题讨论】:
请问您是从哪个环境中执行此操作的,.net 还是 java。你在用什么sdk,你用的是什么控件或库PrintTSClabel
【参考方案1】:
我从 pcx 更改为 bmp。我还把图像缩小了 1kb。然后我使用 diagtool 将新图像上传到打印机。
除了删除downloadpcx
行并将PUTPCX
更改为PUTBMP
之外,我的代码没有改变。
openport("printerName");
setup("80 mm", "51 mm", "4", "15", "0", "3 mm", "0");
clearbuffer();
// LOGO
sendcommand("PUTBMP 19,15,\"logo-bmp.BMP\"");
printlabel("1", "1");
closeport();
然后它起作用了。
【讨论】:
【参考方案2】:您的代码应如下所示:
PrintTSClabel.openport("PrinterName as in Windows"); //Driver name of the printer as in Windows
PrintTSClabel.setup("80", "38", "4", "15", "0", "3", "0"); //Setup the media size and sensor type info
PrintTSClabel.clearbuffer(); //Clear image buffer
PrintTSClabel.downloadpcx(@"C:\USERS\USER\DOWNLOADS\LOGO-BMP.PCX", "LOGO-BMP.PCX"); //Download PCX file into printer
PrintTSClabel.sendcommand("PUTPCX 10,30,\"LOGO-BMP.PCX\""); //Drawing PCX graphic
PrintTSClabel.sendcommand("PRINT 1"); //Print labels
PrintTSClabel.closeport(); //Close specified printer driver
【讨论】:
【参考方案3】:这是因为图像不是 TSC 打印机支持的 BMP 格式(1 位或 256 位)。 在 Paint 中打开图像另存为 BMP,格式为 1 位或 256 位。
【讨论】:
【参考方案4】:我用下面的代码解决了这个问题:
TSCActivity tscDll = new TSCActivity();
tscDll.openport("00:19:0E:A2:23:DE");
tscDll.setup(100, 60, 4, 15, 0, 3, 0);
tscDll.clearbuffer();
String filePath = Environment.getExternalStorageDirectory().toString() + "/Download";
String fileName = "PrintImg2.bmp";
File mFile = new File(filePath, fileName);
tscDll.sendpicture(200, 200, mFile.getAbsolutePath());
tscDll.printlabel(1, 1);
tscDll.closeport();
在您的安卓手机上安装示例应用,并使用蓝牙将打印机与您的手机连接。
“TSCActivity”是“tscsdk”中的活动类。
'00:19:0E:A2:23:DE' 将其替换为您的打印机的 MAC 地址(与打印机配对后,您将在手机的 BT 设置中获取它)
这里我将图片保存在手机的下载文件夹中(adb push path_of_img/PrintImg2.bmp /mnt/sdcard/Download)。
图像大小取决于图像的分辨率,您可以更改 setup() 的第一个两个参数(宽度、高度......)以获得可能的最大尺寸。
【讨论】:
【参考方案5】:我遇到了同样的问题,下面的代码解决了这个问题。
mydll = cdll.LoadLibrary('k:\Work\SCANNER\Printer\TSCLIB_V0201_x64\TSCLIB.dll')
print 'Start Printing.'
mydll.openport("TSC TA300")
mydll.setup("32","25","2","10","0","0","0")
mydll.clearbuffer()
# LABEL TEMPLATE
mydll.sendcommand("SIZE 50.8 mm,25.4 mm")
mydll.sendcommand('GAP 3 mm,0 mm')
mydll.sendcommand('DIRECTION 0')
mydll.sendcommand('CLS')
# Draw Label Image
mydll.sendcommand('BOX 12,12,584.4,282,4,19.2')
mydll.sendcommand("QRCODE 417.6,160,H,4,A,0,\"ABCabc123\"")
mydll.sendcommand("TEXT 48,56,\"2\",0,1,1,\"I'm Testing\"")
# Print
mydll.sendcommand('PRINT 1,1')
mydll.closeport()
print 'Finished Printing.'
【讨论】:
以上是关于如何在 TSC 打印机中打印图像的主要内容,如果未能解决你的问题,请参考以下文章