【问题标题】:I want to detect the device through serial port using RxTx in java我想在java中使用RxTx通过串口检测设备
【发布时间】:2026-02-17 06:15:02
【问题描述】:

我想在java中使用RxTx通过串行端口检测设备,并且设备被编程为如果它从计算机接收到特定单词,它将回复“ok”,如果计算机接收到ok..它将停止发送该单词并且突出显示设备已连接。请帮我。还有一件事..我必须检查每个端口..请您编写一种自动循环通过端口直到检测到设备的方法。 我的代码即使在无限循环中也只发送一次单词。 代码:

private void cb1KeyPressed(java.awt.event.KeyEvent evt) {                               
    // TODO add your handling code here:
    try{
    l1.setText("Port: "+cb1.getSelectedItem().toString()+" is Selected");
    selectedPort = cb1.getSelectedItem().toString();// TODO add your handling code here
    rs.connect(selectedPort);
    for(;;)
    {
        CommPortSender.send(new ProtocolImpl().getMessage("KITM"));//send message
        if(pi.rmess().equalsIgnoreCase("OK"))//received message
        {
            l1.setText("The Device is attached to: "+selectedPort);
            CommPortSender.send(new ProtocolImpl().getMessage("OK ACK"));//send message
            break;
        }
        else
        {
            rs.disconnect(selectedPort);
            continue;
        }
    }
    }
    catch(Exception e){}   

}

【问题讨论】:

    标签: java rxtx


    【解决方案1】:
     static void listPorts()
        {
            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";
                default:
                    return "unknown type";
            }
        }
    

    5 分钟的谷歌搜索可能会告诉你同样的事情。

    【讨论】:

    • ghostbust555> 嘿,谢谢哥们的努力.. 但这不是我想要的.. 这是任何人都可以做的最简单的事情.. 请您再次查看我的问题 :)
    最近更新 更多