Code Monkey home page Code Monkey logo

Comments (3)

savageautomate avatar savageautomate commented on July 19, 2024

Hi John,

What does the serial receive code look like?

If you are using the "SerialDataEvent" to receive, please note that Pi4J does not do anything to ensure that events are triggered on line breaks. Pi4J simply has a thread that monitors the receive data buffer on a regular interval. If any data is detected, an event is created and the inbound data buffer is emptied. This could very likely happen in the middle of a line.

Thanks, Robert

from pi4j-v1.

johngamarra avatar johngamarra commented on July 19, 2024

Hi Robert, code is simple:

@Override
public void dataReceived(SerialDataEvent event) {
        Logger.info("Datos: " + event.getData());}

I'm gonna do more test with the arduino, but I tested it in the past and no jump-line was present... using RS232 debugger.

log file looks like this

2013-02-24 22:46:15 [Thread-4] com.oc.listener.SensorListener.dataReceived()INFO: Datos: Temp:26.19,PH:7.00
2013-02-24 22:46:26 [Thread-4] com.oc.listener.SensorListener.dataReceived()INFO: Datos: Temp:26.
2013-02-24 22:46:26 [Thread-4] com.oc.listener.SensorListener.dataReceived()INFO: Datos: 13,PH:7.00
2013-02-24 22:46:38 [Thread-4] com.oc.listener.SensorListener.dataReceived()INFO: Datos: Temp:26.13,PH:7.00

So, the SerialDataEvent see it like to diferent events, but it's the same event, it just split it in two... coincidentally in the period char (always).

Also notice I've tried rising the time between data send (1 minute), and is still present...

If someone can test something similar, It would really help. I'm thinking my pi serial pins could be broken or something....

John.

from pi4j-v1.

savageautomate avatar savageautomate commented on July 19, 2024

Hi John,

I believe this is working as designed. Meaning that we don't control when serial data becomes available, we just have a timer thread running in the background that checks the serial data buffer at a fixed interval. If any data is available, it is pulled from the buffer and an event is created. There is no guarantee that is won't split data across multiple events. Serial data streams in and is not "packetized" or framed at the data layer.

What might be nice is adding feature to look for a particular data character in the data buffer before raising the event, thus providing the user a more controlled/framed data set in the event.

from pi4j-v1.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.