小编Zim*_*ano的帖子

prolog - 打印变量的值

我只是无法弄清楚如何打印的价值X.这是我在顶级尝试的内容:

59 ?- read(X).
|: 2.
X = 2.

60 ?- write(X).
_G253
true.
Run Code Online (Sandbox Code Playgroud)

什么是_G253?我不想索引号,我想要X值绑定.我该怎么做才能打印出价值X

variables prolog return-value

14
推荐指数
1
解决办法
2万
查看次数

uint128_t没有命名类型

我正在将一些代码从C转移到C++.在转换期间我遇到了:

uint128_t 没有命名类型

我的编译器:gcc版本5.2.1
我的操作系统:Ubuntu 15.1

这个编译好的C和我认为它将通过包括解决,stdint.h但它没有.到目前为止,我没有尝试过其他任何事情,因为似乎没有关于此错误的大量信息(示例).uint128_t在整个程序中使用并且对于构建是必不可少的,因此我无法删除它,并且我不确定使用不同的整数类型.

以下是使用位置和方式的示例.

union {
    uint16_t  u16;
    uint32_t  u32;
    uint128_t u128;
} value;
Run Code Online (Sandbox Code Playgroud)

是否可以定义uint128_t或者我应该查看我的编译器?

c c++ types integer

12
推荐指数
2
解决办法
3万
查看次数

Android:自动重新连接BLE设备

我的目标是让Android设备重新连接到之前连接的BLE设备而无需用户干预,就像它对经典BT配对设备一样(甚至可以通过电源循环工作).

BTLE设备的一个想法是节省服务,绑定和启用状态,使得重新连接非常快并且在外围设备上消耗非常少的功率.

我所做的似乎有效,但效果不佳.

第一步是连接或配对并连接到新设备,将'autoconnect'参数设置为'true'.当设备断开连接时,请不要调用 gatt.close().无论我到哪里,我都会看到应该调用gatt.close().但如果我打电话给gatt.close(),Android中心应用程序永远不会重新连接.我已经多次测试过了.

如果我没有调用gatt.close()并且没有重启Android,则通常会发生自动连接.有时它可能需要很长时间,特别是在5.0版之后.然而,它是不可靠的并且由于非常低的扫描周期而且在扫描周期实际检测到广告之前设备退出广告可能是不可靠的.我不确定,因为没有办法像广告那样检测扫描操作!扫描也可能在一定时间后停止,但没有相关文档.

因此,我认为我需要做的就是以某种方式设置使用的是Android,以更高的占空比后台扫描速度(仅在5.0可能高达)时自动连接已定,但我不知道如何做到这一点.我不想开始自己的扫描,但不知何故设置了Android用于重新连接的后台扫描速率.有谁知道如何做到这一点?有谁真的知道autoconnect和gatt.close()是如何工作的?

也许自动连接并不意味着重新连接,如上所述?

android bluetooth-lowenergy android-bluetooth

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

授权需要类型为 Task<AuthenticationState> 的级联参数。考虑使用 CascadingAuthenticationState 来提供此

我有一个使用个人帐户设置的 Blazor 服务器端项目。我搭建了 AspNet.Core.Identity 页面,并希望通过使用<component>标签助手在其中一个 razor 页面中使用 Blazor 组件。

我的剃刀页面:

@page
@using SenseNet.Pages
@model WalletModel
@{
    ViewData["Title"] = "Wallet Data";
    ViewData["ActivePage"] = "WalletData";
}
@{
    Layout = "_Layout.cshtml";
}
<h3>@ViewData["Title"]</h3>
<component type="typeof(Counter)" render-mode="ServerPrerendered" />
Run Code Online (Sandbox Code Playgroud)

我的 Counter Blazor 组件:

@page "/counter"

<PageTitle>Counter</PageTitle>
<h1>Counter</h1>

<AuthorizeView Policy="TwoFactorEnabled">
    <h1>Hello, @context.User.Identity.Name!</h1>
    <p>You can only see this content if you're authenticated.</p>
</AuthorizeView>

<p role="status">Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    [CascadingParameter]
    private Task<AuthenticationState> authenticationStateTask { get; set; }

    private int currentCount …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core razor-pages blazor-server-side

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

Android BLE设备收到的结果非常不规律

我的灯塔(SensorTag CC2541)是一个广告客户,每秒播放10次信息.

我的Android应用程序扫描了一个BluetoothLeScanner.我登记的每个扫描结果之间的时间BluetoothLeScanner大约是0.1秒到0.6秒,这完全没问题.但有时(每5秒钟)每次扫描结果之间的时间超过2秒.有时最多5个.这使我的应用程序关闭,因为我需要快速检测信标.

我没有批量扫描,我只是处理每个扫描结果.

我尝试通过创建自己的问题scanSettings并将reportDelay强制为0并将扫描模式强制为低延迟来解决这个非常规问题.但是,当我使用下面的代码实现它时,我的扫描仪只会接收每个信标ONCE.但是当使用" mLeScanner.startScan(scanCallback)不"时,scanSettings我会从同一个信标中获得多个结果(尽管如上所述,间隔不一致).有谁知道这个问题可能是由什么引起的?

BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();
BluetoothLeScanner mLeScanner = mBluetoothAdapter.getBluetoothLeScanner();

ScanSettings.Builder scanSettingsBuilder = new ScanSettings.Builder();
scanSettingsBuilder.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY);
scanSettingsBuilder.setReportDelay(0);
scanSettingsBuilder.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES);
ScanSettings scanSettings = scanSettingsBuilder.build();

ScanCallback scanCallback = new ScanCallback() {
    @Override
    public void onScanResult(int callbackType, ScanResult result) {
        super.onScanResult(callbackType, result);
        //Handle result
    }

    @Override
    public void onBatchScanResults(List<ScanResult> results) {
        super.onBatchScanResults(results);
        //Not used, any code I put here never gets run
    }

    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

android bluetooth bluetooth-lowenergy android-bluetooth

5
推荐指数
0
解决办法
851
查看次数

为什么我不能使用QList :: size_type,因为我会使用std :: string :: size_type?(模板参数错误)

在我的for循环中声明迭代器时研究无符号与有符号整数比较警告时,我读到了这个:

尽可能使用您要比较的确切类型(例如,std::string::size_typestd::string长度比较时使用).

QList<T>想要迭代,使用上面的方法声明迭代器:

 for(QList::size_type i = 0; i < uploads.size(); i++)
 {
     //Do something
 }
Run Code Online (Sandbox Code Playgroud)

它给了我一个编译器错误:

error: 'template<class T> class QList' used without template parameters
for(QList::size_type i = 0; i < uploads.size(); i++)
Run Code Online (Sandbox Code Playgroud)

为什么我不能以同样的方式使用它?这是由我还是由Qt框架及其类型引起的?QList::size_type在这种情况下,什么是一个很好的替代品,QList::size()只需返回一个常规的旧的int,我想使用它; 但我读了上面链接的帖子,这让我不确定.

c++ qt templates dependent-name class-template

4
推荐指数
2
解决办法
157
查看次数

为什么我的where子句的一部分没有在我的条件函数中使用?

我一直在练习Haskell作为我大学课程的一部分,在尝试本地定义时我做了以下功能:

fac1 x | x == 0 = zero
       | x == 1 = one
       | otherwise = x * fac1 (x-1)
         where zero = 0
               one = 1
Run Code Online (Sandbox Code Playgroud)

我希望对fac1的任何调用都会导致零,因为当x == 0时,它会乘以0.但是,它给出了正确的数字.

相反,在我one = 0one = 1结果中写入而不是结果为0.我会期望相同的行为为零,但改变它的值不会做任何事情.我觉得它应该发生,因为我明显包括一个x==0条件.该x==1评估,为什么不x==0

有人可以解释我犯的错误吗?

haskell

4
推荐指数
1
解决办法
83
查看次数

使用hcitool扫描蓝牙低功耗?

当我运行此命令时,ble设备仅扫描5秒钟:

$ sudo timeout 5s hcitool -i hci0 lescan
Run Code Online (Sandbox Code Playgroud)

输出显示在终端屏幕中.

但是当我将输出重定向到文件以保存广告设备的地址时,每次运行该命令时,我发现文件为空,输出在终端或文件中都不可见.

我用的命令:

$ sudo timeout 5s hcitool -i hci0 lescan > file.txt
Run Code Online (Sandbox Code Playgroud)

为了hcitool正确地将其输出重定向到文件,我该怎么办?

linux shell ubuntu bluetooth bluetooth-lowenergy

3
推荐指数
1
解决办法
9682
查看次数

如何使用QDBus解析{String,Dict {String,Variant}}的Dict?

我正在查询NetworkManager的org.freedesktop.NetworkManager.Settings.Connection界面,在其上调用“ GetSettings”。它返回D Dict of {String, Dict of {String, Variant}}a{sa{sv}}Dbus类型的术语。我将QtCreator和Qt4一起使用来构建我的应用程序。

我似乎无法从这本词典中得到一些有用的信息。我不能提供MVE,因为如果在某人的系统上安装了NetworkManager,DBus和Qt4,它会严重依赖于MVE。

这是我正在开发的用于从此字符串字典以及字符串和变体字典中获取信息的方法。将其管道传输到qDebug():时,我可以看到所有想要的漂亮数据qDebug()<<reply

void GetInfo()
{
    //sysbus just means the system DBus.
    QDBusInterface connSettings("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager/Settings/1", "org.freedesktop.NetworkManager.Settings.Connection", sysbus);
    QDBusMessage reply = connections.call("GetSettings");
    if(reply.type() == QDBusMessage::ReplyMessage)
    {
        //I have tried everything I can imagine here,
        //QVariant g = reply.arguments().at(0).value<QVariant>(); did not work
        //g.canConvert<QMap>(); returns false, in contrast to what KDE says.
        //QDbusArgument g = query.arguments().at(0).value<QDBusArgument>();
        //g.beginMap(); and such don't work
    }
}
Run Code Online (Sandbox Code Playgroud)

查找有关解析Dict类型的信息非常困难。我发现提供某些信息的唯一来源是KDE。它说:“ DBus Dict类型应映射到QMap,后面的示例。”,并且在Google或示例中没有其他匹配项。也许我缺少一些基本的DBus知识,但是我很困惑。 …

c++ dbus qdbus

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

使用for循环在python中列出列表中的元素

在处理从列表中的数字组中创建条形图的程序时,我发现在列表中添加项目不起作用.我认为最好的方法就是做一个for循环.

这是我的清单:

phonelist = [[12,14,16,17,18],[16,23,54,64,32]]
Run Code Online (Sandbox Code Playgroud)

然后我尝试用for循环添加它

numphone = 0
for x in len(phonelist[0]):
    numphone = numphone + x
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误:

TypeError:'int'对象不可迭代

我该怎么办?

python loops for-loop numbers list

0
推荐指数
1
解决办法
3314
查看次数

使用或在while循环中(Python)

variable1 = 0
while variable1 != "1" or variable1 != "2" or variable1 != "3":
    variable1 = input ("Enter variable1: ")
print("Succes")
Run Code Online (Sandbox Code Playgroud)

即使为变量分配了1或2或3,我的代码也永远不会退出while循环。我从未读过任何有关Python的文档,这些文档说或语句在while循环中不起作用。根据命题演算,这应该是正确的,因为True或False或False = True

我知道我并没有使用整数。

提前致谢!

python logic loops while-loop

0
推荐指数
1
解决办法
9098
查看次数