远地点USB传感器和Linux

远地点USB传感器可以直接连接到计算机(Windows或macOS X)上,以便使用包括软件.Apogee目前没有带Linux系统的传感器的软件;但是,虽然我们没有设计自定义程序,我们可以提供一组命令,示例代码和来自ApogeeConnect的开发人员的评论,这应该有助于为获取您自己的程序使用Apogee USB传感器提供良好的基础(SP-420型,SQ-420,SQ-520型等)。此信息复制如下:

命令

传输的字节

退换商品

获取电压 55 21 5 [cmd +四个字节浮点数]
读取校准 83 21

9[cmd+四字节浮点乘法器+四字节浮点偏移]

设置校准 84 XX XX XX YY YY YY YY 21(X=4字节浮点乘法器,Y=4字节浮点偏移) 9[同上]
读取序列号 87 21

5 [cmd +四个字节浮点数]

get_logging_interval. 21层

9[cmd+logging interval+sample interval]所有浮点

获取\u日志\u计数 f3 21层

5 [cmd +条目数]四字节整数

获取\u日志\u条目 f2 XX XX XX XX 21(X=4字节长的整数)

5 [cmd +四个字节浮点数]

set_logging_interval. f0 XX XX XX YY YY YY YY 21(X=4字节浮点记录间隔,Y=4字节浮点采样间隔

8[cmd+接收的日志间隔+3个虚拟字节]

删除\u记录的\u数据 f4 21层 4[cmd+3虚拟字节]

有许多关于如何将十六进制数转换成浮点数的在线资源。这里有一个链接,上面有其他使用c的程序员的一些建议#https://protect-eu.mimecast.com/s/pokJCZzGOF7xBKtNSk8F?域=url9639。waterbearenergy.com.

来自远地点USB传感器的响应总是以little endian格式发送,这意味着先发送最低有效字节。

下面是一个超级基本的python类,类似于ApogeeConnect软件中使用的类。在代码中,您可以看到如何读取校准数据以及如何使用它将电压转换为可用数据的示例。这段代码是为量子传感器编写的,但对日射强度计和UV-USB传感器的工作方式相同。ApogeeConnect的开发人员发现python非常容易与这些传感器一起使用。如果使用python,如果还没有Pyserial库,则需要安装它。这段代码旨在使用python2.7在Windows上工作。对于其他操作系统和/或python3,可能需要进行一些修改。

*请注意:此代码在没有测试的情况下一起抛出,因此它可能会或可能不需要一些调试。

来自串行导入串行

从时间导入睡眠

导入结构

获取\u VOLT='\x55!'

读取校准='\x83!'

设置\u CALIBRATION='\x84%s%s!'

读取\u SERIAL \u NUM='\x87!'

GET\u LOGGING\u COUNT='\xf3!'

GET\u LOGGED\u ENTRY='\xf2%s!'

删除\u记录的\u数据='\xf4!'

类(对象):

定义初始化(self):

“”“初始化类变量,并尝试连接到设备”“”

自量子=无

自补偿= 0.0

自身倍增器= 0.0

self.connect\到\设备()

def连接到设备(自身):

“”“此函数创建与定义的upport的串行连接

并尝试阅读校准值“”“

port ='com1'#您必须检查您的设备管理器并将实际的COM端口放在此处

自量子=串行(端口,115200,超时=0.5)

尝试:

self.quantum.write(read_calibration)

乘数=self.quantum.read读取(5)[1:]

偏移量=self.quantum.read读取(4)

自身倍增器= 结构解包('

自补偿= 结构解包('

除了(IoError,Struct.Error),数据:

打印数据

自量子=无

def get\ U微摩尔(自身):

“”“此功能将电压转换为微摩尔”“”

电压=自测电压()

如果电压==9999:

#如果你想的话,你可以在这里提出一些例外

返回

#下一行将伏特转换成微摩尔

微摩尔=(电压-自补偿) * 自身倍增器* 1000

如果微摩尔<0:

Micromoles = 0.

返回微孔

def read\ U电压(自身):

“”“此函数在1秒内平均5个读数,并返回

结果是

如果自量子==无:

尝试:

self.connect\到\设备()

除了IOError:

#如果需要的话,你可以在这里提出一些例外

返回

#将响应存储在平均值

响应列表=[]

#更改为给定时间段内多个或少个样本的平均值

number_to_average = 5.

#更改以缩短或延长每次测量的持续时间

#务必留下浮点以避免截断

秒数=1.0

对于范围内的i(数字到平均值):

尝试:

self.quantum.write文件(获得电压)

响应=self.quantum.read读取(5)[1:]

除IOError外,数据:

打印数据

#知道出了问题的虚幻价值。可能会引起

#这里也有例外

返回9999

别的:

如果没有响应:

持续

#如果响应不是4字节长,则此行将引发

#例外

电压=结构解包('

回应_列表.append(电压)

睡眠(秒数/平均数)

如果响应列表:

返回sum(response\u list)/len(response\u list)

返回0.0

**请注意:Apogee不提供自定义程序的技术支持。