我被赋予了修复用C/C++编写的嵌入式操作系统的任务.正在使用的当前线程调度程序与循环调度非常相似,不同之处在于它缺少一个非常重要的特性,即中断线程然后返回执行的能力,从而创建可执行的"切片"执行时间.
我的问题是,如何中断运行代码,执行另一个任务然后优雅地返回执行?我相信这种行为需要特定于架构的汇编程序.这是操作系统将运行的芯片:http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code = MPC860
另一方面,这是航空电子软件,因此它必须是"确定性的".除此之外,没有堆使用,所有内存必须有界限.
当前系统是"周期性过程",其中下一个任务必须等待第一个任务完成.这很简单,如果操作系统的一部分崩溃,让我们说ATN堆栈,那么整个操作系统就会陷入困境.(在这里插入坠毁的飞机......虽然这是B级软件,这意味着如果系统飞机不会崩溃.)
保持简单,我有一个服务器和客户端.一旦给出问题,服务器就会逐个发送问题,并向客户端发送答案.
那么,你会说这个应用程序是实时的吗?
在图像处理应用程序中什么是实时的?33 fps是实时的吗?是20 fps实时?如果33和20 fps被认为是实时的,那么1或2 fps也是实时的吗?
任何人都可以投入一些光.
我对 Java 实时系统开发非常陌生。我在 OpenSuse 中创建 Java 文件并编译它。我收到错误:
无法解析导入 javax.realtime。
我一直在寻找 RealTime JAR 文件。我尝试了很多网站,例如FindJar.com、Oracle网站(Sun)等,但都找不到。
知道如何解决这个问题吗?
我有一个带评论功能的新闻项目.任何添加评论的人都可以在不重新加载页面的情况下立即查看他的评论(使用ajax).问题是当user1(例如)对post1发表评论时,只有user1可以立即看到他的评论,但所有其他用户需要重新加载页面才能看到user1的评论.我怎么解决这个问题 ?
我用来获取评论的代码:
$(function () {
$("#AddComment").click(function () {
var CommentText = document.getElementById("CommetForm").innerHTML;
var UserName = document.getElementById("UserName").innerHTML;
var PostId = document.getElementById("PostId").innerHTML;
$.ajax({
url: '/PostComment/AddComment',
type: 'POST',
dataType: 'json',
cache: false,
data: { "PostId": PostId, "CommentText": OrignalCommentText },
success: function (data)
{
if (data == "P") // Commet Stored on database successfully
{
document.getElementById("PostComments-" + PostId).innerHTML +=
"<li>" +
"<div class='media'>" +
"<div class='media-body'>" +
"<a href='' class='comment-author'>"+UserName+"</a>" +
"<span class='CommetText' id='CommentText-" + PostId + "'>" + CommentText + "</span>" + …Run Code Online (Sandbox Code Playgroud) 由于 CSMA-/CA/CD,我知道当前的以太网技术和它的非确定性行为。我还看到很多关于时间敏感网络的新闻。
谁能简要解释一下 TSN 如何改变或增强定时、同步,它与 IEEE 1588(PTP) 等有什么关系?
有人告诉我这属于编程,而不是信号处理子交换。
有没有办法在 Windows 中对实时音频实施频谱分析(特别是 FFT)?
我希望能够从麦克风中读取音频,并在屏幕上显示结果傅立叶变换。
如果发生一组特定的 FFT 特征,我可以执行程序也会很有用。
谢谢你们!
我正在尝试使用C++实时显示传感器数据.传感器的输出高达1kHz,但gnuplot仅绘制大约10Hz的数据.
我正在使用gnuplot-iostream(http://stahlke.org/dan/gnuplot-iostream/)将数据从我的C++脚本传输到gnuplot,这很简单.但似乎绘图过程很慢,需要1/10秒来更新绘图.有没有办法增加这个频率?
编辑:这是一个简单代码的例子
#include <vector>
#include <utility>
#include <gnuplot-iostream/gnuplot-iostream.h>
typedef std::pair<double, double> Point;
int main() {
std::vector<Point> data;
double x = 0.0;
double y = 0.0;
double c = 0.0;
Gnuplot gp;
gp << "set terminal wxt size 800, 400\n";
while (x < 10000) {
x += 0.01;
y = sin(x);
c += 0.01;
data.push_back(Point(x,y));
//std::cout << x << std::endl;
if (c > 0.1) {
gp << "plot '-' with lines title 'sin(x)'\n";
gp.send1d(data);
c = 0.0;
} …Run Code Online (Sandbox Code Playgroud) 在 C++ 中是否可以让函数以实时安全的方式返回多态对象?
对于上下文:我想实现一个函数,该函数返回有关系统中检测到的错误的信息。我的第一个天真的方法是像这样实现它(简化):
class Error { ... }; // abstract base class
// different error cases:
class FooError: public Error { public: FooError(int foo) {...}};
class BarError: public Error { public: BarError(int bar, float baz) {...}};
// check if there is an error and return the first one detected
std::shared_ptr<Error> get_error() {
if (is_error_foo()) {
return std::make_shared<FooError>(42);
}
if (is_error_bar()) {
return std::make_shared<BarError>(13, 3.14);
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是该代码适用于实时关键系统,因此不应使用动态内存分配。因此我不应该使用make_shared. 是否有另一种方法来实现上述不使用动态内存分配(或其他不应该在实时代码中完成的事情)?
我只是用计时器创建一个线程。即使我导入了我需要的所有库。它一直告诉我们没有对函数的引用。
正是它说的,timer_create(...)并且没有timer_settime(...)被引用。
这些是我的进口:
#include <stdio.h>
#include <stddef.h>
#include <sched.h>
#include <sys/mman.h>
#include <sys/time.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <time.h>
Run Code Online (Sandbox Code Playgroud)
这是我使用这些函数的线程:
void *Turismo(){
const struct timespec periodo = {per_turismos_sec,per_turismos_nsec};
struct sigevent event;
timer_t timer;
struct itimerspec its;
sigset_t sigset;
int signum;
event.sigev_notify = SIGEV_SIGNAL;
event.sigev_signo = SIGRTMAX;
event.sigev_value.sival_ptr = &timer;
if(timer_create(CLOCK_MONOTONIC,&event,&timer)!=0) error();
its.it_interval = periodo;
its.it_value.tv_sec = 0;
its.it_value.tv_nsec = 1;
if(timer_settime(timer,0,&its,NULL)<0) error();
if(sigemptyset(&sigset)<0) error();
if(sigaddset(&sigset,SIGRTMAX)<0) error();
while(1){
sigwait(&sigset,&signum);
// ESPECIFICACION DE LA …Run Code Online (Sandbox Code Playgroud) 我有一个运行在Windows 7/10上的实时视频处理应用程序,它具有4个不同的处理步骤。这些步骤中的每个步骤当前都在WPF任务中运行,并且我已尽可能地避免了视频数据的复制,我只进行了两次复制操作。视频的捕获以及随后的视频存储由基于COM的SDK处理。如果将每个步骤都变成一个单独的exe,并使用共享内存方案在exe之间移动数据,我会看到性能的提高吗?还是使用线程而不是使用WPF任务?任何人都有类似这样的硬数据吗?
谢谢,道格
我想通过WebSocket与其他Web应用程序进行实时通信来构建Web应用程序.
为了使WS成为一个连接,最好构建SPA应用程序.
不幸的是,Angular 2 + Asp.Net Core似乎并不清晰和稳定.此外,我想使用Asp.Core库,如Identity
可能是更好的使用ViewComponents并根据WS消息重新加载它们而无需重新加载View?
关于更好的应用架构的任何想法
目前,我正在尝试使用python访问操作系统时钟。
有什么方法可以让我在这个确切的时间访问时钟值,并获得返回返回的字符串,比如说太平洋标准时间12:00:00 am或只是时间?时区是一个加号:)
我目前已经这样做了,time.clock()但没有任何东西可以给我带来价值:/