通过串口发送数据

时间:2016-09-22 12:05:18

标签: java serial-port java-me

我试图将数据发送到我所拥有的设备的串行端口,并将设备序列连接到我的PC。在我的电脑中,我试图通过终端应用程序接收数据。设备使用J2ME,我用来连接到com端口的代码如下所示。

public boolean connect() {
    if (bConnected) {
        return true;
    } else {
        try {
            StringBuffer strCom = new StringBuffer(80);
            strCom.append("comm:" + strCOMPort
                    + ";blocking=on;autocts=off;autorts=off;stopbits=");
            //autocts=on;autorts=on;
            strCom.append(stopbits);
            strCom.append(";bitsperchar=");
            strCom.append(bitsperchar);
            //strCom.append(";parity=");
            //strCom.append(parity);
            strCom.append(";baudrate=");
            strCom.append(baudrate);

            commConn = (CommConnection) Connector.open(strCom.toString());
            writeStatusToFile(
                    "CommConnection(" + strCom.toString()
                            + ") with device opened.");
            strCom = null;
            inStream = commConn.openDataInputStream();
            outStream = commConn.openOutputStream();
            inStream.skip(inStream.available());
            bConnected = true;
            return true;
        } catch (Exception IOe) {
            writeStatusToFile(
                            "Opening COM0 IOException :" + IOe.getMessage());
            return false;
        }
    }
}

我在下面给出了将数据写入串口的代码。

public void sendData(short[] message){
    String bytedata = "";
    try
    {
        System.out.println("Length of message array: " +  message.length);
        for(int i = 0; i<message.length; i++){
            System.out.println("Data: " +message[i]);
            bytedata += message[i];
            outStream.write(message[i]);
            System.out.println("Done");
        }
    //outStream.write(message);
    outStream.flush();
    }
    catch(Exception ex)
    {
        System.out.println("Exception during sending bytes--->" + ex.toString());
        ex.printStackTrace();
    }
            System.out.println(
            "Data flushed to output stream: " + bytedata);
}

设备的COM设置为COM0,波特率为4800,奇偶校验为无,每字符8位和停止位为1(这些值是全局初始化的)。我在终端应用程序中设置了相同的内容,即我从COM端口接收数据。

我遇到的问题是,当我连接到串口时,我的PC没有收到任何内容。我想知道我是否在代码逻辑中犯了任何错误。欢迎任何有助于我分析问题的建议。如果需要任何其他信息,请说明。

1 个答案:

答案 0 :(得分:0)

这个问题与我的应用程序尝试访问的串口是RS232类型这一事实有关,这种类型的串口只允许线程访问端口,因此我看不到日志没有到显示器。 请注意,这不是一个解决方案,这是一个原因