我正在调查Microsoft Message Queues以进行进程间跨网络消息传递.但是,当我收到一个消息,我不知道先验什么对象我得到的类型,所以代码
queue.Formatter = new XmlMessageFormatter(new Type[] { typeof(Wibble) });
Run Code Online (Sandbox Code Playgroud)
在收到消息之前无法应用,因为我不知道它是否是一个Wibble.那么我如何收到不同的消息类型?
我们目前正在开发BeagleBone Black的应用程序(使用标准的Angstrom发行版).它在GDB(由Netbeans远程控制)下运行一段时间(5-10分钟)非常愉快,但在一些相对随机的时间点会冻结 - 心跳LED停止闪烁并需要完全重启.
一种可能性是它只是造成这种情况的(USB)设备的数量.我们通过FTDI串行链接连接到我的开发PC(有一个客户端应用程序与我的BBB服务器通信).有一个4路FTDI集线器,其上有多个设备(当前为3个),另一个FTDI连接与另一个硬件连接.另外,两个I2C设备.加上鼠标和键盘.
当然,除了传闻之外,我没有任何其他证据表明这是USB导致的问题.我的软件没有引起任何信号,日志文件告诉我更多信息.我已经运行了系统监视器应用程序,看看我是否正在泄漏内存,但它看起来表现良好且稳定(尽管CPU确实在上升).我想找到一种方法来了解失败的原因,并希望得到一些帮助.
我想在我的嵌入式 Linux 桌面启动时运行一个程序,就像 Windows 在“启动”文件夹中运行程序一样。我怎样才能做到这一点?
具体来说,我的目标硬件是 Beaglebone Black,Debian 变体(rev C 板)。窗口管理器是默认的。
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) 我正在研究我们公司使用 Prometheus 从 Kubernetes 上运行的实验中收集统计数据。我们计划使用标签来标记我们的云/集群中特定实验的名称。这意味着我们将生成大量标签,随着时间的推移,这些标签会占用存储空间。当关联的时间序列过期时,标签也会被删除吗?
我有一个记录的应用程序,当我将其部署到默认目录时,我没有得到任何基于文件的日志记录.似乎很清楚,原因是写入"c:\ program files(x86)\ blah"需要提升我的应用程序所没有的privelege级别.所以我最终告诉用户"安装到"c:\ blah"并且它会正常工作,但它确实很垃圾.任何替代方案?
我有一个正则表达式来检查脚本语言中的有效标识符.它们以字母或下划线开头,后跟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"如何通过?
我目前正在使用 Micrium OS-II 开发 ST32 (STM32F103xC) 的应用程序。到目前为止,一切都很顺利,但我现在遇到了障碍,无法继续。
该板被配置为使用 SD 卡充当 USB 存储设备,以便主机 PC 可以复制设备上保存的文件。这工作正常,因为可以在 Windows 资源管理器中查看当前 SD 卡上的文件。
但是,当我尝试使用 FATFS 在程序中创建文件时,f_open() 返回 FR_NOT_READY。为了进一步研究,我构建了一些示例代码,将文件写入 SD,并且工作正常。所以我在程序中移动了编写代码,我发现如果我在启动操作系统多任务处理之前调用 f_open,它就会正常工作 - 我可以打开一个文件并写入它。在启用勾选之后(但在创建任务之前)立即放置代码会返回到获取 FR_NOT_READY。
我不确定我知道这意味着什么。写入文件的位置有限制吗?写作时是否必须禁用多任务处理?(哎哟,当然不是?)是否只是因为我无法写入当前用作 USB 设备的 SD 卡?
我有一个基于抽象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) 我刚刚开始研究(嵌入式)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()在读写之间使用描述符?
我们有一个定制的微控制器卡(ST32/ARM Cortex M3),它附带一个摄像头.相机以1280x1024分辨率捕获10位灰度.我们需要通过串行将图像数据发送回PC主机.这是一大堆数据; 如果一切顺利,在115200波特转移将是3分钟.我实现的任何确保健壮性的东西似乎都会减慢该过程(例如分成块,校验块,如果损坏则要求重新发送).所以想知道人们如何在速度和完整性之间做出妥协.
我们目前看到的实际转移时间约为6分钟.我们不得不将UART波特率设置为一个奇怪的值 - 1036800 - 因为在115200有问题(PC运行在115200).我的软件比硬件更多,所以任何关于为什么会发生这种情况的想法都会有所帮助!
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) c# ×3
linux ×3
embedded ×2
python ×2
.net ×1
debian ×1
generics ×1
grpc ×1
i2c ×1
iar ×1
micrium ×1
monitoring ×1
msmq ×1
nlog ×1
prometheus ×1
python-3.x ×1
regex ×1
serial-port ×1