Skip to content

onSerialBuffer is blocking #23

@stephanschulz

Description

@stephanschulz

I am noticing that when ever I receive a serial signal from my Arduino in

void onSerialBuffer(const ofxIO::SerialBufferEventArgs& args){
}

My app freezes for a split second.

Is there a way to make this event non-blocking?

Thanks for any advice.

Here the whole function:

   void onSerialBuffer(const ofxIO::SerialBufferEventArgs& args){
        // Buffers will show up here when the marker character is found.
        ofLog()<<"serial args.buffer() "<<args.buffer();
        vector<string> splitStr = ofSplitString(args.buffer().toString(), ":");
        
        if(splitStr[0] == "s"){
            //states
            ofLog()<<"serial state:"<<splitStr[1] <<" splitStr[2] "<<splitStr[2];
            if(ofIsStringInString(splitStr[1], "upper")){
                
                upperSwitchState_str = splitStr[2];
                if(splitStr[2] == "ON"){
                    upperSwitchState = true; 
                } else {
                    upperSwitchState = false;
                }
            } else if(ofIsStringInString(splitStr[1], "lower")){
                lowerSwitchState_str = splitStr[2];
                
                if(splitStr[2] == "ON"){
                    lowSwitchState = true; 
                } else {
                    lowSwitchState = false;
                }
                
            }
            
        } else if(splitStr[0] == "i"){
            //info
            ofLog()<<"serial info:"<<splitStr[1];
            
        } else if(splitStr[0] == "a"){
            //alive
            aliveTimer = ofGetElapsedTimef();
            aliveCounter = ofToInt(splitStr[1]);
        } else {
            
        }
        
        
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions