Zitat von
sternst
Ich bin verblüfft.
Ich habe null Erfahrung mit C#, aber wenn ich "c# serial" bei Google eingebe, bekomme ich haufenweise extrem viel versprechende Links. Mit ausführlichen Erklärungen und Beispiel-Codes und allem Drum und Dran. Deine C#-Kenntnisse reichen also nicht aus, um mit all dem irgendetwas anzufangen, aber du hast trotzdem das hier hin bekommen:
Also wer das kann, sollte doch mit so was Simplen, wie dem hier
Code:
using System.IO.Ports;
private static void SendSampleData() {
SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.Write("Hello World");
port.Close();
}
keine Probleme haben, oder?
Ja das habe ich auch schon durch kenne ich alles schon aber das ist nen Example welches schick und simple aussieht aber ich weiss immernoch nicht wie die
A einbinden soll und
B muss statt Hello World ja auch mein Datensatz da rein
c sollte mein Datensatz ja eine art Struktur aufweisen um in Bascom das alles wieder auseinander ziehen zu können
und das was ich geschafft habe ist nichts anderes als stundenlanges probieren und snippets kopieren und einbinden.
Wenn ich das in Stunden zusammenfassen sollte ca 100 Stunden ,... mit dem Serial hänge ich mindesten genauso lang daran Google behaupte ich habe ich komplett durch *grins*.
Ich bräuchte ne art Beispiel wie ich das einbinden soll und wie die Daten versendet werden dann würde ich auch verstehen was passiert.
Für den einen oder anderen von euch ist das sicher total einfach für mich ist das ne ganz schwere Sache. Muss ich gestehen. Ausserdem haben damals für meinen Flugsimulator die Leute schonmal etwas Programmiert und den Code frei zugänglich gemacht.
Am Ende ist es so das keiner mehr sich dafür interessiert "ich schon!"
Hier aus der Datei nun ein Auszug es war ein simples Example und ich habe es dann erweitert es ist nicht von mir!!!
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace SharedMemExample
{
public partial class frmMain : Form
{
/// <summary>
/// Shared instance of a Falcon shared memory reader
/// </summary>
private F4SharedMem.Reader _reader;
/// <summary>
/// Flag to indicate whether the polling loop should keep polling
/// </summary>
private bool _keepPolling = false;
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
//set the Falcon data format here
F4SharedMem.FalconDataFormats sharedMemFormat = F4SharedMem.FalconDataFormats.OpenFalcon;
//now create a new instance of the F4 Shared Memory reader, using this data format
_reader = new F4SharedMem.Reader(sharedMemFormat);
}
private void cmdStart_Click(object sender, EventArgs e)
{
cmdStop.Enabled = true;
cmdStart.Enabled = false;
_keepPolling = true; //set the flag that allows the polling loop to keep running
//wait for Falcon to be running or for the user to click the Stop button
while (!_reader.IsFalconRunning && _keepPolling)
{
Application.DoEvents(); //stay responsive to Windows events
}
//loop while Falcon is running and the keepPolling flag is set
while (_reader.IsFalconRunning && _keepPolling)
{
//read all variables from Falcon's shared memory
F4SharedMem.FlightData data = _reader.GetCurrentData();
if ((data.lightBits3 & 0x10000) != 0)
{
txtNoseGear.Text = "1";
} else {
txtNoseGear.Text = "0";
}
if ((data.lightBits3 & 0x20000) != 0)
{
txtLeftGear.Text = "1";
}
else
{
txtLeftGear.Text = "0";
}
if ((data.lightBits3 & 0x40000) != 0)
{
txtRightGear.Text = "1";
}
else
{
txtRightGear.Text = "0";
}
if ((data.lightBits & 0x8000) != 0)
{
txtRefuelRDY.Text = "1";
}
else
{
txtRefuelRDY.Text = "0";
}
if (data != null)//make sure we got something
{
//assign shared memory values to our text boxes so we can see
//what's in there!
txtFTIT.Text = data.ftit.ToString();
txtNozzle.Text = data.nozzlePos.ToString();
txtOil.Text = data.oilPressure.ToString();
txtRPM.Text = data.rpm.ToString();
//txtNoseGear.Text = data.gearPos.ToString();
//txtRefuelRDY.Text = data.lightBits.ToString();
}
else
{
txtFTIT.Text = "UNAVAILABLE";
txtNozzle.Text = "UNAVAILABLE";
txtOil.Text = "UNAVAILABLE";
txtRPM.Text = "UNAVAILABLE";
txtNoseGear.Text = "UNAVAILABLE";
txtRefuelRDY.Text = "UNAVAILABLE";
}
Application.DoEvents(); //stay responsive to Windows events
}
}
private void txtTest_TextChanged(object sender, EventArgs e)
{
}
private void Brows_Click(object sender, EventArgs e)
{
}
private void lblLeftGear_Click(object sender, EventArgs e)
{
}
private void Analog_Click(object sender, EventArgs e)
{
}
private void cmdStop_Click(object sender, EventArgs e)
{
}
}
}
Diesen Code habe ich schon versucht aber mein Resultat war nichts obwohl er selbsterklärend ist. Zu C# ich bin seit einer Woche dran und meine Zeit ist wirklich begrenzt da icheinen Sohn habe und meine Frau mich langsam erschlägt wegen dieser Sache Einer der Gründe warum ich das auch bezahlen würde wenn mir jemand die Anbindung realisiert.
Gruß Thomas
Lesezeichen