Laden...

Forenbeiträge von bakerman Ingesamt 6 Beiträge

27.01.2012 - 16:25 Uhr

ach jez hab ich es verstanden was ihr meint ^^
ja sie werden als RC-5 Code von der schaltung interpretiert....

irgendwo muss ja der fehler liegen bzw etwas erweitert werden... nur wo ?

27.01.2012 - 15:45 Uhr

achso...
die daten werden in utf8 kodiert und denn in hex umgewandelt
also keine impuls oder pausezeiten

aber an nAnazhl-1 lag es nicht
im gegenteil ich bekomm wiie gerade garnichts mehr angezeigt *der springt noch nichmal in den datarecievedhandler rein ....

27.01.2012 - 15:12 Uhr

okay nehm ich -1 wieder raus ,danke 😉

ja die daten sind immer unterschiedlich...

was meinst du mit welcher art sind die daten ?
ich hab ne schaltung zusammen gelötet aber ich denke durch den serialport werden die interpretiert... (der SP ist auch drauf gelötet)

26.01.2012 - 16:09 Uhr

Ja sorry ist mir auch mal so eingefallen ^^



        private void btOpen_Click(object sender, EventArgs e)
        {
            try         
            {
                //SerialPort mySerialPort = new SerialPort("COM9");
                serialPort1.BaudRate = 9600;
                serialPort1.Parity = Parity.None;
                serialPort1.ParityReplace = ((byte)(0));
                serialPort1.StopBits = StopBits.One;
                serialPort1.DataBits = 7;
                serialPort1.DtrEnable = false;
             //   serialPort1.RtsEnable = false;
                serialPort1.Encoding = Encoding.UTF8;
                serialPort1.Handshake = Handshake.None; //send to hardware flow control.              
                serialPort1.PortName = "COM5";

                serialPort1.RtsEnable = true;
                
                

                serialPort1.Open();
                if (serialPort1.IsOpen)
                {
                    tbStatus.Text += "on \r\n";

                }
//                startReading();


            }         
            catch (Exception ex)         
            {             
                tbStatus.Text += ex.ToString() + "\r\n";             
            } 
        }

        private void startReading()
        {
            //tbStatus.Text = b[0].ToString();
            //tbStatus.Text += strIndata + " \r\n";   
            
            tbStatus.Text += nAnzahl.ToString() + " - " + strData + " \r\n";
        }


        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
     
        {
            nAnzahl = serialPort1.BytesToRead;
            
            byte  [] buffer = new byte [nAnzahl-1];
              
            this.serialPort1.Read(buffer, 0, nAnzahl -1);

              strData = ByteToHex(buffer);

            for ( int i = 0; i < buffer.Length; i++)
            {
                
                strData +=  buffer[i].ToString();

            }
              if (strData != String.Empty)
              {
                   
                  this.BeginInvoke(new SetTextCallback(SetText), new object[] {strData });

              }  


        }


        private string ByteToHex( byte [] buffer)

        {
            StringBuilder builder = new StringBuilder(buffer.Length * 3);

            foreach (byte data in buffer)

            {
                builder.Append(Convert.ToString(data, 16).PadLeft(2, '0').PadRight(3, ' '));
            }

            return builder.ToString().ToUpper();
        }

        private void SetText(string text)  
        {  
             this.tbStatus.Text += text + " \r\n";  
        }  



        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            if (!serialPort1.IsOpen)
            {
                tbStatus.Text += "off \r\n";

            }
        }

        private void btRead_Click(object sender, EventArgs e)
        {
            startReading();
          
        }

        private void bt_clear_Click(object sender, EventArgs e)
        {
            tbStatus.Clear();
        }

        private void serialPort1_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
        {
            if (strData != String.Empty)
            {
                this.BeginInvoke(new SetTextCallback(SetText), new object[] { "Error" });

            }

        }

        
        

    }



}

sooo ich denke so wird es klarer und danke schonmal im voraus 😉

25.01.2012 - 10:31 Uhr

Hallo zusammen,

ich habe folgendes Problem.
Und zwar programmiere ich zur zeit eine Fernbedienung, diese liest daten aus einem ir empfänger einer schaltung über einen USB auf serielport adapter.
Ich bekomme die daten zwar ausgelesen wenn ich auf eine taste der fernbedienung drücke, jedoch ist das problem dass ich keine reproduzierbaren ergebnisse erziele.
Das heißt wenn ich z.B. 2 mal die Taste 1 drücke, bekomme ich 2 mal unterschiedliche Zahlen angezeigt.
Ich habe mir eine methode geschrieben die ankommenden bytes in hexadezimale zahlen zu wandeln. Die ankommenden bytes werden in einem byte array gespeichert und ausgelesen.
Allerdings ist wie gesagt das Problem, dass ich immer wieder unterschiedlich zahlen angezeigt bekomme und keine reproduzierbaren Ergebnisse, um mit einem Tastendruck einen bestimmten Prozess auszuführen.

Ich freue mich über eure Hilfe und Ideen, wie ich da weiter komme.
Es ist das erste mal das ich so Hardwarenah programmiere und komme gerade an meine Grenzen.
Lg Bakerman