How can I give higher priority to user-space signal which emits data by 
usig PySide Signal class over the interrupt which reads value from a sensor 
when edge is rising of beaglebone black(BBB) gpio. The sensor rate is set 
to 860, so in every second it reads 860 data, consequently changes the flow 
of the process 860 times, and when 860 data has been read from the sensor 
it takes average of that values and emits PySide Signal with data (we 
should not return values from interrupt handler function and they have to 
have really short execution time period, that is why I used Pyside's Signal 
class to emit signal with data). This signal emitted is connected to 
printWeight() data in the server-side, and expected to execute when signal 
is emitted. But since interrupt is generated 860 times per second cpu usage 
is not given to server-side. How can I handle this issue? my server.py is 
as follows

from bottle import       
redirect,get,post,request,response,template,run,route,Bottle,static_filefrom 
bottle.ext.websocket import GeventWebSocketServerfrom bottle.ext.websocket 
import websocketimport timeimport signal
from HardwareInterrupt import Hardwarefrom Signals import 
_Signal_DataArrivedimport signal

hardware = Nonedef printWeight(data):
    global hardware 
    print "data = ",data
#signal.signal(signal.SIGALRM,printWeight)
@route('/')def websocket():
    global hardware
    hardware = Hardware()
    hardware.setups()
    #hardware.startReadingValue()
    print "hardware..."

_Signal_DataArrived.run(printWeight)
run(host='0.0.0.0',port=8001,server=GeventWebSocketServer)

and HardwareInterrupt.py is like this

......
        def setups(self):
            #setting Gpio setups
            Gpio.setup("P9_24", Gpio.IN,pull_up_down=Gpio.PUD_DOWN)  
            Gpio.add_event_detect("P9_24", Gpio.RISING)               
            self.setupI2cSettings()
            
Gpio.add_event_callback(_SensorValueDetectedPin,self.readValueFromSensor)


         def readValueFromSensor(self,channel):
            if (self.count == 860):
                    result=self.total/self.count
                    weight = result * self.sensorValueToGramConverter
                    weight = 
self.doCalibration(weight,self.prev_weight)#currentVal)#,previousVal)
                    self.prev_weight = weight
                    print '%.2f' % (weight)
                    self.count = 0 
                    result = 0 
                    self.total = 0 
                    obj = {'weight':weight}
                    self._weight = weight
                    _Signal_DataArrived.emitIt(weight)
                    import time
                    time.sleep(0.1)
            self.count = self.count + 1    
            MSB, LSB = self.i2c.readList(0x00, 2)
            combined = (MSB << 8) | LSB # gelen verinin decimal hali
            self.total +=combined
 ....



-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to