Phidg​​ets温度传感器使用python代码

时间:2015-07-02 15:07:28

标签: python

我最近开始学习python,还有一些我不太擅长并且不完全掌握的东西,尤其是面向对象的编程(oop)。我需要使用Phidg​​et InterfaceKit 8/8/8为Phidg​​ets温度传感器设备编写一个python程序。我查看了Phidg​​ets的示例代码,但它对我没什么帮助。

这是示例Phidg​​ets python代码的一部分。这些事件在程序的后面用作Phidg​​ets类TemperatureSensor()的参数。 什么是最令人困惑的是' e。什么是' e'?它是否像是自我'或者是其他东西?什么是e.device(和 e。其他的话)意思/做什么?

如果有人有任何建议如何为Phidg​​ets温度传感器编写python代码,我将非常感激。

#Event Handler Callback Functions  
def TemperatureSensorAttached(e):  
    attached = e.device
    print("TemperatureSensor %i Attached!" % (attached.getSerialNum()))

def TemperatureSensorDetached(e):
    detached = e.device
    print("TemperatureSensor %i Detached!" % (detached.getSerialNum()))

def TemperatureSensorError(e):
    try:
        source = e.device
        if source.isAttached():
            print("TemperatureSensor %i: Phidget Error %i: %s" %        (source.getSerialNum(), e.eCode, e.description))
    except PhidgetException as e:
        print("Phidget Exception %i: %s" % (e.code, e.details))

def TemperatureSensorTemperatureChanged(e):
    try:
        ambient = temperatureSensor.getAmbientTemperature() 
    except PhidgetException as e:                                 
        print("Phidget Exception %i: %s" % (e.code, e.details))
        ambient = 0.00

    source = e.device
    print("TemperatureSensor %i: Ambient Temp: %f -- Thermocouple %i     temperature: %f -- Potential: %f" % (source.getSerialNum(), ambient, e.index, e.temperature, e.potential))

2 个答案:

答案 0 :(得分:0)

e变量作为参数传递给事件处理程序。它是一个事件对象,包含有关事件的信息。

事件处理程序通常用于异步编程。它可以编写对外部变化做出反应的程序,例如用户点击按钮或传感器读数变化。大多数情况下,您不需要处理所有可能的事件。相反,您使用事件源编写事件处理程序并注册它。在您的情况下,事件源是一个设备,事件处理程序使用device.setOnAttachHandler(AttachHandler)等调用进行注册。

例如,当传感器读数更新时(或定期更新),会触发TemperatureSensorTemperatureChanged

e.something只是与事件相关的数据,传递给事件处理程序。似乎e.temperature可能有用。

您似乎正走在正确的轨道上,您正在阅读示例代码和文档,以便您明白:)

答案 1 :(得分:0)

该代码适用于湿度+温度传感器,因此未在更简单的仅温度传感器上进行测试。而且,它是用更新的phidget22制成的。希望对您有所帮助:

# -*- coding: utf-8 -*-
from Phidget22.Devices.TemperatureSensor import *
from Phidget22.Net import *

TempArray = []
i = 0

while 1:
    ct = TemperatureSensor()
    try:
        ct.openWaitForAttachment(500)
    except PhidgetException as error:
        break
    TempArray.append(ct)

for i in TempArray:
     print("Serial: %s Temperature: %0.2f°C" % (i.getDeviceSerialNumber(),   i.getTemperature()))
i.close()

如上所述,您代码中的e是事件的句柄。我使用了一种稍微不同的方法作为温度传感器对象的实例(仅使用attach事件)。两种方式都可以。