我刚刚开始使用Delphi 2010中的新单元IOUtils.pas,我发现它们将所有方法都放在Records(TFile, TPath, TDirectory)类函数和过程中.
在记录而不是类中执行此操作有什么好处吗?在这两种情况下都不需要任何变量或实例,但我不确定在内存消耗或性能改进方面是否有任何实际好处.
Ada有哪些RTOS可以使用开源/免费交叉编译器,支持多任务/多线程?
我有一个Atmel AT90USB162芯片,我想用Ada编程.我的第一个选择是使用AVR-Ada对其进行编程,但由于它没有任务支持,因此它是不可选择的(现在我对如何支持其任务转移没有任何线索).所以我需要一个更强大的方法.我想过使用QNX,但它比我的芯片架还要复杂得多.
我得到了AVR芯片支持uC/OS-II和FreeRTOS的信息.FreeRTOS或uC/OS-II有免费的Ada交叉编译器吗?
谢谢.
我正在尝试评估一些技术,以实现一些Ada模块与一些C++/OpenGL模块之间的通信过程.有一个(Windows XP)Ada应用程序使用COM与C++应用程序通信,但我打算将COM切换到新技术.提出了一些建议,例如直接套接字,DSA,Polyorb,Corba和DSS/Opensplice.
我个人喜欢COM,但由于迁移,我宁愿采用套接字选项,因为它简单,接口架构可以非常容易地实现.
那你觉得呢?您能否对这些技术发表评论,甚至建议其他更多?
非常感谢.
我该如何冻结任务?
我的意思是,如果我有任务
task body My_Task is
begin
accept Start;
loop
Put ("1");
Put ("2");
Put ("3");
...
Put ("n");
end loop;
end My_Task;
Run Code Online (Sandbox Code Playgroud)
有没有办法可以"冻结"当前状态的任务?例如,如果执行完成执行Put ("2");,我该如何冻结它,之后我可以将其转为继续?我想要从任务之外以及从外部开始冻结,命令它继续.
更新
如果我有规范,我可以肯定实施
type State_Type is
(RUN,
FROZEN);
task type My_Task (State : State_Type) is
entry Start;
end My_Task;
Run Code Online (Sandbox Code Playgroud)
身体
task body My_Task is
begin
accept Start;
loop
Put ("1");
Put ("2");
Put ("3");
...
Put ("n");
loop
if State = RUN then exit; end if;
end loop;
end loop;
end My_Task;
Run Code Online (Sandbox Code Playgroud)
但事实并非如此,因为我必须等待第n个Put指令行(即,任务实际上不会被冻结,因为内部循环将会运行).
也许C++和Java人员可以帮助我定义我将要解释的这个问题.关于如何表示实现动态标识符的三个主要分支的类的构造函数,我在Ada(你不需要知道它,我只是对这个概念感兴趣)有一个问题:
我要调用这个类Par_Class,并且是任何构造的对象调用Par_Obj.因此,当Par_Obj创建一个对象时(因此,数值被初始化,列表/堆栈分配了其他列表/堆栈或为空并且保留了线程执行的内存范围),OS自动开始执行新线程与我的主应用程序并行(现在他们争夺系统资源).但是为了简化示例,让我们假设我有一个带有整数的类和一个指向字符串的指针.
例如,在C++中,我可以编写代码(如果我做错了,请纠正我)
class Par_Class {
public:
Par_Class (int aValue, const std::string & aName);
private:
int theValue;
std::string theName;
};
Run Code Online (Sandbox Code Playgroud)
构造函数可以实现为
Par_Class::Par_Class (int aValue, const std::string & aName)
: theValue(aValue)
, theName(aName)
{
}
Run Code Online (Sandbox Code Playgroud)
最后我们可以实例化这个类
Par_Class Par_Obj (23, "My object is this");
Run Code Online (Sandbox Code Playgroud)
并确保此构造方法属于Par_Class类,而不属于任何其他类.
同样,在Java中,我们可以编码
public class Par_Class {
private int theValue;
private String theName;
public Par_Class (int aValue, String aName){
theValue = aValue;
theName = aName;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Arduino Mega(ATmega2560)上启用PWM,但我遇到了一些问题.
首先,我正试图在Ada中编程.我希望将三个Timer3通道与FastPWM一起使用,所以我写道
procedure Main is
begin
-- Nullify Timer3 buffers
TCCR3A := 0;
TCCR3B := 0;
TCCR3C := 0;
-- Waveform Generation Mode
-- Fast PW, 8-bit, TOP = 0x00FF, Update OCR3x at BOTTOM, TOV3 Flag Set on TOP
-- => WGM33|WGM32|WGM31|WGM30 = 0|1|0|1
TCCR3A := TCCR3A or TCCR3A_WGM30;
TCCR3B := TCCR3B or TCCR3B_WGM32;
-- Compare Output Mode:
-- Fast PWM, non-inverting mode
-- => COM3A1|COM3A0|COM3B1|COM3B0|COM3C1|COM3C0 = 1|0|1|0|1|0
TCCR3A …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Embarcadero RAD Studio XE中安装Comport软件包.对于Delphi表单,托盘出现所有comport模块(并且功能齐全,我非常肯定),但是当我创建一个C++表单时,会出现comport pallete,但内部没有模块.
我还在Borland C++ Builder 6.0上安装了旧版本的comport,它运行得很好,所以我也想在Embarcadero的RAD上使用它.
有人知道我该如何解决它?我的意思是,如何让cport模块出现在C++表单模式中?
谢谢.
更新
只是注释,设置"生成所有C++ Builder文件(包括包libs)"的how-2路径如下:
设置
项目>>选项>> Delphi编译器>>输出 - C/C++ >> C/C++输出文件生成>>生成所有C++ Builder文件(包括包libs)
我有一个AT90USB162 AVR芯片,我想运行多任务RTOS,所以我正在评估可能的RTOS与我的AVR芯片一起使用.AVR支持哪些多任务RTOS?也许是QNX?(是否可以在AVR微芯片上运行QNX内核?).
提前致谢.
我正在尝试为 https 网站推送制作一个简单的解析器,因此尝试遵循http://rosettacode.org/wiki/HTTP#Ada 中的示例,只需更改网站的地址即可。
所以我试过了
with Ada.Text_IO; use Ada.Text_IO;
with AWS.Client;
with AWS.Response;
procedure Main_Other is
begin
Put_Line (AWS.Response.Message_Body
(AWS.Client.Get
(URL => "https://google.com")));
end Main_Other;
Run Code Online (Sandbox Code Playgroud)
但我有一个例外
引发的 PROGRAM_ERROR :aws-client.adb:398 finalize/adjust 引发的异常 [2020-04-02 10:41:20] 进程以状态 1 退出,经过时间:00.80s
那么,关于如何解决这个问题的任何想法?
我想解析网站中某些表的当前状态,类似于在 Python 中制作类似的东西
import pandas as pd
def retrieve_json(json_url):
return pd.read_json(json_url)
Run Code Online (Sandbox Code Playgroud)
我想以最简单的方式编写此解决方案,甚至最好不要依赖 AWS。
请,谢谢。
我需要创建一个备份脚本(批处理和bash),我想创建一个自动svndump来创建文件名转储<repository_name>_<repository_rev>.zip.
示例:我的存储库名称是MySplice,它是在rev上.234(我不知道,我不想检查存储库路径),所以我想运行一个脚本backup.bat或者backup.sh它创建文件mysplice_r234.zip,这是我的存储库的转储.
那么,我该怎么做呢?谢谢.
ada ×6
avr ×3
delphi ×2
rtos ×2
algorithm ×1
android ×1
arduino ×1
avr-gcc ×1
bash ×1
batch-file ×1
c ×1
c++ ×1
c++builder ×1
com ×1
corba ×1
delphi-2010 ×1
delphi-xe ×1
dss ×1
http-post ×1
https ×1
java ×1
multi-touch ×1
processing ×1
push ×1
pwm ×1
qnx ×1
real-time ×1
rest ×1
rtems ×1
sockets ×1
svn ×1
task ×1
tortoisesvn ×1