我正在使用 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) 我试过System.ServiceProcess.ServiceController System.Diagnostics.Process;
在我的Web表单中控制Windows服务.随着System.ServiceProcess.ServiceController我获得访问被拒绝的例外.
随着System.Diagnostics.Process我什么也没得到.如何使用我的网络表单启动/停止Windows服务,任何想法?
我目前正在使用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行像这些,并都在完全相同的数值BeginTime和EndTime.持续时间在相关表中从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 …