3
COM 포트에서 데이터를 읽고 화면에 표시하는 프로그램을 작성하고 있습니다. 데이터 읽기 빈도가 낮 으면 완벽하게 작동하며 하루 종일 실행할 수 있습니다. 그러나 매초마다 데이터가 전송 될 때마다 프로그램은 30 분마다 중단됩니다. 오류 코드는 c0000005 액세스 위반입니다.C# 직렬 포트 스레딩, 응용 프로그램이 잠시 후 충돌이 발생했습니다.
void Start()
{
_serialPort = new SerialPort(TempPortName, 9600, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.ReadTimeout = 1000;
_serialPort.ReadBufferSize = 100000;
readThread = new Thread(Read);
readThread.Start();
}
void Read()
{
string MessageSection = "";
char[] end = {'\r'};
//string MessageSection = "";
while (readData)
{
Thread.Sleep(10);
if (_serialPort.IsOpen)
{
string message = "test";
try
{
message = ((char)(_serialPort.ReadByte())).ToString();
}
catch
{
message = "";
}
if (message != "")
{
message = MessageSection + message;
string[] MessageArray = message.Split(end);
if (!message.EndsWith("\r"))
{
MessageSection = MessageArray[MessageArray.Length - 1];
}
else
{
if(message.Length>0)
{
doSomething();
}
MessageSection = "";
}
}
else {
}
}
else
{
try
{
_serialPort.Open();
}
catch
{
print("Error");
}
}
}
}
유니티 3D를 사용하고 있습니다. 버퍼링에 관한 것입니까?
현재'try' /'catch' 블록을 제거하여 시작입니다 - 나쁜 관행 블록 catch' 포괄'사용하고 이것들이 숨어 수 문제의 진정한 이유. – Enigmativity