玻璃心orz 2015-05-27 02:47 采纳率: 0%
浏览 4831

Java通过得到的Socket流向串口发送数据

我是一个菜鸟,最近学习Java ,写了个向串口发送数据的代码,有点问题,希望各位大神给指点指点

 package server;

import gnu.io.CommPortIdentifier;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import gnu.io.UnsupportedCommOperationException;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.TooManyListenersException;

import javax.lang.model.element.Parameterizable;

import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;

public class server extends Thread implements SerialPortEventListener  {

    static Enumeration portList;    //已经连接上的端口枚举
    static CommPortIdentifier portId;  //串口通信管理类
    static SerialPort serialPort;        //串口的引用
    static OutputStream outputStream;
    static InputStream ins;
    static int count = 0;

    @SuppressWarnings("null")
    public static void main(String[] args) throws IOException {

        final ServerSocket s = new ServerSocket(12345);
        InetAddress addr = InetAddress.getLocalHost();
        System.out.println("Ip地址为:"+addr.getHostAddress());

        SerialPort port = PortsManager.getSerilPort("COM3", 2400);
        if(null==port) {
            System.out.println("串口为空!");
            return;
        }
        try {
            port.setSerialPortParams(2400,SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,SerialPort.PARITY_SPACE);
        } catch (UnsupportedCommOperationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        OutputStream outs = port.getOutputStream();
        Socket ss = s.accept();
        InputStream ins = ss.getInputStream();
        byte[] b = new byte[8];
        int len = -1;
        while((len = ins.read(b))!= -1){
            count++;
            System.out.println("Socket 连接成功!");
            System.out.println(b.toString());
            if(count>2){  
                outs.write(b);  
            }  

        }

     }

     public void run(){
         Thread th=new Thread();
         th.start();
         try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     }

    //@Override
    public void serialEvent(SerialPortEvent arg0) {
         //TODO Auto-generated method stub
        try {
            serialPort.addEventListener(this);//注册一个SerialPortEventListener事件来监听串口事件
            serialPort.notifyOnDataAvailable(true);//设置监听模式为当有数据到达时唤醒监听线程。
        } catch (TooManyListenersException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}



  • 写回答

1条回答

  • poison_曾 2015-05-27 05:01
    关注

    问题出在哪里都不说,怎么回答?

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考