小编Ali*_*zun的帖子

如何在python中使用pygatt从BLE设备获取通知?

我正在使用 python 开发一个 Linux 应用程序,它将连接到我的 BLE 设备并通过通知特性获取数据。我正在使用pygatt进行 BLE 通信。我可以成功连接并绑定到设备并读取/写入特性。即使我可以订阅通知特性,但问题是,我的 BLE 设备是一台定制机器,里面有 4 个计数器,每次计数器的数据发生变化时,它都会设置相应的通知标志,因此,使用 onDataChanged-像我可以从读取特性中读取计数器数据的方法。在使用 pygatt 的 Python 中,我可以订阅通知特性:

class_name.device.subscribe(uuid.UUID(notify_characteristic),callback=notifyBle)
Run Code Online (Sandbox Code Playgroud)

和 notifyBle 是:

def notifyBle(self,handle,data):
    read_data = class_name.device.char_read(uuid.UUID(read_characteristic))
    print(read_data)
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,首先我扫描设备并连接到我的设备并与之绑定,然后我发现特征并列出它们。一切顺利。列出特性后,我写写特性来清除通知标志,它也成功了。最后我订阅通知特性它是成功的。

在所有这些过程之后,我物理地增加了我的设备的计数器(设备上有用于增加计数器的按钮)。当我按下按钮程序转到notifyBle方法时,它给出了错误,即:

Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 137, in run
    event["callback"](event)
  File "/usr/local/lib/python3.5/dist-packages/pygatt/backends/gatttool/gatttool.py", line 479, in _handle_notification_string
    self._connected_device.receive_notification(handle, values)
  File "/usr/local/lib/python3.5/dist-packages/pygatt/device.py", line 226, in receive_notification
    callback(handle, value)
  File "/home/acd/Masaüstü/python_workspace/ble.py", line 54, in notifyBle
    read_data = bleFunctions.dev.char_read(uuid.UUID(bleFunctions.read_characteristic)) …
Run Code Online (Sandbox Code Playgroud)

python python-3.x bluez

8
推荐指数
1
解决办法
9659
查看次数

如何在C#mvc中停止或启动Windows服务?

我试过System.ServiceProcess.ServiceController System.Diagnostics.Process;

在我的Web表单中控制Windows服务.随着System.ServiceProcess.ServiceController我获得访问被拒绝的例外.

随着System.Diagnostics.Process我什么也没得到.如何使用我的网络表单启动/停止Windows服务,任何想法?

c# asp.net-mvc servicecontroller

7
推荐指数
2
解决办法
4535
查看次数

在带有OFFSET的Sql Server 2014 ORDER BY子句中,FETCH NEXT返回奇怪的结果

我目前正在使用Sql Server 2014 Professional,当前版本是(12.0.4100).我有一个视图,我试图选择具有特定偏移量的10行.
我的观点如下:

    BeginTime   |     EndTime    | Duration |   Name   
09:00:00.0000000|16:00:00.0000000|    1     | some_name1
09:00:00.0000000|16:00:00.0000000|    2     | some_name2
09:00:00.0000000|16:00:00.0000000|    3     | some_name3
09:00:00.0000000|16:00:00.0000000|    4     | some_name4
09:00:00.0000000|16:00:00.0000000|    5     | some_name5
09:00:00.0000000|16:00:00.0000000|    6     | some_name6
09:00:00.0000000|16:00:00.0000000|    7     | some_name7
Run Code Online (Sandbox Code Playgroud)

有100行像这些,并都在完全相同的数值BeginTimeEndTime.持续时间在相关表中从1增加到100.
如果查询只是:

SELECT * FROM View_Name
Run Code Online (Sandbox Code Playgroud)

ResultSet是正确的.我可以通过检查持续时间列来理解它.

如果我想从0开始只获取10行,则ResultSet是正确的,从最多18开始是正确的.当我想从19或19以上获取10行时,ResultSet中的持续时间返回不相关的结果,如持续时间反转.但它永远不会返回持续时间超过11的行.我用来获取特定行的查询如下:

SELECT * FROM View_Name ORDER BY BeginTime ASC OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

在这种情况下也有一些奇怪的事情; 如果我指定USE master,此问题将消失,但是,如果我指定USE [mydb_name],问题将再次出现.
顺便说一下,我在我的本地电脑上使用SQL SERVER 2014 Professional …

sql sql-server

6
推荐指数
2
解决办法
3879
查看次数