RFID를 사용하는 등록 시스템과 같은 프로젝트가 있습니다. 사용자가 등록 모드를 사용할 때, 표시된 각 카드는 한 번만 저장해야합니다. 이를 위해 배열을 사용하고 배열에있는 동일한 코드를 검사하여 이미 존재하는지 확인합니다. 하지만 배열 인덱스를 늘리는 데 문제가 있습니다. 내가 plIndex
를 사용하는 경우, 그것은 첫 번째 카드를 받아 다시이 핸들러를 호출 중지 것 같아, 아래의 코드에서직렬 포트에서 다른 값만 수신
string rx_data = "";
string last_data = "";
string[] availablePlayers = {""};
int plIndex = 0;
: Form1 클래스에
, 나는 초기화가 있습니다.public void WriteRxData(object sender, SerialDataReceivedEventArgs e)
{
if (connection.IsOpen && !cardSaveCon.IsOpen)
{
try
{
rx_data = connection.ReadLine(); // check how the data ends
if (!availablePlayers.Any(rx_data.Contains))
{
availablePlayers[plIndex] = rx_data;
receivedData.AppendText(rx_data);
plIndex++;
}
}
catch (Exception err)
{
connection.Close();
}
}
대신 하드 코딩 된 색인 값을 사용하면 작동합니다. 다른 언어에서도 작동해야하므로이 문제를 어떻게 처리해야하는지 알고 싶습니다. 나는 C#에 익숙하지 않아 내가 놓친 부분이있을 수있다.
질문 btw에 대한 칭찬은 잘 문서화했으며 도움을 쉽게했습니다. –
도움을 주셔서 감사합니다,하지만 왜 여기에 OutOfRange에 대해 불평하는지 이해할 수 없습니다. 'savedCards.AppendText (last_data + "= \ n");' – www
. 내가 추천 한대로 try/catch를 제거하여 예외가 던져지는 곳을 확인하십시오. 그런 다음 availablePlayers 배열의 문제도 확인해야합니다. * one * 요소를 가지고 있으므로 두 번째 요소를 설정하려고하면 klaboom이 발생합니다! –