Я начал работать с 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, затем создать идентификатор, чтобы создать классы, которые вы используете в своей программе, а затем использовать программные библиотеки, и все отсутствует.
Начните загружать реализацию DDS, как OpenDDS или же Быстро RTPS. В дополнение к этому вы можете проверить раздел OpenDDS в этот сайт из рабочего примера OpenDDS с нуля.
Других решений пока нет …