데이터를 수신하여 richtextbox에 표시 할 수있는 양식이 있지만 직렬 포트에서 연속적으로 오는 데이터를 읽고 그에 따라 디코딩해야합니다.직렬 포트 데이터 수신 처리
예 : 36 0 0 0 1 0 0...., 36
은 이벤트가 시작되는 데이터 인 프레임 나머지 시작을 나타내는 데 사용되는 형식의 바이트 수입니다.
내 코드 : 코드 위
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
// get number off bytes in buffer
Bytenumber = serialPort1.BytesToRead;
// read one byte from buffer
ByteToRead = serialPort1.ReadByte();
this.Invoke(new EventHandler(DoUpdate));
}
는 데이터를 수신하고 이벤트를 발생하는 데 사용됩니다. 다음 이벤트에 대한 코드는 다음 이벤트 핸들러 I가 36
을 찾고받은 데이터
int w=0;
public void DoUpdate(object sender, System.EventArgs e)
{
byte[] t = new byte[Bytenumber];
for(int g=0; g<Bytenumber;g++)
{
t[g] = Convert.ToByte(ByteToRead);
}
w++;
// richTextBox1.Text += ByteToRead;
if (ByteToRead == 36)
{
for (int r = 0; r <= 73; r++)
{
if (ByteToRead == 0x01)
{
timer1.Start();
w++;
}
}
}
}
(즉, 프레임의 시작) 내가 버퍼로부터 1 초를 찾고 있다는 일단. 문제는 내가 36
(즉, 프레임 시작)을 얻을 때 동일한 데이터가 if 루프에 유지되고 어떤 경우에도 true가 아닌 1과 비교하려고 시도하는 것입니다. 버퍼가 36이되면 다음 바이트의 데이터를 읽어야합니다.