小编jak*_*451的帖子

Arduino中的向量

我在Arduino上制作了"航点"的矢量.每个航点都是一个对象.Arduino显然需要为航点导航存储多个航路点.但是,不是将这些航点存储在标准的预编程阵列中,用户需要能够添加,删除航点并移动它们.不幸的是,Arduino不提供矢量类型作为内置库.

我目前正在考虑两种选择:

  1. 容器中为C++'vector'这样的对象?有人发布了一个通用图书馆.它不包含任何索引删除或移动操作.但它确实包含一些内存管理策略.

  2. 我过去使用过malloc,dealloc,calloc.但我根本不喜欢这个选项,尤其是课程.但这在我的Senario中是一个更好的选择吗?

哪条路走得更好?

c++ vector arduino

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

是一个<b <c`有效的python?

我很好奇,看看我是否可以使用它a<b<c作为条件而不使用标准a<b and b<c.所以我试了一下,我的测试结果通过了.

a = 1
b = 2
c = 3

assert(a<b<c) # In bounds test
assert(not(b<a<c)) # Out of bounds test
assert(not(a<c<b)) # Out of bounds test
Run Code Online (Sandbox Code Playgroud)

只是为了好的衡量,我尝试了更多的数字,这次是在负面区域.哪里a, b, c = -10, -9, -8.测试再次通过.即使是更高范围的测试套装也能正常工作a, b, c = 10, 11, 12.甚至a, b, c = 10, 20, 5.

和C++一样的实验.这是我的心态:

#include <iostream>

using namespace std;

int main()
{
    int a,b,c;
    a=10;
    b=20;
    c=5;
    cout << ((a<b<c)?"True":"False") << endl; // Provides True …
Run Code Online (Sandbox Code Playgroud)

python

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

支持二进制第2部分的龙卷风腹板

我试图通过websockets传递二进制数据,更具体地说是通过websockets传递压缩字符串.在我目前的设置中,我使用tornado作为服务器,其中websocket客户端传输二进制数据.二进制数据是通过压缩数据形成的zlib.客户端和服务器都很简单,如下所示.

服务器:

import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web

class WebSocketServer(tornado.websocket.WebSocketHandler):
    def open(self):
        print 'OPEN'

    def on_message(self, message):
        print 'len = {}'.format(len(message))
        print 'GOT MESSAGE: {}'.format(message.decode('zlib'))

    def on_close(self):
        print 'CLOSE'

app = tornado.web.Application([
        (r'/', WebSocketServer)
    ])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9500)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)

客户:

import websocket

host = 'localhost'
port_ws = 9500
ws = websocket.create_connection('ws://{}:{}/'.format(host, port_ws))
message = 'this is my message'.encode('zlib')
print 'Length of message is {}'.format(len(message))
ws.send(message)
Run Code Online (Sandbox Code Playgroud)

客户端不会抛出任何错误,它会打印出消息:Length of message is 24.消息str …

python tornado websocket

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

可调用的打字稿接口不可调用?

我正在尝试编写ts-optchain. 功能将尝试返回具有拼接更改的根对象的副本。这样原件不会以任何方式改变或修改。然而,对于尚未修改的对象区域,它们作为引用(通过Object.assign(...))复制到浅复制操作中。

我试图验证的测试如下:

const example = { a: { b: { c: { d: 5 } } } };
const out = osc(example).a.b.c.d(6);
expect(out).to.be.deep.eq({ a: { b: { c: { d: 6 } } } });
Run Code Online (Sandbox Code Playgroud)

... 其中osc(可选设置链)是我对 mimmicopt-chainoc功能所做的功能。

我期待结果有点类似于 Object.assign({}, example, {a: Object.assign({}, example.a, {b: Object.assign({}, example.a.b, {c: Object.assign({}, example.a.b.c, {d: 6})})})});

上述方法编写、阅读和维护都很痛苦。因此,使这个功能的推理。

实施

我的尝试如下:

// ----- Types -----
// Generic type "R" -> The returned root object type …
Run Code Online (Sandbox Code Playgroud)

typescript

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

sqlite查询中的对数函数?

我真的需要update使用对数函数对超过40万行执行。不幸的是,sql对数函数似乎在sqlite中不存在。有什么方法可以导出对数函数或导入该LOG函数?

我知道如何执行此操作的唯一其他方法是,我相信通过python来订购O(n ^ 2)。这种方法将花费太长时间(我尝试过,在速度较慢的计算机上花了大约5%的时间才花费了1.5个小时)。

编辑:

我还找出了花这么长时间的原因。数据库中的主键未标记为主键。因此,我使用的代码如下:

for row in database:
    ...calculations for the row...
    ...sql update for the specific row which follows:...
    for search_row in database:
        if search_row[id] = row[id]:
            ...update values here...
Run Code Online (Sandbox Code Playgroud)

效率极低... O(n ^ 2)

python sqlite

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

支持二进制的龙卷风websockets

我使用龙卷风作为服务器.我希望它能接收二进制数据.服务器端就像简单的获取一样简单:

import tornado.websocket
import tornado.httpserver
import tornado.ioloop
import tornado.web

class WebSocketServer(tornado.websocket.WebSocketHandler):
    def open(self):
        print 'OPEN'

    def on_message(self, message):
        print 'GOT MESSAGE: {}'.format(message)

    def on_close(self):
        print 'CLOSE'


app = tornado.web.Application([
        (r'/', WebSocketServer)
    ])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(9500)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)

此服务器仅用于可视化传入数据,不是太特别.服务器只能使用标准的ascii查找,但是当它获得任何unicode(我对伪二进制数据的测试)时会爆炸.我使用网站http://www.websocket.org/echo.html并重定向发送到ws://172.0.0.1:9500/我设置服务器的位置.服务器然后提示我非常讨厌的错误:

ERROR:tornado.application:Uncaught exception in /
Traceback (most recent call last):
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/tornado/websocket.py", line 303, in wrapper
    return callback(*args, **kwargs)
  File "test.py", line 11, in on_message
    print 'GOT MESSAGE: {}'.format(message)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position …
Run Code Online (Sandbox Code Playgroud)

python tornado

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

Pygame没有正确处理键盘或鼠标事件

我最近在我的Mac上重新安装了pygame.我安装了pygame 1.9.2a0.我在我的Windows上有相同的版本和之前在这台Mac上的相同版本.但是这个新装置让我得到了奇怪的结果.我注意到所有绘制命令都工作正常,但由于某种原因点击pygame窗口没有.窗口在后台打开,这不正常,但这不是一个大问题.但随后所有按键被重定向到终端/ IDE(从应用程序运行).我在下面附上了一个我正在测试的非常简单的程序.该程序只查找转义键.请注意,这在我的Windows机器上运行正常.

TL; DR:当选择窗口时,为什么按键被发送到终端而不是pygame窗口的事件循环.

我对这个问题感到困惑,主要是因为我之前没有遇到过这样的问题.我也不确定如何调试此问题.如果需要其他信息,我很乐意提供.

import pygame
import sys
from pygame.locals import *

pygame.init()
size = width, height = 100, 100
screen = pygame.display.set_mode(size)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.event.post(pygame.event.Event(QUIT))

    screen.fill((30, 30, 30))
    pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)

对于好奇:

  • MacOSX 10.10.1
  • Python 3.4.2(通过pyenv)
  • Pygame:1.9.2a0

更新:

我有一个理论认为其中一个较新的提交中出现了某种问题.所以我决定将他们的存储库拉下来并恢复到之前的提交.这似乎很有希望,特别是因为他们在2015年1月初就有8个左右的拉动请求"大爆炸"合并.所以我在这次大规模合并发生之前将存储库拉回到提交,问题完全相同.我决定对其他几个提交(合并位置之前和之后)执行此操作,但仍然没有更改.有什么建议?

python pygame python-3.x

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

Arduino可以通过串口传输空字符吗?

我将通过内置硬件串行库在两个 Arduino 之间建立二进制驱动的串行通信。由于我的数据包采用二进制格式构建,因此对于值为 0 的整数实例,数据包中的几个字符很可能是空字符。我不确定 Arduino 将如何处理空字符,或者是否有处理。在我进一步开展我的项目之前,我当然想知道。

serial-port arduino

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

从联合查询创建视图

我很抱歉也要提出这个问题.但似乎我今天没有运气.我已将我的所有结果连接成"Unioned",现在我试图将其推向视图.这应该也很简单,但我似乎无法改变各种组件以使其工作.这是我尝试使用的代码:

CREATE VIEW v AS
SELECT *
FROM
(
  (SELECT maker, model, price FROM product NATURAL JOIN laptop)
    UNION
  (SELECT maker, model, price FROM product NATURAL JOIN pc)
    UNION
  (SELECT maker, model, price FROM product NATURAL JOIN printer)
) `Unioned`
Run Code Online (Sandbox Code Playgroud)

错误: #1349 - View's SELECT contains a subquery in the FROM clause

我一直在尝试将各种组件封装到括号中.或者仅为创建视图创建一个新语句.这个问题应该很容易回答,但我只是没有看到它.

再次感谢您的帮助!

sql

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

试图在类中定义静态常量变量

我在private下定义了一个变量adc_cmd[9]作为static const unsigned char我的类ADC.因为它是一个常数,我想我会在它自己的类中定义它,但这显然不起作用:

#pragma once

class ADC{
private:
    static const unsigned char adc_cmd[9] = { 0x87, 0xC7, 0x97, 0xD7, 0xA7, 0xE7, 0xB7, 0xF7, 0x00 };
//...
};
Run Code Online (Sandbox Code Playgroud)

错误:

error: a brace-enclosed initializer is not allowed here before '{' token
error: invalid in-class initialization of static data member of non-integral type 'const unsigned char [9]'
Run Code Online (Sandbox Code Playgroud)

...

所以我尝试用以下方法将该行带出类:static const unsigned char ADC::adc_cmd[9] = { 0x87, 0xC7, 0x97, 0xD7, 0xA7, 0xE7, 0xB7, 0xF7, 0x00 }; …

c++ static class

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

Python的语法糖出错了

我正在查看这里列出的代码,它们提供了一个非常有趣的结构,用于在线编写Python中的"时钟".我以前从未见过这种古怪的语法,老实说不知道它是如何工作的.这在Python中是完全黑魔法.但即使它不是写作者想要的最恐怖的方式,我仍然想知道它是如何运作的.

qClock = (lambda:0, time.clock)[qDuration > 0]
qDuration = (1, (qClock() + qDuration))[qDuration > 0]
Run Code Online (Sandbox Code Playgroud)

我的过程:

  • qClock 返回True表示已经过了持续时间
  • qDurration 以int开头,但后来改为lambda函数?
  • 为什么每个列表末尾都有列表?我觉得这些不是清单.

python

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

使用指针将列表复制到列表

我已经将问题简化为我的问题的一个小的可运行示例,如下所示:

package main

import "fmt"

type A struct {
    Name string
}

func main() {
    main_list := []A{A{"1"}, A{"b"}, A{"3"}}
    second_list := make([]*A, 0)
    fmt.Println("FIRST LIST:")
    for _, x := range main_list {
        fmt.Println(x.Name)
        second_list = append(second_list, &x)
    }
    fmt.Println("SECOND LIST:")
    for _, x := range second_list {
        fmt.Println((*x).Name)
    }
}
Run Code Online (Sandbox Code Playgroud)

其中提供:

FIRST LIST:
1
b
3
SECOND LIST:
3
3
3
Run Code Online (Sandbox Code Playgroud)

简单的任务是创建main_list一些虚拟结构.真正的问题是创建从值引用(指针)main_list进入second_list.我绝对不希望结构的副本,只需要指向结构的指针/引用main_list.第二个for循环遍历新填充的second_list并且仅显示main_list(3 …

go

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

Arduino上的头文件出现奇怪的编译器错误

我开始一个项目并开始构建它的一些结构.我将每个传感器的头文件和c ++源文件放在Arduino传感器库下的一个名为"Sensors"的文件夹中.它抱怨的文件相当小而且无趣,因为刚刚创建它.

错误:

In file included from /Applications/Arduino.app/Contents/Resources/Java/libraries/PID/../Sensors/Sensors.h:6,
             from Aircraft.h:5,
             from Aircraft.cpp:1:
/Applications/Arduino.app/Contents/Resources/Java/libraries/PID/../Sensors/Compass.h:14: error: multiple types in one declaration
Run Code Online (Sandbox Code Playgroud)

Compass.h

#pragma once

class Compass
{
private:
    double x,y,z;

public:
    void refresh();

    double getX();
    double getY();
    double getZ();
};
Run Code Online (Sandbox Code Playgroud)

它抱怨multiple types in one declaration.但该文件似乎没问题.有什么我想念的吗?我忽略了什么?

c++ arduino

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

标签 统计

python ×6

arduino ×3

c++ ×3

tornado ×2

class ×1

go ×1

pygame ×1

python-3.x ×1

serial-port ×1

sql ×1

sqlite ×1

static ×1

typescript ×1

vector ×1

websocket ×1