小编Phi*_*Bot的帖子

Bitbake bbappend文件名中的百分比

在yocto文档中找不到为什么某些bbappend文件的文件名中包含“%”。例如“ qtbase _%。bbappend”。

这是否意味着“适用于qtbase可咬食谱的所有版本”?

bitbake yocto

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

用于 init-ifupdown 的 Yocto Poky-Pyro bbappend 文件不会替换 /etc/network/interfaces

我在 Ubuntu 16.04 上使用 Yocto poky-pyro。我想替换生成的映像根文件系统上的 /etc/network/interfaces 文件,因此我在我的元公司目录中添加了一个 bbappend 配方,该配方还包含其他正确构建的包配方。

user@BuildMachine:~/bbb/meta-bbb/recipes-custom/init-ifupdown$ tree
.
??? init-ifupdown_1.0
?   ??? interfaces
??? init-ifupdown_1.0.bbappend

1 directory, 2 files
Run Code Online (Sandbox Code Playgroud)

bbappend 文件如下所示:

# Extend the base recipe search path to $HERE/init-ifupdown
FILESEXTRAPATHS_prepend := "${THISDIR}/init-ifupdown-1.0:"
Run Code Online (Sandbox Code Playgroud)

该目录中的接口文件如下所示:

user@BuildMachine:~/bbb/meta-bbb/recipes-custom/init-ifupdown$ cat init-ifupdown_1.0/interfaces 
# Configure Loopback
auto lo
iface lo inet loopback

# Configure WiFi Infrastructure
auto wlan0
iface wlan0 inet dhcp

 # Configure WiFi Hotspot
auto wlan1
iface wlan1 inet static  
    address 172.24.1.1
    netmask 255.255.255.0
    network 172.24.1.0
    broadcast 172.24.1.255
Run Code Online (Sandbox Code Playgroud)

在我构建图像并查看 …

linux embedded-linux bitbake yocto

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

使用Xcode 9和AES解密的CryptoSwift

我正在使用Xcode 9.0和CryptoSwift(0.7.2).我正在尝试扩展String以解密AES128加密字符串.我已经使用Pod成功添加了CryptoSwift,但是我收到了以下编译错误 - 我做错了什么?

无法构造'PKCS7',因为它没有可访问的初始值设定项

在此输入图像描述

这是扩展名:

import Foundation
import CryptoSwift

extension String {

    // https://stackoverflow.com/questions/27072021/aes-encrypt-and-decrypt
    func aesDecrypt(key: String, iv: String) throws -> String {
        let data = Data(base64Encoded: self)!
        let decrypted = try! AES(key: key, iv: iv, blockMode: .CBC, padding: PKCS7()).decrypt([UInt8](data))
        let decryptedData = Data(decrypted)
        return String(bytes: decryptedData.bytes, encoding: .utf8) ?? "Could not decrypt"
    }

}
Run Code Online (Sandbox Code Playgroud)

ios cocoapods swift swift3 cryptoswift

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

AWS CodePipeline 自定义 Lambda 函数永远运行且永不返回

我有一个简单的 AWS CodePipeline,其标准“源”->“构建”->“部署”管道阶段工作正常,我正在尝试添加我自己的自定义最终管道阶段,它是单个 AWS Lambda 函数。问题是我的最后一个自定义 Lambda 函数多次运行,很长时间后,出现以下消息错误:

在此处输入图片说明

请参阅随附的整个管道的屏幕截图:

在此处输入图片说明

当管道到达最后一步时,它会以“蓝色(进行中)”状态旋转很长时间,然后显示错误,如下所示:

在此处输入图片说明

这是我的 Lambda 函数代码:

from __future__ import print_function
import hashlib
import time
import os
import boto3
import json
from botocore.exceptions import ClientError

def lambda_handler(event, context):

    # Test
    AWS_ACCESS_KEY = ASDF1234
    AWS_SECRET_KEY = ASDF1234
    SQS_TESTING_OUTPUT_STATUS_QUEUE_NAME = 'TestingOutputQueue'

    # Get the code pipeline
    code_pipeline = boto3.client('codepipeline')

    # Get the job_id
    for key, value in event.items():
        print(key,value)
    job_id = event['CodePipeline.job']['id']
    DATA = json.dumps(event)

    # Create a connection the SQS Notification service
    sqs_resource_connection = boto3.resource( …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services boto3 aws-lambda aws-codepipeline aws-codestar

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

期望将KEY_DOWN和KEY_UP事件发送到Linux中的Process

我想在我的Qt GUI应用程序中模拟嵌入式linux keypress事件.主要是我想模拟KEY_UP,KEY_DOWN,KEY_LEFT,KEY_RIGHT和KEY_F {1-2-3}按键.我没有X可用.

这里有一个ASCII字符表:

http://foldoc.org/ASCII+character+table\
Run Code Online (Sandbox Code Playgroud)

而且我理解如何发送东西,比如CNTRL-T,通过生成它并在我的期望脚本中发送以下内容来将该表用于我的应用程序:

send "\x14"
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到关于如何发送KEY的文档或示例_ ??? 使用Expect进行按键操作.我怎么能用Expect做到这一点?

如果不可能,还有其他方法可以将按键发送到我的进程吗?我似乎无法将转义序列回显到/ dev/input/keypad ...

更新:

感谢您的评论.

我可以看到我的箭头键生成的输出:

$ od -c
^[[D^[[C^[[D^[[B^[[A^[[A^[[B^[[B^C
Run Code Online (Sandbox Code Playgroud)

我还可以看到infocmp xterm的输出为:

am, bce, km, mc5i, mir, msgr, npc, xenl,
    colors#8, cols#80, it#8, lines#24, pairs#64,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
    bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
    clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M,
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
    cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
    cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
    dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
    flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
    ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
    ind=^J, indn=\E[%p1%dS, invis=\E[8m,
    is2=\E[!p\E[?3;4l\E[4l\E>, kDC=\E[3;2~, …
Run Code Online (Sandbox Code Playgroud)

linux expect simulate pexpect embedded-linux

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

用于aws-iot-device-sdk-cpp的Buildroot MakeFile

我正在使用buildroot,我正在尝试交叉编译此处的AWS IOT cmake库:https: //github.com/aws/aws-iot-device-sdk-cpp

我从这里为不同的AWS sdk提供了另一个buildroot makefile(正确编译):https: //github.com/aws/aws-sdk-cpp

我复制了其他makefile并尝试修改它以构建但我收到以下错误:

...
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:9 (message):
  In-source builds not allowed.  Please make a new directory (called a build
  directory) and run CMake from there.  You may need to remove CMakeCache.txt
  and CMakeFiles folder.
...
Run Code Online (Sandbox Code Playgroud)

Makefile文件:

################################################################################
# aws-iot-device-sdk-cpp
################################################################################
AWS_IOT_DEVICE_SDK_CPP_VERSION = …
Run Code Online (Sandbox Code Playgroud)

linux makefile cross-compiling buildroot

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

如何延迟 Linux 内核模块临界区

我需要在 USB 内核模块中添加一个短暂的延迟,以避免在小型嵌入式 Linux 设备启动时出现极其罕见的内核恐慌。有问题的代码如下。如果我在代码中添加一个 prink,该设备会成功运行一整夜,而之前它曾经失败过。我想添加一个小的延迟,但 usleep_range 和 msleep 会导致内核回溯“在原子时调度”。如何在不睡觉的情况下在这部分代码中添加延迟?是一个while循环来做到这一点吗?

usb_hub_for_each_child(udev, chix, childdev) {
    printk(KERN_ERR "r8a66597: Start USB Discover\n");
    //usleep_range(10000, 11000);
    //preempt_disable();
    //msleep(1);
    collect_usb_address_map(childdev, map);
    //usleep_range(10000, 11000);
    printk(KERN_ERR "r8a66597: Stop USB Discover\n");
    //msleep(1);
    //preempt_enable();
}
Run Code Online (Sandbox Code Playgroud)

linux kernel linux-device-driver linux-kernel embedded-linux

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

路由挂起中的Python3 Flask asyncio子进程

我在Ubuntu 18.04上将Flask 1.0.2与Python 3.6一起使用。我的应用程序应使用asyncio并asyncio.create_subprocess_exec()启动后台脚本,从中读取stdout,然后在脚本完成后返回状态。

我基本上是想从这篇文章中实现一个答案: 在Python的subprocess.PIPE上非阻塞读取

该脚本已成功启动,并且从中获得了所有预期的输出,但是问题是它从不返回(意味着Killing subprocess now从不到达该行)。当我ps从Linux终端检查进程列表()时,后台脚本已退出。

我在做什么错,如何才能成功摆脱困境async for line in process.stdout

导入后,在文件顶部,创建事件循环:

# Create a loop to run all the tasks in.
global eventLoop ; asyncio.set_event_loop(None)
eventLoop = asyncio.new_event_loop()
asyncio.get_child_watcher().attach_loop(eventLoop)
Run Code Online (Sandbox Code Playgroud)

我在路线上方定义了异步协程:

async def readAsyncFunctionAndKill(cmd):
    # Use global event loop
    global eventLoop

    print("[%s] Starting async Training Script ..." % (os.path.basename(__file__)))
    process = await asyncio.create_subprocess_exec(cmd,stdout=PIPE,loop=eventLoop)
    print("[%s] Starting to read stdout ..." % (os.path.basename(__file__)))
    async for line in process.stdout:
        line = line.decode(locale.getpreferredencoding(False)) …
Run Code Online (Sandbox Code Playgroud)

python linux flask python-3.x asyncio

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

删除Qt中的QStringList

在Qt中,我理解如果您创建一个继承自QObject的对象并将其设置为父对象,则父对象负责删除子对象.我也明白,如果你在堆栈上创建对象,当它们超出范围时会被删除.

我并没有围绕我想要显式删除QStringList(或任何QList)中的项目然后是列表本身的情况.

考虑我是否创建了一个QStringList并填充如下:

QStringList multiPartPortionList;
multiPartPortionList = multiPartPortion.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
Run Code Online (Sandbox Code Playgroud)

然后我用它做一些事情并调用此方法以尝试显式删除列表中包含的项目,然后是列表本身:

void MyClass::deleteList(QStringList list) {

    // Now cleanup
    QStringList *delList = new QStringList(list);
    int numObjects = delList->count();
    for (int i=0; i < numObjects; i++)
        delete (new QString(list.takeAt(0)));
    delList->clear();
    delete delList;
    delList = 0;

}
Run Code Online (Sandbox Code Playgroud)

我不能调用qDeleteall(list)因为它需要一个指针,而我也做不到:

delete list;
Run Code Online (Sandbox Code Playgroud)

因为它'给'删除',预期指针'的参数错误,期望一个指针.

我得到了分段错误:

void MyClass::deleteList(QStringList list) {

    // Now cleanup
    QStringList *delList = &list; // <--- Seg fault with this
    int numObjects = delList->count();
    for (int i=0; i < numObjects; i++)
        delete (new QString(list.takeAt(0))); …
Run Code Online (Sandbox Code Playgroud)

c++ qt memory-leaks memory-management

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