المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : how to receive a frame in Serial port by FiFo buffer



C# Programming
05-12-2009, 10:31 AM
I have a joystick.I write this code to control my device.but my application has delay after several minute of begin
my receive code:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{

int count = serialPort1.BytesToRead;
byte[] receive = new byte[count];
serialPort1.Read(receive, 0, count);

foreach (byte data in receive)
{



receivedbyte.Enqueue(data);

}

try
{
ReceiveFrameThread.Resume();
}
}

void FrameMaker()
{


while (permission)
{
bool stop = false;
byte[] tempX = new byte[7];
try
{

do
{
lock (receivedbyte.SyncRoot)
{

if (receivedbyte.Count > 7 && !stop)
{
tempX[0] = (byte)receivedbyte.Dequeue();

}
}
} while (tempX[0] != 0xfe);
lock (receivedbyte.SyncRoot)
{

for (byte i = 1; i 0)
tempX[i] = (byte)receivedbyte.Dequeue();

}
}
if (permission)
ReceiveFrameThread.Suspend();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

}
FrameProcess(tempX);
}

}

:
void Start()
{
serialPort1.Open();
ReceiveFrameThread = new Thread(new ThreadStart(FrameMaker));
permission = true;
ReceiveFrameThread.Start();


}


&



plz say to me how to dicrease this delay