SerialPort
Hej EksperterJeg 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());
}
}
}
}