学了java和linux哪个好学 Java有什么用?

4371人阅读
Java基础(11)
Linux基础(40)
移动/嵌入式/其他(5)
费了好大的劲搞定Linux系统上用Java写串口通信的问题。
jdk中没有原生的串口api,网上找了半天的资料,大概知道了:Linux系统上用Java写串口程序,有两个包比较常用,一个是当年sun官方出的javacomm,但是找了半天都是老版本的居多,oracle官方不提供下载了,不爽。另一个是gnu的rxtx comm,看了一下还算靠谱,不过官方的wiki上()说linux版本的在卸载usb转串口线的时候会崩溃,顿时心头一颤。下载下来之后试了一下,确实可以用,系统里几个原生的串口都识别了,但唯独我的Arduino板子不识别。
捉急之时想到了Arduino IDE里面是有Serial Monitor的,而且也是用Java写的,于是去Arduino的安装目录里面找找,果然发现了在arduino安装目录下的lib目录下,有RXTXcomm.jar、librxtxSerial.so、librxtxSerial64.so这三个文件(我的Linux是64位的,不知道32位的是不是没有64.so这个文件),可以去Arduino官网上下载一个IDE,把这几个文件复制出来,按照rxtx wiki上说明使用,用法是一样的。
如果也是用的64位的系统,可以从这里下载:
如果要脱离eclipse单独执行串口通信程序,将RXTXcomm.jar文件复制到$JAVA_HOME/jre/lib/ext目录下,将librxtxSerial.so和librxtxSerial64.so复制到$JAVA_HOME/jre/lib/amd64/目录下(如果是32位系统应该是i386或者i686,而不是amd64)就OK了,官方wiki上描述的安装步骤很麻烦,做了一下不行。
下面是一个例程,是官方的wiki里例程的改进版【PS:以下代码在win7上用不了,不能用BufferedReader包装InputStream,不知道为啥,有知道原因的童鞋请告诉我】:
import mPortI
import gnu.io.SerialP
import java.io.BufferedR
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.OutputS
public class TwoWaySerialComm
public TwoWaySerialComm()
void connect ( String portName ) throws Exception
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
if ( portIdentifier.isCurrentlyOwned() )
System.out.println(&Error: Port is currently in use&);
CommPort commPort = portIdentifier.open(this.getClass().getName(),2000);
if ( commPort instanceof SerialPort )
SerialPort serialPort = (SerialPort) commP
serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
InputStream in = serialPort.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
BufferedReader r = new BufferedReader(reader);
(new Thread(new SerialReader(r))).start();
System.out.println(&Error: Only serial ports are handled by this example.&);
public static class SerialReader implements Runnable
public SerialReader ( BufferedReader in )
public void run ()
while ((line = in.readLine()) != null){
System.out.println(line);
catch ( IOException e )
e.printStackTrace();
public static class SerialWriter implements Runnable
public SerialWriter ( OutputStream out )
this.out =
public void run ()
int c = 0;
while ( ( c = System.in.read()) & -1 )
this.out.write(c);
catch ( IOException e )
e.printStackTrace();
static void listPorts()
@SuppressWarnings(&unchecked&)
java.util.Enumeration&CommPortIdentifier& portEnum = CommPortIdentifier.getPortIdentifiers();
while ( portEnum.hasMoreElements() )
CommPortIdentifier portIdentifier = portEnum.nextElement();
System.out.println(portIdentifier.getName()
getPortTypeName(portIdentifier.getPortType()) );
static String getPortTypeName ( int portType )
switch ( portType )
case CommPortIdentifier.PORT_I2C:
return &I2C&;
case CommPortIdentifier.PORT_PARALLEL:
return &Parallel&;
case CommPortIdentifier.PORT_RAW:
return &Raw&;
case CommPortIdentifier.PORT_RS485:
return &RS485&;
case CommPortIdentifier.PORT_SERIAL:
return &Serial&;
return &unknown type&;
public static void main ( String[] args )
listPorts();
(new TwoWaySerialComm()).connect(&/dev/ttyACM0&);
catch ( Exception e )
e.printStackTrace();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:494764次
积分:5445
积分:5445
排名:第2890名
原创:127篇
评论:130条
(4)(1)(3)(1)(1)(1)(1)(4)(3)(10)(5)(6)(11)(7)(6)(2)(1)(4)(2)(4)(5)(15)(3)(8)(12)(7)(6)(1)(3)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&java程序员有必要学习Linux么?
[问题点数:40分,结帖人u]
java程序员有必要学习Linux么?
[问题点数:40分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年10月 Java大版内专家分月排行榜第二2013年3月 Java大版内专家分月排行榜第二2013年2月 Java大版内专家分月排行榜第二
2013年7月 Java大版内专家分月排行榜第三2013年5月 Java大版内专家分月排行榜第三2013年4月 Java大版内专家分月排行榜第三
2013年5月 挨踢职涯大版内专家分月排行榜第二
2013年9月 Java大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。大家说说学JAVAEE的学生有必要学LINUX学了会有什么好处对⒗淳鸵-Java/JavaEE-java-电脑编程网大家说说学JAVAEE的学生有必要学LINUX学了会有什么好处对⒗淳鸵-Java/JavaEE作者:gsl 和相关&&贴子 内容不能为空------回答---------------其他回答(2分)---------有些公司是把作为开发、测试的操作系统的。因此当楼主和一个技术水平差不多的人同时去面试时,人家会就会比你胜算大些。------其他回答(2分)---------我本人就遇到过类似的情况,面试时人家问到linux和用过么,我说没用过,就直接没戏了。其实linux和就那么回事儿,即使不打算深究,也很有必要了解一下,入个门。当然了,深究起来这两玩意儿可真够有深度的!------其他回答(2分)---------那个用来测试
等------其他回答(2分)--------- 开发一般会在 Windows 平台上进行,不过是部署在 Linux 系统上的。几乎没有人会直接在 Linux 上进行开发,毕竟 Windows 用起来顺手嘛。掌握及了解 Linux 常用的命令,以及
脚本,vi/vim 的使用等等,这些都是非常有必要的。------其他回答(2分)---------了解相关命令,以及VI命令等操作,即可~这个环境一般不是用来开发的。测试居多~------其他回答(2分)---------那学的,还应该学点别的什么啊------其他回答(2分)---------linux会肯定有好处,至少会常见的命令------其他回答(2分)---------vi和相关编辑命令我也不太会,通常用editplus搞个远程ftp连接直接改,呵呵。常用的是tail -f ~命令看日志。------其他回答(2分)---------多懂点起码没害处。一次面试,我说我在Linux有多长时间的开发经验,面试官一个劲儿的问一些Linux管理方面的问题,比如如何设置ip(只知道一个ifconfig命令,但不会用),配置路由表等。我很郁闷的强调了好多次,我是做开发的,这些东西我都没接触过。最后只能无奈了。------其他回答(2分)---------学了是有益无害的.!
有精力就学吧相关资料:|||||||大家说说学JAVAEE的学生有必要学LINUX学了会有什么好处对⒗淳鸵-Java/JavaEE来源网络,如有侵权请告知,即处理!编程Tags:                &                    上一篇 话里话外:流程梳理:流程E化的必经之路 下一篇
话里话外:简单看流程

我要回帖

更多关于 java开发用什么linux 的文章

 

随机推荐