我最近开始学习python,还有一些我不太擅长并且不完全掌握的东西,尤其是面向对象的编程(oop)。我需要使用Phidget InterfaceKit 8/8/8为Phidgets温度传感器设备编写一个python程序。我查看了Phidgets的示例代码,但它对我没什么帮助。
这是示例Phidgets python代码的一部分。这些事件在程序的后面用作Phidgets类TemperatureSensor()的参数。 什么是最令人困惑的是' e。什么是' e'?它是否像是自我'或者是其他东西?什么是e.device(和 e。其他的话)意思/做什么?
如果有人有任何建议如何为Phidgets温度传感器编写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))
答案 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事件)。两种方式都可以。