c# shared memory

Status
Niet open voor verdere reacties.

MartijnHoving

Nieuwe gebruiker
Lid geworden
7 feb 2015
Berichten
3
Hallo luitjes

Ik ben net begonnen om c# te leren.

Nu wil ik bepaalde gegevens uit een een vliegsimulatie halen en van die gegevens gebruik gaan maken in een ander programma.
De ontwikkelaars van de vliegsimulatie maken gebruik van shared memory en stellen hiervoor de source code voor beschikbaar.

Nu probeer ik uit de vliegsimulatie een waarde te halen van de motor gebruik makend van die source code.

Ergens doe ik iets fout maar kan er niet uit komen wat ik nu fout doe.(Nu ben ik een beginner op c# gebied) .
Code:
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using F4SharedMem;
using F4SharedMem.Headers;


namespace ConsoleApplication1
{
    class Program
    

 
    
    {
        public static void Main(string[] args)
            

        {

            Reader MyReader = new Reader();
            if (MyReader.IsFalconRunning)
            {
             

                
                FlightData mysharedmem = MyReader.GetCurrentData();
                MyRpm = mysharedmem.rpm;
                Console.WriteLine(MyRpm.ToString());
                Console.ReadKey();


            }

            Console.ReadKey();
        }

      
    }
}
Na het compilen krijg ik de foutmelding MyRpm does not excist in current context.
Is hier iemand die mij op de goede weg kan helpen.
Alvast bedankt.
 
Laatst bewerkt:
Je gebruikt MyRpm als een variabele, maar je definieert hem nergens. Probeer bijvoorbeeld eens het onderstaande:

[cpp]
// ...
var MyRpm = mysharedmem.rpm;
[/cpp]
 
Bedankt CoD_NL

Het is gelukt.

Nu wil ik de verkregen data over een seriele poort sturen.
Nu heb ik hier de code voor aangepast.
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using F4SharedMem;
using F4SharedMem.Headers;
using System.IO.Ports;
using System.IO;

	
namespace RPMreader

{
    
    
    class Program
    {
       static void Main(string[] args)
          
            
       {
           SerialPort mySerialPort = new SerialPort();
            
            Reader Myreader = new Reader();            
            if (!mySerialPort.IsOpen)
            {
                mySerialPort.Open();
                mySerialPort.BaudRate = 9600;
                mySerialPort.PortName = "COM10";
                mySerialPort.Open();            
                              
            }
            while (Myreader.IsFalconRunning)
            {
                
                             
                              
                FlightData mysharedmem = Myreader.GetCurrentData();
                float MyRpm = mysharedmem.rpm;                               
                Console.Write("\r"+MyRpm);
                mySerialPort.Write(MyRpm.ToString());
            }
            Console.ReadKey();
         

        }
        

          

     }
 }

Ik blijf een melding krijgen dat mijn poort (com10) gesloten is.
Ik weet zeker dat dit niet zo, mijn arduino gebruikt namelijk poort 10.
Kan iemand mij nogmaals vertellen wat ik fout doe?
 
Ik gok dat nu de standaard poort en baudrate gebruikt worden, gezien je de eerst een Open() doet alvorens de gewenste instellingen te specificeren om vervolgens nogmaals een Open() te doen (ik kan me zomaar voorstellen dat hier bijvoorbeeld gecontroleerd wordt of niet al een open verbinding is). Probeer dus eens iets als:

[cpp]
var serialPort = new SerialPort();
serialPort.BaudRate = 9600;
serialPort.PortName = "COM10";
// je kan voor het bovenstaande ook de constructor gebruiken: var serialPort = new SerialPort("COM10", 9600);
serialPort.Open();
[/cpp]
 
Het is gelukt maar het lag niet aan mijn code.
Ik heb putty open staan om te zien of er wat gebeurd op de seriele poort.
Maar op de 1 of andere manier gaat dat niet goed en krijg ik dus bovengenoemde melding.
Ik heb van mijn arduimo een seriele monitor gemaakt en zag hieraan dat er communicatie plaats vond.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan