SerialPort læser ikke alle data
Hej EksperterJeg har følgende kode som modtager 4 bytes fra com-porten og
gemmer indholdet i et arraylist objekt.
Mit problem er at serialPorten ikke modtager de 4 bytes hver gang men nogle gange springer en hel overførelsen over.
Programmet er testet mod en counter der tæller op til 16 hvor efter kun den ene byte skrives til en fil:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
0,1,2,3,4,5,6,7,9,11,13,15,1,3,5,7,
9,11,13,15,1,3,5,7,9,11,13,15,1,3,5,7,
9,11,13,15,1,3,5,7,9,10,11,12,13,14,15,0,
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,
Transmitteren er valideret mod en terminal hvor der ikke er nogle problemer, så jeg er meget sikker på at problemet ligger i C# koden.
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.One);
ArrayList lst = new ArrayList();
public serialInterface(Form1 form)
{
this.senderform = form;
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.ReadTimeout = 10000;
//port.WriteTimeout = 1;
port.Open();
}
public void setInitAngle()
{
StreamWriter SW;
SW = File.CreateText("C:\\Users/Public/Documents/tst.txt");
foreach (int i in lst)
{
SW.Write(i + ",");
}
lst.Clear();
SW.Close();
}
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);
if (bytes >= 4){
lst.Add((int) comBuffer[2]);
}
}
}
}