我最近才开始学习python,仍然有一些东西我不太擅长,也没有完全掌握,特别是面向对象编程(oop)。我需要使用Phidget InterfaceKit 8/8/8为Phidgets温度传感器设备编写一个python程序。我查看了Phidgets的示例代码,但它对我帮助不大。
这是示例Phidgets python代码的一部分。这些事件稍后将在程序中用作Phidgets类TemperatureSensor()的参数。最让人困惑的是“e”。“e”是什么?是像“self”还是别的什么?e.device (和e.other words)是什么意思?
此外,如果任何人有任何建议,如何编写一个python代码的Phidgets温度传感器,我将非常感谢。
#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))
发布于 2015-07-02 23:30:45
e
变量作为参数传递给事件处理程序。它是一个事件对象,包含有关事件的信息。
事件处理程序通常用于异步编程。它使得编写对外部变化做出反应的程序成为可能,例如用户单击按钮或传感器读数变化。大多数情况下,您不需要处理所有可能的事件。相反,您可以编写一个事件处理程序并将其注册到事件源。在您的例子中,事件源是一个设备,并且事件处理程序是使用device.setOnAttachHandler(AttachHandler)
之类的调用注册的。
例如,当传感器读数更新时(或定期更新),就会触发TemperatureSensorTemperatureChanged
。
e.something
只是传递给事件处理程序的与事件相关的数据。看起来e.temperature
可能会很有用。
看起来你走上了正确的道路,你正在阅读示例代码和文档,所以你会弄清楚的:)
发布于 2019-01-14 14:00:51
此代码用于Humidity+Temperature传感器,因此没有在更简单的仅温度传感器上进行测试。此外,它是用较新的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事件)。这两种方式都有效。
https://stackoverflow.com/questions/31188277
复制相似问题