首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从COM-PORT检索arudino传感器数据并将其保存在文本文件中?

如何从COM-PORT检索arudino传感器数据并将其保存在文本文件中?
EN

Stack Overflow用户
提问于 2021-01-09 11:21:02
回答 1查看 38关注 0票数 0

我必须使用jSerialComm-API通过我的COM端口获取我的arduino传感器数据。

这是我的传感器类,它在我的eclipse终端上显示传感器数据.现在,我想使用该方法(extractDataFromCOM())向其他类提供传感器数据。

代码语言:javascript
复制
import com.fazecast.jSerialComm.*;

public class Sensor {
    public void connect() {
        SerialPort comPort = SerialPort.getCommPorts()[0];
        comPort.openPort();
        comPort.addDataListener(new SerialPortDataListener() {
            public int getListeningEvents() {
                return SerialPort.LISTENING_EVENT_DATA_RECEIVED;
            }

            public void serialEvent(SerialPortEvent event) {
                byte[] newData = event.getReceivedData();
                for (int i = 0; i < newData.length; ++i)
                    System.out.print((char)newData[i]); //Terminal output
            }
        });
    }

    public String extractDataFromCOM(String data) {
        //? ? ?
        return data;
    }
}

在TextDatabase.java类中,我希望调用方法(Sensor.extractDataFromCOM())检索数据,然后将其存储在文本文件中:

代码语言:javascript
复制
public class TextDatabase {
    public static void main(String[] args) throws IOException {
        Sensor s1 = new Sensor();
        //endless loop to get flow of sensor data?
        while (true) {
            String mydata = s1.extractDataFromCOM(); 
            
            //store it in a database or textfile: 
            FileWriter fw = new FileWriter("mydata.txt", true);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(mydata);
            //(...)
        }
    }
}

问题:如何访问类“TextDatabase”中的“传感器”并检索传感器数据以将其存储在文本文件中?

EN

回答 1

Stack Overflow用户

发布于 2021-01-09 13:20:46

将SerialPortEvent中的数据放到serialEvent方法中的类变量中。然后通过extractDataFromCOM将其传递给外部

代码语言:javascript
复制
    public class Sensor {

    final Queue<byte[]> data = new PriorityQueue<byte[]>();
    
    public void connect() {
        SerialPort comPort = SerialPort.getCommPorts()[0];
        comPort.openPort();
        comPort.addDataListener(new SerialPortDataListener() {
            public int getListeningEvents() {
                return SerialPort.LISTENING_EVENT_DATA_RECEIVED;
            }

            public void serialEvent(SerialPortEvent event) {
                byte[] newData = event.getReceivedData();
                data.offer(newData);
            }
        });
    }

    public byte[] extractDataFromCOM() {
        //? ? ?
        //convert to String if required
        return data.poll();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65642021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档