java实现串口pos机打印

C# SerialPort连接串口,读写串口数据 C# SerialPort连接串口,读写串口数据 一、起始 最近在公司做上位机,上位机要求是能够读取一款支持串口通信的传感器并且把传感器的数据用图表显示出来,且上位机能对传感器发送指令,需求有涉及到串口通信和绘制图表。 那么首先要解决的问题就是能够让电脑上的程序进行串口通信,有串口通信的编程语言有很多,C++,C#,JAVA,Python等语言都是支持串口通信的。我选择了使用C#,因为上位机主要是在Windows操作系统上运行,而C#对于winodws桌面应用的开发支持是比较方便的,功能也比较强大,尤其是W 阅读详情

1、首先下载Javax.comm 下载地址:http://mdubuc.freeshell.org/Jolt/javacomm20-win32.zip

2、将文件win32comm.dll拷贝到%JAVA_HOME%\bin

3、在项目中导入comm.jar

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.TooManyListenersException;

import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;

public class PrintTest implements SerialPortEventListener {
	InputStream inputStream; // 从串口来的输入流
	OutputStream outputStream;// 向串口输出的流
	SerialPort serialPort; // 串口的引用
	CommPortIdentifier portId;

	public PrintTest(Enumeration portList, String name) {
		while (portList.hasMoreElements()) {
			CommPortIdentifier temp = (CommPortIdentifier) portList
					.nextElement();
			if (temp.getPortType() == CommPortIdentifier.PORT_SERIAL) {// 判断如果端口类型是串口
				if (temp.getName().equals(name)) { // 判断如果端口已经启动就连接
					portId = temp;
				}
			}
		}
		try {
			serialPort = (SerialPort) portId.open("My" + name, 2000);
		} catch (PortInUseException e) {

		}
		try {
			inputStream = serialPort.getInputStream();
			outputStream = serialPort.getOutputStream();
		} catch (IOException e) {
		}
		try {
			serialPort.addEventListener(this); // 给当前串口天加一个监听器
		} catch (TooManyListenersException e) {
		}
		serialPort.notifyOnDataAvailable(true); // 当有数据时通知
		try {
			serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, // 设置串口读写参数
					SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
		} catch (UnsupportedCommOperationException e) {
		}
		System.out.println(portId);
		System.out.println(serialPort);
	}

	public void serialEvent(SerialPortEvent event) {
		switch (event.getEventType()) {
		case SerialPortEvent.BI:
		case SerialPortEvent.OE:
		case SerialPortEvent.FE:
		case SerialPortEvent.PE:
		case SerialPortEvent.CD:
		case SerialPortEvent.CTS:
		case SerialPortEvent.DSR:
		case SerialPortEvent.RI:
		case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
			break;

		case SerialPortEvent.DATA_AVAILABLE:// 当有可用数据时读取数据,并且给串口返回数据
			byte[] readBuffer = new byte[20];

			try {
				while (inputStream.available() > 0) {
					System.out.println(inputStream.available());
					int numBytes = inputStream.read(readBuffer);
					System.out.println(numBytes);
				}
				System.out.println(new String(readBuffer).trim());
			} catch (IOException e) {
				e.printStackTrace();
			}
			break;
		}
	}

	public void send(String content) {
		try {
			outputStream.write((content).getBytes("gbk"));
			// outputStream.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void ClosePort() {
		System.out.println(serialPort);
		if (serialPort != null) {
			serialPort.close();
		}
	}

}


import java.util.Enumeration;

import javax.comm.CommPortIdentifier;


public class Test {

	   public static void main(String[] args) throws InterruptedException {  
	        Enumeration portList = CommPortIdentifier.getPortIdentifiers(); //得到当前连接上的端口  
	          
	        PrintTest comm3 = new PrintTest(portList,"COM4");  
			int lineOffset=5;
			StringBuffer cmd_sb=new StringBuffer();
			cmd_sb.append(0x1b+" DOWNLOAD \"XJMEI.BAS\"\r");
			cmd_sb.append("CLS\r");
			cmd_sb.append("SET COUNTER @1 1\r");
			cmd_sb.append("@1=\"xjmei\"\r");
			cmd_sb.append("TEXT 60,10,\"3\",0,1,1,@1\r");
			cmd_sb.append("PRINT 1,1\r");
			cmd_sb.append("EOP\r");
	        comm3.send(cmd_sb.toString());  
	        comm3.ClosePort();  
	    }  
}


Java热敏打印POS系统开发详解 热敏纸是一种特殊的涂布纸张,其表面涂有一层热敏涂层,主要由无色染料、显色剂和稳定剂组成。当热敏打印头对纸张某一区域加热时,热量促使染料与显色剂发生化学反应,从而形成可见的黑色或彩色图像。热敏纸的反应过程如下:常温下:染料与显色剂处于分离状态,纸张呈现白色。加热时:温度升高,显色剂溶解并与染料结合,形成有色物质。冷却后:染料与显色剂固化,图像固定在纸张上。⚠️注意事项:由于热敏纸对温度、光照敏感,长期暴露在高温或强光下会导致图像褪色。 阅读详情

相关推荐

JAVA 串口(LPT1)打印机 打印条形码 源码

java通过串口(LPT1)连接小票打印机 ,打印商品摘要信息及条形码

Java串行通信,控制打印机

[size=small;]1、准备:[/size]    1)、下载javacomm:     需要到其官方主页http://java.sun.com/products/javacomm/下载这个API,目前的最新版本是3.0。不过可惜的是,Sun目前没有推出此API在Windows平台下的3.0版本,主页上列出的三个版本,分别是运行在x86和Sparc结构下的Solaris系统,以及x86下的L...

海贼王,我当定了! 651

Java 实现POS打印机无驱串口打印(解决中文乱码)修改版

java串口通信通过静态的CommPortIdentifer.getPortIdentifiers()获得端口列表;再从这个端口列表中选择所需要的端口,并调用CommPortIdentifer对象的Open( )方法,这样,就能得到一个CommPort对象。当然,还要将这个CommPort对象的类型转换为某个非抽象的子类,表明是特定的通讯设备。该子类可以是SerialPort类和ParallePort类中的一个. 解决中文乱码主要是用OutputStreamWriter包在OutputStream的底层流,设置GBK编码读取.

JAVA连接打印机打印小票、产品信息。标签打印机

2018年写了一个标签打印机(TSC TX600),标签打印程序,实现功能是通过串口读出设备ID生成二维码和设备信息,用于esp8266 smart config配网。源码和资料:https://download.youkuaiyun.com/download/u012854263/12080191 package com.aiyun.print; import java.awt.print.Bo...

u012854263的专栏 2万+

标签打印机JAVA串口打印源代码

标签打印机JAVA串口打印源代码,里面有接口使用说明,可以跑的DEMO,通过JAVA控制串口,实现不干胶打印,

Java 实现 POS 打印机无驱串口打印(解决中文乱码)

java串口通信通过静态的CommPortIdentifer.getPortIdentifiers()获得端口列表;再从这个端口列表中选择所需要的端口,并调用CommPortIdentifer对象的Open( )方法,这样,就能得到一个CommPort对象。当然,还要将这个CommPort对象的类型转换为某个非抽象的子类,表明是特定的通讯设备。该子类可以是SerialPort类和ParallePort类中的一个. 解决中文乱码主要是用OutputStreamWriter包在OutputStream的底层流,设置GBK编码读取.

Java程序实现串口通信监听条码扫描器的代码(扫码枪)

本文展示了一个Java程序实现串口通信监听条码扫描器的代码。程序通过jSerialComm库获取可用串口,配置参数后打开指定串口监听条码数据。当扫描到条码时,将数据存入MySQL数据库,并自动更新对应记录的status字段为1。代码包含串口初始化、数据读取、数据库连接及关闭处理等功能,确保程序退出时正确关闭串口资源

博风_刺耳的博客(网络记事本) 439

【WRF-CMAQ实战指南】从环境配置到测试案例运行全解析

本文详细解析了WRF-CMAQ从环境配置到测试案例运行的全过程,包括系统环境检查、依赖库安装、源码获取与项目初始化、关键配置技巧、编译实战与排错、测试案例运行验证等关键步骤。通过实战指南,帮助用户快速掌握WRF-CMAQ的安装和运行技巧,提升空气质量模拟的效率。

year5的博客 244

Android 热敏打印机打印二维码

Android 热敏打印机打印二维码   昨天晚上说抽时间来写一篇关于Android 热敏打印机打印二维码和图片的文章,所幸在下班之前把它给写了,和大家分享吧。我的是Android机器有内置热敏打印机的,我是把apk跑在我的Android机器上的,操作程序打印的。   一、打印机的型号   RP-POS80S或RP-POS80P或R

bona020的专栏 8273

Maxwell个人初学经验及资料分享

前段时间学习了课题组基于Maxwell所建立的模型,因为以前从来没有使用过,只是按照一步一步记忆了操作,但总觉得不熟悉,我想是缺乏对这个软件整体的了解,真正想上手只会这一个模型也没有办法扩展。但是我感觉这些有限元分析软件学习起来应该有一些共性,基于以前对COMSOL学习的一点经验,我就在官网和其他网站找了一些学习资源构成一条基础入门之路,也可能有更好的资源,仅代表个人观点做一下分享。以上就是本人对该软件初步学习的一点理解,跟着这样的操作不到一个星期就能初步的掌握。...

怎么又是萝卜的博客 5631

Vite与Webpack路径配置大不同:从Vue2迁移到Vue3必须知道的public目录使用技巧

本文详细解析了Vite与Webpack在public目录路径配置上的核心差异,为Vue2迁移到Vue3的开发者提供实用指南。重点对比了两种构建工具的资源处理逻辑,给出典型编译警告的解决方案,并分享路径适配表与高级优化技巧,帮助开发者高效完成技术栈升级。

weixin_30836759的博客 485

使用java完成pos机打印_java实现串口pos机打印

2、将文件win32comm.dll拷贝到%JAVA_HOME%\bin3、在项目中导入comm.jarimport java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.TooManyListenersExce...

weixin_31542609的博客 557

GK2302量产工具下载方法,GK2302开卡教程,GK2301LT怎么开卡方法,附GK2302开卡工具,GK2301LT量产软件下载

​每种量产软件的操作流程可能略有不同,因此必须按照要求操作。为确保安全,建议使用量产部落网下载的原版量产开卡软件。

A520091000的博客 2122

pos机顾显java控制打印内容_Delphi下POS机控制钱箱,客显,打印机

1、控制POS机的客户显示屏procedureTFrmMain.ShowMoney(Money_Port:String;Money_String:String);//Moneey_Port顾显接口Com1orCom2Money_String顾显显示的内容varPrnFileName:TextFile;beginAssignfile(PrnFile...

weixin_42116705的博客 271

基于AI Agent的数据治理实战:从架构设计到企业级落地

数据治理是确保企业数据质量、一致性与安全性的核心实践,其核心原理在于通过规范、流程与技术工具对数据进行全生命周期管理。传统人工治理模式效率低下且难以规模化,而大语言模型(LLM)与智能体(Agent)技术的发展,为数据治理的自动化与智能化带来了突破。通过将自然语言理解、任务规划与工具调用能力相结合,AI Agent能够将治理规则“代码化”与“智能化”,实现从被动响应到主动发现的模式转变。在应用场景上,AI Agent可扮演智能数据专员角色,自动执行元数据问答、数据质量探查、口径对齐等任务,显著提升数据团队效

weixin_34008805的博客 418

ESD防护设计宝典(十一):CE(传导发射)超标问题排查与解决

(Conducted Emission, CE),亦称为传导骚扰,是电子电气设备或系统内部的电压、电流通过信号线、电源线或地线向外传输,对其他电子电气设备或系统造成电磁干扰的物理现象。其。

m0_56451176的博客 856

java 串口 中文乱码_Java 实现 POS 打印机无驱串口打印(解决中文乱码)

java串口通信的说明Java提供了CommunicationAPI(包含于http://www.doczj.com/doc/a82f84d0195f312b3169a53f.htmlm包中)用于通过与机器无关的方式,控制各种外部设备。Communications API,是标准的Java的扩展部分,它在JavaAPI中是没有附带的。Communications API 的核心是抽象的CommPo...

weixin_29240711的博客 439

Flutter 自适应布局一套代码适配手机和平板(12)

通过LayoutBuilder组件动态检测屏幕尺寸,根据宽度阈值(600px)选择不同布局方式。在小屏幕上显示单页联系人分组,大屏幕采用侧边栏+详情面板的并排布局。核心实现包括:1)使用LayoutBuilder获取父容器约束条件;2)定义大屏幕和小屏幕的布局断点;3)构建响应式界面组件,其中大屏幕布局采用Row横向排列固定宽度侧边栏和弹性宽度的详情区域。这种方案可确保应用在不同设备上都能提供最佳显示效果。

hello.reader 316

java 并口打印_linux 下java的串口,并口开发(RXTXcomm.jar)

环境:笔记本-虚拟机-红旗系统-实达金融手柄(串口)和打印机(并口)场景:写一个java的demo界面程序,演示操作金融手柄,返回数据后用打印机打印,演示结束。思路:java没有直接提供串口和并口开发的包,可以用sum提供的RXTXcomm.jar包开发步骤:.安装 rxtx-2.1-7---------------------------------(1) Download rxtx:建议...

weixin_36198509的博客 549

C/C++基础讲解(四十三)之图形篇之绘制直线、圆、圆弧、 椭圆

程序主要是基于Visual studio 2019进行编译完成了,有兴趣的小伙伴可以自己安装下Visual studio 2019,网上有现成的教程,当然了,如果有问题,也可以和我联系,这里我们主要讲解些源码实例,不多说了,言归正传。 C语言,做为学习其他语言的基础语言,其重要性就不言而喻了.下面我将和大家一起来学习探讨C语言的相关奥秘。 实例1:绘制直线 实例2:绘制圆 实例2:绘制圆弧 实例2:绘制椭圆

hnjzfwy的博客 1234

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android USB串口打印结账单小票

最近公司在做点餐相关的项目,需要通过USB串口连接打印机打印订单的小票,自己也是在网上查了一些相关的资料做了一些总结,最后把总结的代码贡献出来,给有需要的朋友做参考,废话不多说了,先看打印出来的效果,58mm和80mm的纸张都有。 ...

u012866962的博客 2227

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ESC/POS 打印机指令

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34221276的博客 1673

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

前往华虹下载POS机应用,回来又上传安装卡应用

今天都做了什么。 上午我来到公司,接上U转串线运行InitTool工具,不料打开串口失败,之后就给罗总打电话过去。罗总说重新安装了下U转串驱动程序,果然就安装成功了。接下来我在COM4端口上连接POS机,InitTool工具提示等待连接。。。后来罗总来到公司,交我先关掉POS机,重新打开POS机电源就好了。 然后我带着电脑来到华虹,联系上傅经理。傅经理在开会,就叫上他的同事韩工拿POS...

iteye_4170的博客 158

pb中POS的各种外设处理

优快云首页 新闻 论坛 小组 Blog 文档 下载 读书 Tag 网摘

flon的专栏 5003

2020 android 设备串口 通讯 监听 开发 (测试)

环境:android studio3.5 , java8 , 串口通讯设备(刷卡机)一台 介绍:android 实现设备的刷卡操作 监听 、处理(打印卡号)。(参考 google 官方demo) 1 引入 implementation 'com.aill:AndroidSerialPort:1.0.8' implementation files('libs/eventbus-3.0.0.jar') 2 复制 。目录结构如下(目录结构还得按照官方的路径),package com.aill.a..

z_dy1的博客 3930
上一篇: java调用window系统打印机打印图片
下一篇: java生成PDF文件
dinphi
博客等级 码龄18年 11粉丝 16原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值