利用Java实现串口全双工通讯-Java基础-Java-编程开发

微信小程序真机HTTPS证书链失效排查与修复指南 HTTPS证书信任链是保障Web通信安全的基础机制,其核心在于客户端能否通过服务器提供的证书及其上级签发者,逐级回溯至自身预置的可信根证书。在微信小程序场景中,由于客户端不复用系统根证书库,而是采用固化、精简且更新滞后的自研CA白名单,导致大量符合浏览器标准的证书(如Let’s Encrypt新版ISRG Root X1、TrustAsia等)在真机环境下触发net::ERR_CERT_AUTHORITY_INVALID错误。该问题本质是证书链断裂或签名算法/密钥长度不合规,而非域名配置或CORS策略异常。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程

一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。

本类库主要包括:SerialBean.java(与其他应用程序的接口),SerialBuffer.java(用来保存从串口所接收数据的缓冲区),ReadSerial.java(从串口读取数据的程序)。另外本类库还提供了一个例程SerialExample.java作为示范。在下面的内容中将逐一对这几个部分进行详细介绍。

1.SerialBean

SerialBean是本类库与其他应用程序的接口。该类库中定义了SerialBean的构造方法以及初始化串口,从串口读取数据,往串口写入数据以及关闭串口的函数。具体介绍如下:

publicSerialBean(intPortID)

本函数构造一个指向特定串口的SerialBean,该串口由参数PortID所指定。PortID=1表示COM1,PortID=2表示COM2,由此类推。

publicintInitialize()

本函数初始化所指定的串口并返回初始化结果。如果初始化成功返回1,否则返回-1。初始化的结果是该串口被SerialBean独占性使用,其参数被设置为9600,N,8,1。如果串口被成功初始化,则打开一个进程读取从串口传入的数据并将其保存在缓冲区中。

publicStringReadPort(intLength)

本函数从串口(缓冲区)中读取指定长度的一个字符串。参数Length指定所返回字符串的长度。

publicvoidWritePort(StringMsg)

本函数向串口发送一个字符串。参数Msg是需要发送的字符串。

publicvoidClosePort()

本函数停止串口检测进程并关闭串口。

SerialBean的源代码如下:

packageserial;

importjava.io.*;

importjava.util.*;

importjavax.comm.*;

/**

*

*Thisbeanprovidessomebasicfunctionstoimplementfulldulplex

*informationexchangethroughthesrialport.

*

*/

publicclassSerialBean

{

staticStringPortName;

CommPortIdentifierportId;

SerialPortserialPort;

staticOutputStreamout;

staticInputStreamin;

SerialBufferSB;

ReadSerialRT;

/**

*

*Constructor

*

*@paramPortIDtheIDoftheserialtobeused.1forCOM1,

*2forCOM2,etc.

*

*/

publicSerialBean(intPortID)

{

PortName="COM" PortID;

}

/**

*

*Thisfunctioninitializetheserialportforcommunication.Itstartsa

*threadwhichconsistentlymonitorstheserialport.Anysignalcaptured

*fromtheserialportisstoredintoabufferarea.

*

*/

publicintInitialize()

{

intInitSuccess=1;

intInitFail=-1;

try

{

portId=CommPortIdentifier.getPortIdentifier(PortName);

try

{

serialPort=(SerialPort)

portId.open("Serial_Communication",2000);

}catch(PortInUseExceptione)

{

returnInitFail;

}

//UseInputStreamintoreadfromtheserialport,andOutputStream

//outtowritetotheserialport.

try

{

in=serialPort.getInputStream();

out=serialPort.getOutputStream();

}catch(IOExceptione)

{

returnInitFail;

}

//Initializethecommunicationparametersto9600,8,1,none.

try

{

serialPort.setSerialPortParams(9600,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

}catch(UnsupportedCommOperationExceptione)

{

returnInitFail;

}

}catch(NoSuchPortExceptione)

{

returnInitFail;

}

//whensuccessfullyopentheserialport,createanewserialbuffer,

//thencreateathreadthatconsistentlyacceptsincomingsignalsfrom

//theserialport.Incomingsignalsarestoredintheserialbuffer.

SB=newSerialBuffer();

RT=newReadSerial(SB,in);

RT.start();

//returnsuccessinformation

returnInitSuccess;

}

/**

*

*Thisfunctionreturnsastringwithacertainlengthfromtheincoming

*messages.

*

*@paramLengthThelengthofthestringtobereturned.

*

*/

publicStringReadPort(intLength)

{

StringMsg;

Msg=SB.GetMsg(Length);

returnMsg;

}

/**

*

*Thisfunctionsendsamessagethroughtheserialport.

*

*@paramMsgThestringtobesent.

*

*/

publicvoidWritePort(StringMsg)

{

intc;

try

{

for(inti=0;i<Msg.length();i )

out.write(Msg.charAt(i));

}catch(IOExceptione){}

}

/**

*

*Thisfunctionclosestheserialportinuse.

*

*/

publicvoidClosePort()

{

RT.stop();

serialPort.close();

}

}

2.SerialBuffer

SerialBuffer是本类库中所定义的串口缓冲区,它定义了往该缓冲区中写入数据和从该缓冲区中读取数据所需要的函数。

publicsynchronizedStringGetMsg(intLength)

本函数从串口(缓冲区)中读取指定长度的一个字符串。参数Length指定所返回字符串的长度。

publicsynchronizedvoidPutChar(intc)

[1] [2]

深度强化学习 | 基于SAC算法的动态避障(ROS C++仿真) 本文介绍了基于SAC(软性演员-评论家)算法的机器人运动规划方法,通过PyTorch框架实现了端到端训练,并部署到Python和ROS C++中。实验结果显示,基于SAC算法的智能体在动态避障任务中表现良好,能实现从起点到终点的无碰撞导航。 阅读详情

相关推荐

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 460

上位机串口全双工实现

#include "StdAfx.h" #include "KSerial.h" #define SAFE_DELETE(p) {if(p) delete[]p;p=NULL;} KSerial::KSerial(void) { m_hCom=NULL; m_bOpenComm=FALSE; m_ComNo=0; m_bYibu=false; m_ReadTimeOut=1000/2; m_lpUser=NULL; //memset(m_RecvBuf,0,sizeof(m_RecvBu.

xinshuwei的博客 635

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 455

Java实现串口全双工通讯

 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。 本类库主要包括:SerialBean.java (与其他应用程序的接口), SerialBuffer.java (用来保存从串口

水之轮回 1560

LoFTR训练避坑指南:从零到一复现论文训练流程

本文是一份详细的LoFTR模型训练避坑指南,旨在帮助开发者从零开始复现论文训练流程。文章系统性地讲解了环境配置、数据准备、代码调试与显存优化等关键步骤,并针对常见的训练错误提供了解决方案,确保训练过程顺利进行。

weixin_29091837的博客 204

零基础学simulink仿真建模--基于Simulink进行农业机械用开关磁阻电机的仿真建模

特点结构简单:无电刷、换向器等易损件,维护成本低。坚固耐用:适合恶劣的工作环境,如农业机械作业现场。宽调速范围:通过适当的控制策略可以实现较宽的速度调节范围。挑战非线性特性:SRM的电磁特性和转矩特性具有高度非线性。复杂性:涉及电气、机械动力学以及控制系统的设计与集成。实时性要求:需要快速响应以适应不断变化的操作条件。多变量优化:包括电流控制、速度控制等多个方面需综合考虑。使用Simscape Electrical库来构建一个开关磁阻电机模型。

amy_mhd的博客 909

利用Java实现串口全双工通讯

本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。本类库主要包括:SerialBe

Jerome Kwok网络日志 756

宇树G1开发实践--PPT汇报(基础版)

本文介绍了一套基于宇树G1人形机器人的PPT自动演示系统,可实现"一键启动、自动演讲"功能。系统通过多线程同步技术,将音频播放与机器人动作完美结合,支持12种预设社交互动动作。硬件依赖宇树G1机器人、外接音响和网络连接,软件采用Python SDK和ALSA音频工具。核心功能包括音频文件自动排序、外接音响播放控制、机器人动作执行及音画同步。使用时需配置网络接口和音频设备号,运行后自动按顺序播放音频并执行随机动作。系统特别强调了安全注意事项,并提供了常见问题解决方案,适用于展会、汇报等需要

m0_47999117的博客 510

利用Java实现串口全双工通讯(转)

注意:单独运行BlackBox.java程序会出现:无法发现COM口的问题(no serial port),把配置文件javax.comm.properties拷贝到C:/Program Files/Java/j2re1.4.2_05/lib即可。Emaker用户注意:在用开发平台Emaker中做读COM口的功能,还是会提示:无法发现串口。解决办法:把comm.jar放到emaker/html

Emaker专栏 2032

【DRAM存储器三十五】LPDDR4介绍--主要技术特性之VREF training,为什么要做VREF training?

详述DDR4、LPDDR4需要做vref training的原因和训练过程

highman110的博客 2919

从数字后端角度谈谈occ电路(二)

从图中,我们可以清晰的看出,当scan_en为1时,test mode为1时,经过一系列逻辑单元后,得到clk_sel输出信号为1,同样可推算fast_clk_en = 0,slow_clk_en为1,此时clk_out输出为slow clk,符合我们预期。在该模式下,是使用slow clock进行scan shift,接着我们开始进行推导;从图中,我们根据逻辑运算可以看出,clk_sel输出信号为0,fast clk en为1,此时通过mux选择,clk out即为fast clk;

芯冰乐 361

利用java实现串口全双工通讯(转)

http://www.blogjava.net/djsl6071/articles/106529.html 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线 控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查 询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类 库,该类库大大的简化了对串口进行操作的过程

Skypine_Lee的专栏 1763

STM32G431的 FDCAN使用5M加速时,出现奇葩问题,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1641

JAVA高级:利用Java实现串口全双工通讯

 本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程  一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串口进行操作的过程。  本类库

kinglino520的专栏 477

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java 全双工串口,利用Java串口实现全双工通讯

利用Java串口实现全双工通讯 利用Java串口实现全双工通讯 软件.硬件.网络 2008-07-08 16:53:45 阅读25 评论1 字号:大中小 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。本文介绍了一个简单的通过串口实现全双工通讯的Java类库,该类库大大的简化了对串...

weixin_36343353的博客 171

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java中基于Rxtx的串口操作

欢迎大家访问我的博客:地址 感谢:java串口通信 一个嵌入式系统通常需要通过串口与其主控系统进行全双工通讯,譬如一个流水线控制系统需要不断的接受从主控系统发送来的查询和控制信息,并将执行结果或查询结果发送回主控系统。 本文是基于RXTX(提供串口和并口通信)开源类库对串口进行操作的。 使用准备(windows,rxtx-2.2) 1.将RXTXcomm.jar放到%jre_home%\...

小团团的专栏 1万+

利用Java进行串口通讯开发

http://www.nihaoblog.com/1_770.htmlJava串口通讯http://www-128.ibm.com/developerworks/cn/java/joy-comm/index.html利用Java实现串口全双工通讯http://www.gjwtech.com/serialcomm.htm串口通讯技术资料http://www.gjwtech.com/scomm/sc2

zgbsoap的专栏 1808

java rs232_利用Java实现串口全双工通讯For RS232

Install RS232 Driver For ubuntu对于Ubuntu而言,RS232串口通信驱动模块已经是源码编译安装了的,但是未必已经驱动了的,需要我们手工驱动。sudo modprobe usbserialsudo modprobe pl2303启动之后,我们可以查看系统加载驱动模块了没有,如下:➜ ~ lsmod | grep pl2303pl2303 ...

weixin_33417904的博客 548
上一篇: Java语言中链表和双向链表的实现-Java基础-Java-编程开发
下一篇: 跨越边界: Java 模型以外的类型策略-Java基础-Java-编程开发
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值