Witam robię program w C# program do sterowania anteną ,przebieg pracy programu Orbitron wysyła w jakiś sposób do sterownika MyDDE http://www.stoff.pl/orbitron/files/mydde.zip dane o satelicie azymut elewacje nazwę oraz uplink i downlink czyli częstotliwości pracy satelity znalazłem nazwy tych zmiennych w sterowniku MyDDE w pliku main.pas , następnie mój program ma przechwycić te dane i przekierować na port szeregowy
Teraz objaśnię w czym problem
Po pierwsze nie wiem w jaki sposób mój program może odebrać dane z MyDDE
Po drugie program pracuje w trybie manualnym gdzie mogę ręcznie ustawić parametry oraz w trybie śledzenie wszytko działa na bazie arduino i podpiętego do niego serva jak na razie przesłałem w trybie manualnym albo elewacje albo azymut jak przesłać i azymut i elewacje czy mam kupić drugie arduino i dać je pod inny port i zrobić o samo
Kod z Arduino
#include <Servo.h>
Servo myservo;
int val;
void setup()
{
Serial.begin(9600);
myservo.attach(9);
}
void loop()
{
}
void serialEvent()
{
val = Serial.parseInt();
if(val!=0)
{
myservo.write(val);
}
}
Kod programu C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
namespace Servotest
{
public partial class Form1 : Form
{
SerialPort port;
Timer t = new Timer();
public Form1()
{
InitializeComponent();
init();
}
private void init()
{
port = new SerialPort();
port.PortName = "COM3";
port.BaudRate = 9600;
try
{
port.Open();
}
catch (Exception e1)
{
MessageBox.Show(e1.Message);
}
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
if (port.IsOpen)
{
port.WriteLine(trackBar1.Value.ToString());
label4.Text = "Nachylenie Wertykalne = " + trackBar1.Value.ToString();
}
}
//kod do zegara
private void Form1_Load(object sender, EventArgs e)
{
t.Interval = 1000;
t.Tick += new EventHandler(this.t_Tick);
t.Start(); //start timera
}
private void t_Tick(object sender, EventArgs e)
{
int hh = DateTime.Now.Hour;
int mm = DateTime.Now.Minute;
int ss = DateTime.Now.Second;
string time = "";
if (hh < 10)
{
time += "0" + hh;
}
else
{
time += hh;
}
time += ":";
if (mm < 10)
{
time += "0" + mm;
}
else
{
time += mm;
}
time += ":";
if (ss < 10)
{
time += "0" + ss;
}
else
{
time += ss;
}
//aktualizacja pola
label2.Text = time;
}
}
}
Z góry dziękuje