2016-09-22 87 views
2

我试图将数据发送到串口,并将串口设备连接到我的电脑。在我的个人电脑中,我试图通过终端应用程序接收数据。该设备使用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(这些值被初始化globaly)。我在终端应用程序中设置了相同的功能,以便从COM端口接收数据。

我面对的问题是,当我连接到串行端口时,我没有在PC中接收任何东西。我想知道我是否在代码逻辑中犯了错误。任何可以帮助我分析问题的建议都是值得欢迎的。如果需要其他信息,请说明。

回答

0

此问题与我的应用程序试图访问的串行端口是RS232类型有关,并且此类型的串行端口只允许线程访问端口,并且由于看不到日志并伴随着显示。 请注意,这不是一个解决方案,这是一个原因