小编Jul*_*old的帖子

具有不同消息类型的消息队列

我正在调查Microsoft Message Queues以进行进程间跨网络消息传递.但是,当我收到一个消息,我不知道先验什么对象我得到的类型,所以代码

queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(Wibble) });
Run Code Online (Sandbox Code Playgroud)

收到消息之前无法应用,因为我不知道它是否是一个Wibble.那么我如何收到不同的消息类型?

c# msmq

10
推荐指数
2
解决办法
7228
查看次数

BeagleBone Black冻结了

我们目前正在开发BeagleBone Black的应用程序(使用标准的Angstrom发行版).它在GDB(由Netbeans远程控制)下运行一段时间(5-10分钟)非常愉快,但在一些相对随机的时间点会冻结 - 心跳LED停止闪烁并需要完全重启.

一种可能性是它只是造成这种情况的(USB)设备的数量.我们通过FTDI串行链接连接到我的开发PC(有一个客户端应用程序与我的BBB服务器通信).有一个4路FTDI集线器,其上有多个设备(当前为3个),另一个FTDI连接与另一个硬件连接.另外,两个I2C设备.加上鼠标和键盘.

当然,除了传闻之外,我没有任何其他证据表明这是USB导致的问题.我的软件没有引起任何信号,日志文件告诉我更多信息.我已经运行了系统监视器应用程序,看看我是否正在泄漏内存,但它看起来表现良好且稳定(尽管CPU确实在上升).我想找到一种方法来了解失败的原因,并希望得到一些帮助.

angstrom-linux beagleboneblack

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

Linux 相当于 Windows“启动”文件夹

我想在我的嵌入式 Linux 桌面启动时运行一个程序,就像 Windows 在“启动”文件夹中运行程序一样。我怎样才能做到这一点?

具体来说,我的目标硬件是 Beaglebone Black,Debian 变体(rev C 板)。窗口管理器是默认的。

linux debian beagleboneblack

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

Python 错误“__init__() 采用 1 个位置参数,但给出了 2 个”

Python 新手,刚刚写了一个简单的例子,遇到了一个奇怪的错误。

显示.py

import abc
from graphics import *

class Display:
    pass

class Visual(metaclass=abc.ABCMeta):
    """Represents a thing which can be drawn on a display"""

    @abc.abstractmethod
    def draw(disp: Display) -> None:
        """Draws the visual to the display"""
        raise NotImplementedError()


class Display(metaclass=abc.ABCMeta):
    def __init__(self) -> None:
        __visuals = []

    def add_visual( vis: Visual ):
        __visuals.append(vis)

    def draw() -> None:
        for visual in __visuals:
            visual.draw(self)
Run Code Online (Sandbox Code Playgroud)

图形显示.py

from graphics import *
from gfx.display import Display

class GraphicsDisplay(Display):
    def __init__(self, window : GraphWin) -> None: …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

Prometheus中标签的去除

我正在研究我们公司使用 Prometheus 从 Kubernetes 上运行的实验中收集统计数据。我们计划使用标签来标记我们的云/集群中特定实验的名称。这意味着我们将生成大量标签,随着时间的推移,这些标签会占用存储空间。当关联的时间序列过期时,标签也会被删除吗?

monitoring prometheus

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

NLog无法写入安装目录中的日志文件

我有一个记录的应用程序,当我将其部署到默认目录时,我没有得到任何基于文件的日志记录.似乎很清楚,原因是写入"c:\ program files(x86)\ blah"需要提升我的应用程序所没有的privelege级别.所以我最终告诉用户"安装到"c:\ blah"并且它会正常工作,但它确实很垃圾.任何替代方案?

nlog

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

正则表达奇怪

我有一个正则表达式来检查脚本语言中的有效标识符.它们以字母或下划线开头,后跟0个或更多字母,下划线,数字和$符号.但是,如果我打电话

Util.IsValidIdentifier( "hello\n" );
Run Code Online (Sandbox Code Playgroud)

它返回true.我的正则表达式是

const string IDENTIFIER_REGEX = @"^[A-Za-z_][A-Za-z0-9_\$]*$";
Run Code Online (Sandbox Code Playgroud)

那么"\n"如何通过?

c# regex

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

ST32 上的 FATFS,设备配置为 USB 驱动器

我目前正在使用 Micrium OS-II 开发 ST32 (STM32F103xC) 的应用程序。到目前为止,一切都很顺利,但我现在遇到了障碍,无法继续。

该板被配置为使用 SD 卡充当 USB 存储设备,以便主机 PC 可以复制设备上保存的文件。这工作正常,因为可以在 Windows 资源管理器中查看当前 SD 卡上的文件。

但是,当我尝试使用 FATFS 在程序中创建文件时,f_open() 返回 FR_NOT_READY。为了进一步研究,我构建了一些示例代码,将文件写入 SD,并且工作正常。所以我在程序中移动了编写代码,我发现如果我在启动操作系统多任务处理之前调用 f_open,它就会正常工作 - 我可以打开一个文件并写入它。在启用勾选之后(但在创建任务之前)立即放置代码会返回到获取 FR_NOT_READY。

我不确定我知道这意味着什么。写入文件的位置有限制吗?写作时是否必须禁用多任务处理?(哎哟,当然不是?)是否只是因为我无法写入当前用作 USB 设备的 SD 卡?

embedded iar micrium

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

C#Generics - 收藏列表

我有一个基于抽象Device类的类层次结构.所有设备的存储库看起来都像这样:

class Hardware
{
    public readonly DeviceCollection<Switch> Switches = ...;
    public readonly DeviceCollection<Light> Lights = ...;
}
Run Code Online (Sandbox Code Playgroud)

其中DeviceCollection工具IEnumerable<T> where T : Device.

我需要枚举所有设备,而我目前的糟糕代码就是这样做的

    protected override IEnumerator<Device> enumerate()
    {
        foreach (var light in Lights)
        {
            yield return light;
        }

        foreach (var @switch in Switches)
        {
            yield return @switch;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这并不健壮,因为有时我会添加一些新的硬件,一个新的DeviceCollection,很容易忘记在上面添加一个新的迭代.所以我认为一些反思会有所帮助 - 懒洋洋地建立一个DeviceCollection字段列表并贯穿其中.但该清单的声明是什么样的呢?

private List<DeviceCollection<T>> _collections;
Run Code Online (Sandbox Code Playgroud)

不编译.也没有

private List<DeviceCollection> _collections;
Run Code Online (Sandbox Code Playgroud)

我如何声明此列表?


推论:Tim S的答案 - IEnumerable是协变的 - 解决了我的直接问题.剩下一个小故障(我肯定有一个更简单的解决方案!)是如何进行反射.这是我丑陋丑陋的丑陋黑客:

_collections = new List<IEnumerable<Device>>(); …
Run Code Online (Sandbox Code Playgroud)

.net c# generics

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

Linux I2C 文件句柄 - 缓存安全吗?

我刚刚开始研究(嵌入式)linux(准确地说是 Beaglebone Black)上的 I2C 支持。既然是 linux,一切都是一个文件,所以 I2C 也是一个文件也就不足为奇了。

int file = open( "/dev/i2c-0", O_RDWR );
Run Code Online (Sandbox Code Playgroud)

然后通过 选择该总线上的实际地址ioctl()。我的问题是 -在应用程序执行期间缓存是否安全甚至合法file?在我天真的眼睛看来,每 250 毫秒打开一个资源进行读取的开销对内核来说是不必要的压力。所以打开是有效的,然后ioctl()只要我需要就可以用来切换地址,还是必须close()在读写之间使用描述符?

linux i2c embedded-linux

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

用于发送图像数据的串行协议

我们有一个定制的微控制器卡(ST32/ARM Cortex M3),它附带一个摄像头.相机以1280x1024分辨率捕获10位灰度.我们需要通过串行将图像数据发送回PC主机.这是一大堆数据; 如果一切顺利,在115200波特转移将是3分钟.我实现的任何确保健壮性的东西似乎都会减慢该过程(例如分成块,校验块,如果损坏则要求重新发送).所以想知道人们如何在速度和完整性之间做出妥协.

我们目前看到的实际转移时间约为6分钟.我们不得不将UART波特率设置为一个奇怪的值 - 1036800 - 因为在115200有问题(PC运行在115200).我的软件比硬件更多,所以任何关于为什么会发生这种情况的想法都会有所帮助!

embedded serial-port

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

如何知道GRPC服务器是否可用

If a gRPC client starts before the server, it exits with an exception. The application I am working on starts a bunch of servers and clients (near) simultaneously, however, and I have to be robust with respect to execution order. If the client starts before the server, I want it to wait until the server shows up.

I modified the HelloWorld python client example as follows:

done = False
while not done:
    try:
        response = stub.SayHello(helloworld_pb2.HelloRequest(name='you'), timeout=1)
        print("Greeter client received: …
Run Code Online (Sandbox Code Playgroud)

python linux grpc

0
推荐指数
2
解决办法
3461
查看次数