您的位置:首页 > 编程语言 > Java开发

JAVA串口读写小结

2013-07-03 11:44 211 查看
7月1号到公司报到了~直接给我一个发射器(tag)和接收器(USB口),让我从COM端口读取数据。

没弄过,一头雾水。但是吧,网友的力量是强大的,我要做的功能很简单,所以网上的一些介绍完全够了。

        要求:

             用JAVA 从COM口读取数据,并保存在本地,保证收包率。(COM端口的数据读取,网上用的源码,稍微改写一些就ok了)

            

问题:首先是javax的Comm包配置的问题,包里的文件不知道放哪里。会出现好像叫nosuchportException的错误,找了好多配置方案,暂时都没有实现(应用要求也没

那么多,实现就可以,所以没细细的搞)

在网上搜到一个好方法,直接把类导入工程里,代码如下:

 String   driverName   =   "com.sun.comm.Win32Driver";
   CommDriver   driver   =   null;

   try   {
     System.loadLibrary("win32com");
       driver   =   (CommDriver)   Class.forName(driverName).newInstance();
     driver.initialize();
   }   catch   (InstantiationException   e1)   {
    System.out.println(e1);
     

   }   catch   (IllegalAccessException   e1)   {
    System.out.println(e1);
     
   }   catch   (ClassNotFoundException   e1)   {
    System.out.println(e1);
    
   }

ok了,问题没有了。然后正常读取数据。

一开始以为while循环一直读,总不会丢包吧,但是天不遂人愿啊!T_T

然后以为是读入的数据保存的缓存(接受数组)不够,然后用了缓存池(二位数组、循环队列之类的),还是不行啊!

然后网上看到,用多线程什么的,一个线程读,一个线程写。对于菜鸟,线程哪里学过啊(虽然用过一点源码,也不是很难上手)!但是哪里高兴去搞,好在,那个网友指

出,用线程实现会有延迟的问题。所以果断放弃!

然后那个网友又提到,直接去掉线程之类的东西,我大概知道他是什么意思,就是不要多余的缓存,线程之类的,我直接全部保存起来,不用中介。大概是这么个印象。我

想想,和直接while(true)读取,然后保存有神马区别呢?

于是我考虑,我不写,然后全部保存在内存怎么样呢?结果不错,内存里的数据没有丢失的现象。然后,我就每隔一段时间把内存写入磁盘,然后在保存。差多都就解决了。

细节,接下来再弄弄,应该ok~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  COM JAVA