- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
如何用 Java 语言向串口读写数据
串口 , RS-232-C(又称 EIA RS-232-C ,以下简称 RS232)是在 1970
年由美国电子工业协会 (EIA) 联合贝尔系统、调制解调器厂家及
计算机终端生产厂家共同制定的用于串行通讯的标准。 RS232 是
一个全双工的通讯协议,它可以同时进行数据接收和发送的工作。串口是计算机上一种非常通用设备通信的协议。以前,大多数计算机包含两个基于 RS232 的串口。串口同时也是仪器仪表
设备通用的通信协议 ;很多 GPIB 兼容的设备也带有 RS-232 口。
同时,串口通信协议也可以用于获取远程采集的数据。
串口通信的概念非常简单,串口 按位 (bit) 发送和接收字节 。尽管比按字节 (byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 它很简单并且能够实现远距离通信。比如 IEEE488 定义并行通行状态时, 规定设备线总常不得超过 20 米,并且任意两个设备间的长度不得超过 2 米;而对
于串口而言,长度可达 1200 米。
说到串口,也许很多人都要怀疑,这都什么年代了, USB
设备已经如此普及了, 谁还能想起这个老掉牙的通信端口呀?其实,在现实生活中,串口正因为它老,才会在实际使用中经常用到它。举个简单的例子: 工业制造及其设备与计算机之间的通讯、还有在各种电子工厂测试设备的过程中,都无一例外使用的串
口。因为它可以不用像 USB 设备一样必须有软件驱动的支持才可以进行工作。
.
.
Java对串口通信的支持
常见的 Java串口包
SUN 的 CommAPI 分别提供了对常用的 RS232 串行端口和 IEEE1284 并行端口通讯的支持。 目前,常见的 Java串口包有 SUN
1998 年发布的串口通信 API : comm2.0.jar(Windows 下 )、
comm3.0.jar(Linux/Solaris);IBM 的串口通信 API 以及一个开源的实现。鉴于在 Windows 下 SUN 的 API 比较常用以及 IBM 的实现和 SUN 的在 API 层面都是一样的,那个开源的实现又不像两
家大厂的产品那样让人放心, 这里就只介绍 SUN 的串口通信 API
Windows 平台下的使用。
串口包的安装 (Windows 下)
SUN 的网站下载 javacomm20-win32.zip ,包含的东西如下所示:
.
.
按照其使用说明 (Readme.html)的说法,要想使用串口包进行串口通信, 除了设置好环境变量之外, 还要将 win32com.dll 复制
\bin 目录下 ;将 comm.jar 复制到 \lib; 把 perties 也
同样拷贝到 \lib 目录下。然而在真正运行使用串口包的时候,仅
作这些是不够的。因为通常当运行“ java MyApp ”的时候,是由 JRE 下的虚拟机启动 MyApp 的。而我们只复制上述文件到 JDK
相应目录下, 所以应用程序将会提示找不到串口。 解决这个问题的方法很简单,我们只须将上面提到的文件放到 JRE 相应的目录下就可以了。
串口 API 介绍
m.CommPort
这是用于描述一个被底层系统支持的端口的抽象类。 它包含一些高层的 IO 控制方法,这些方法对于所有不同的通讯端口来说是通用的。 SerialPort 和 ParallelPort 都是它的子类,前者用于
控制串行端口而后者用于控这并口, 二者对于各自底层的物理端
口都有不同的控制方法。这里我们只关心 SerialPort。
m.CommPortIdentifier
.
.
这个类主要用于对串口进行管理和设置, 是对串口进行访问控制的核心类。主要包括以下方法
确定是否有可用的通信端口
IO 操作打开通信端口
决定端口的所有权
处理端口所有权的争用
管理端口所有权变化引发的事件 (Event) m.SerialPort
这个类用于描述一个 RS-232 串行通信端口的底层接口,它定义了串口通信所需的最小功能集。 通过它,用户可以直接对串口进行读、写及设置工作。
串口 API 实例
压缩包中除了 api,还包括了几个小例子,下面我们就一起看
.
.
一下串口包自带的例子 ---SerialDemo 中的一小段代码来加深对
串口 API 核心类的使用方法的认识。
列举出本机所有可用串口
void listPortChoices() {
CommPortIdentifier portId;
Enumeration en = CommPortIdentifier.getPortIdentifiers();
iterate through the ports. while (en.h
文档评论(0)