小编Ros*_*ers的帖子

将字节串发送到串行设备

我正在使用在Raspberry上运行的Python3.我有一个串口设备(max232/PiC16F84)通过USB转串口适配器连接到Raspberry.我尝试向设备发送两个字节(例如0000 0011),然后PIC将其解释为命令.USB - 串行适配器配置正确,参数如bauderate应该没问题.我猜我的代码没有将正确的字节发送到串口.

import serial

ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=1200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    xonxoff=serial.XOFF,
    rtscts=False,
    dsrdtr=False
)

ser.open()
ser.isOpen()

print("Initializing the device ..")

ser.write(bytes(0x00))

print("Write command")
ser.write (bytes(0x04))

print('Done')
Run Code Online (Sandbox Code Playgroud)

python pyserial python-3.x raspberry-pi

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

如何从 QML 收听 C++ 信号?

我有我称之为 C++“服务”的东西,我想向 QML 公开它的接口。我正在尝试使用QQmlContext'ssetContextProperty将对象链接到 QML 并从QML连接到它Connections

QML 不会像以前那样在 QML 上下文中注册服务时抱怨引用错误:

qrc:/main.qml:13: ReferenceError: service is not defined
Run Code Online (Sandbox Code Playgroud)

所以,QMLservice现在似乎找到了对象,但是 QML 插槽 javascript 函数没有被调用。我在 Qt Creator 中看到了这一点:

Debugging starts
QML debugging is enabled. Only use this in a safe environment.
QML Debugger: Waiting for connection on port 62301...
Calling the clbk signal
Debugging has finished
Run Code Online (Sandbox Code Playgroud)

应该有一条In onClbk消息,console.log("In onClbk"); 我知道我可以使用QMetaObject::invokeMethod直接调用 QML 对象的函数,但我试图通过使用信号和槽来实现更松散的耦合。

我想避免创建一个 QQuickItem如果可能的话,在 QML 中和实例化服务。

不幸的是,样板代码很多,这是我的 …

c++ qt qt-creator qml

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

如何将 QML 对象引用传递到 Qt C++?

我正在尝试在 QML 和 Qt C++ 中创建类似jQuery 的自动完成功能的小部件。为此,我创建了一个 C++AutoCompleteListener子项QObject,然后将其注册为:

qmlRegisterType<AutoCompleteListener>(
    "foo.AutoCompleteListener",0,1,"AutoCompleteListener");
Run Code Online (Sandbox Code Playgroud)

然后,我实例化侦听器AutoCompleteForm等:

import QtQuick 2.5
import com.foo.AutoCompleteListener 0.1

Item {
    AutoCompleteForm { id: autocomplete_form }
    AutoCompleteListener { id: listener }
}
Run Code Online (Sandbox Code Playgroud)

如何传递到QML对象的引用AutoCompleteFormAutoCompleteListener

我尝试将autocomplete_form字段传递给:

Q_INVOKABLE void set_autocomplete_form(QQmlComponent *autocomplete_form);
Run Code Online (Sandbox Code Playgroud)

关于onCompleted信号:

Item {
    AutoCompleteForm {
        id: autocomplete_form
        Component.onCompleted: {
            console.log("AutoCompleteForm completed");
            listener.set_autocomplete_form(autocomplete_form);
        }
    }
    AutoCompleteListener {
        id: listener
        Component.onCompleted: {
            console.log("AutoCompleteListener completed");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,参考是nullptr即使两个 …

qt qml

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

如何将弹出窗口添加到嵌套项目内的根应用程序窗口?

我想创建一个覆盖整个 root 的Popup模态ApplicationWindow,但我想Popup在我正在构建的小部件容器中实例化它,该容器将深深嵌套在 QML 层次结构中。不幸的是,实例化Popup不是 的直接子级ApplicationWindow并且滚动到视图之外的 不会居中并覆盖ApplicationWindow

在下面的代码中,我Popup在 child 中实例化了 a Item,但我不知道如何使其在视口上居中:

import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

ApplicationWindow {
  id: root;
  visible: true
  width: 100
  height: 150

  Flickable {
    id: flickable;
    contentHeight: col_layout.height;
    anchors.fill: parent;
    ColumnLayout {
      id: col_layout;
      Rectangle {color:'green'; width:100; height: 100}
      Rectangle {color:'red';   width:100; height: 100;
        Popup{
          id: popup;
          modal: true;
          visible: true;
          Rectangle{ color:'blue'; width:200; height: 200; …
Run Code Online (Sandbox Code Playgroud)

qt qml

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

Rust 中“fuse”背后的词源或软件原理是什么?

fuse我在 Rust 生态系统中遇到了这个词:

  • slog::Fuse将错误推向恐慌。

  • FutureExt::Fuse“融合一个未来,这样民意调查一旦完成就不会再被召集。”

我知道 Linux 的 FUSE,一个用户空间文件系统。保险丝也是一种电气元件,当流过保险丝的电流过大时,保险丝就会进入开路状态。在硬件中,“熔断”描述了通过(历史上)通过硅的特定导线中的过电流熔断硅中的电路来将配置烘焙到硅中。

Rust 中的“保险丝”通常意味着什么?它的词源是什么?

terminology rust

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

在m4的patsubst中,如何用空格替换换行符?

我怎么能告诉m4 patsubstr用空格替换字符串中的所有换行符?

我试过了:

patsubst(MULTI_LINE_STR_DEFINE,`\n',` ')
Run Code Online (Sandbox Code Playgroud)

patsubst(MULTI_LINE_STR_DEFINE,`\\n',` ')
Run Code Online (Sandbox Code Playgroud)

regex preprocessor makefile m4

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

使用win32com和/或active_directory,如何按名称访问电子邮件文件夹?

在使用win32com和/或active_directory的python w/Outlook 2007中,如何获取对子文件夹的引用,以便将MailItem移动到此子文件夹?

我有一个收件箱结构,如:

    收件箱
      |
      +  - 测试
      |
      ` -  todo

我可以访问收件箱文件夹,如:

import win32com.client
import active_directory
session = win32com.client.gencache.EnsureDispatch("MAPI.session")
win32com.client.gencache.EnsureDispatch("Outlook.Application")
outlook = win32com.client.Dispatch("Outlook.Application")
mapi = outlook.GetNamespace('MAPI')
inbox =  mapi.GetDefaultFolder(win32com.client.constants.olFolderInbox)
print '\n'.join(dir(inbox))
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试test根据Microsoft的示例获取子目录时,该inbox对象没有Folders接口或任何方式来获取子目录.

如何获得Folder指向testsubdir 的对象?

python outlook active-directory win32com

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

"代码运动"对"循环不变代码运动"意味着什么?

在编译器中,短语"循环不变代码运动"描述循环中的代码表达式或语句,其不会从迭代变为迭代,因此可以移动到循环之外以进行一次计算.

我理解这句话的"循环不变"部分,但"代码运动"是什么意思?

compiler-construction

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

当在条件表达式中使用时,gcc或其他编译器是否会按位或自动转换为布尔值?

如果我有一个带有逻辑OR运算符的C语句||:

if (isFoo() || isBar())
    blah();
Run Code Online (Sandbox Code Playgroud)

我知道isBar()如果isFoo()返回true ,编译器生成的代码将不会执行.

那么按位OR运算符| ?

if (isFoo() | isBar())
    blah();
Run Code Online (Sandbox Code Playgroud)

可能这是草率的写作,或者如果作者要求 isBar() 并且 isFoo()由于这些功能的副作用而被执行,那么他们应该更清楚地表达他们的意图.或许我错了,这是一个可接受的C/C++习语.

然而,将一个体面的编译器实际上生成一个临时变量做的返回值的比特OR isFoo()isBar()优化时是否开启?或者它会将按位OR运算转换为逻辑OR运算,以便允许布尔表达式的短路,以防止调用isBar()

c c++ gcc

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

Qt QSqlQuery 返回json

我在我的应用程序中创建了一个 sqlquery 方法,它基本上获取 SQL 命令并以 json 形式返回结果,问题是,当填充"和其他有问题的字符时,这会创建无效的 json 。

我尝试QObject先创建一个,然后将其序列化为 JSON,但我无法实现。

即使数据包含符号,如何使该方法生成有效的 json "

QString Api::SQLQuery(const QString & sqlquery)
{
QSqlQuery query;

bool firstline = true;
query.setForwardOnly(true);
if(query.exec(sqlquery))
{
    QString answer = "[";
    while(query.next())
        {
            if(firstline){firstline = false;}else {answer += ",";}

            answer += "{";
            for(int x=0; x < query.record().count(); ++x)
            {
                if(x != 0){answer += ",";}
                answer += "\""+query.record().fieldName(x) +"\":\""+ query.value(x).toString()+"\"";
            }
            answer += "}";
        }
    answer += "]";
    return answer;
}
else
{
    return …
Run Code Online (Sandbox Code Playgroud)

c++ mysql qt json qsqlquery

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