Avatar billede freesite Nybegynder
05. oktober 2010 - 08:16 Der er 1 løsning

SerialPort

Hej Eksperter

Jeg har følgende kode som modtager 4 bytes fra com-porten og skriver indholdet til en label i form-klassen hvor efter den venter på 4 nye bytes.

Mit problem er at serialPorten ikke modtager de 4 bytes hver gang.

Programmet er testet mod en counter og resultatet ser sådanne ud:
1556, 1557, 1558, 1559, 1560, 1561, 1563, 1565, 1567, 1569, 1571, 1573, 1575, 1577, 1579, 1581, 1583, 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1599, 1601, 1603, 1605, 1606, 1607, 1608, 1609, 1610, 1611,

Håber der er nogle som kan hjælpe

Med venlig hilsen Mads


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Collections;
using System.IO;


namespace WindowsFormsApplication1{
    class serialInterface{
        Form1 senderform = null;
        private SerialPort port = new SerialPort("COM3", 57600, Parity.None, 8, StopBits.Two);

        public serialInterface(Form1 form)
        {
            this.senderform = form;
            port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
            port.ReadTimeout = 1;
            port.WriteTimeout = 1;
            port.Open();
        }


        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) {
            //retrieve number of bytes in the buffer
              int bytes = port.BytesToRead;
            //create a byte array to hold the awaiting data
            byte[] comBuffer = new byte[bytes];
            //read the data and store it
            port.Read(comBuffer, 0, bytes);
            port.DiscardInBuffer();

            int Right = 0, Left=0;
            //Insure that atleast 4 byte is avalible
            if (bytes >= 4){
                Right = BitConverter.ToUInt16(comBuffer, 2);
                Left = BitConverter.ToUInt16(comBuffer, 0);
                lst.Add(Right);
                senderform.UpdateAngleText((Right + "-" + Left).ToString());
            }
        }
    }
}
Avatar billede freesite Nybegynder
08. oktober 2010 - 11:56 #1
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester