我开始使用C#,正在尝试测试dds应用程序的代码。我从以下地址获取它:http://www.laas.fr/files/SLides-A_Corsaro.pdf
using System;
/**********************************************************
* Definition for the TempSensorType
**********************************************************/
enum TemperatureScale{
CELSIUS,
KELVIN,
FAHRENHEIT
};
struct TempSensorType{
short id;
float temp;
float hum;
TemperatureScale scale;
};
#pragma keylist TempSensor id
/**********************************************************
* Main
**********************************************************/
static public void Main(string[] args){
dds::Topic<TempSensorType> tsTopic(TempSensorTopic);
dds::DataWriter<TempSensorType> dw(tsTopic);
dds::DataReader<TempSensorType> dr(tsTopic);
dds::SampleInfoSeq info;
TempSensorSeq data;
TempSensorType ts;
ts = new TempSensorType { 1, 25.0F, 65.0F, CELSIUS };
dw.write(ts);
ts = new TempSensorType { 2, 26.0F, 70.0F, CELSIUS };
dw.write(ts);
ts = new TempSensorType { 3, 27.0F, 75.0F, CELSIUS };
dw.write(ts);
sleep(10);
while (true){
dr.read(data, info);
for (int i = 0; i < data.length(); ++i)
std::cout << data[i] << std::endl;
sleep(1);
}
Console.WriteLine("Bonjour");
}
我开始理解每段代码的目的。但我有疑问
关于主要的前4行,以“ dds ::”开头的那些行,我认为它们是错误的-我得到的是“期望的标识符”。如果您能帮助的话,将不胜感激。
最佳答案
我认为这不是有效的DDS代码。似乎您缺少IDL定义(应该解释#pragma
)和代码。
首先,您必须先在.idl文件中创建主题,然后创建ID以创建您在程序中使用的类,然后再使用程序库,所有内容都将丢失。
开始下载DDS实现,例如OpenDDS或Fast-RTPS。除此之外,您还可以从头开始在可用的OpenDDS示例中检查this site中的OpenDDS部分。