Mikixx Ответов: 3

Как просматривать один символ в последовательный порт с#


привет
я ищу чтение одного символа из последовательного порта
потому что за тонкую черту я ставлю характер "*"
извините за английский язык

Что я уже пробовал:

Carattere = serialPort1.ReadExisting();
if (Carattere=="*")
{
   BenstartRobotTest.TestForm.Globals.Test.ListaList.Items.Add(Stringa);
   Stringa = "";
}
else
{
   Stringa = Stringa + Carattere;
}

3 Ответов

Рейтинг:
1

OriginalGriff

Вместо вызова ReadExisting, который считывает все ожидающие данные, используйте Последовательный порт.Способ ReadChar (Системы.ИО.Порта) | Майкрософт Документы[^] который просто извлекает только следующий символ.

char c = serialPort1.ReadChar();
if (c == '*')
   {
   ...
   }


Mikixx

я пробую это, но очень медленно и не очень хорошо бегаю

Рейтинг:
1

CPallini

Попробуй:

string sinput = serialPort1.ReadExisting();
int pos = sinput.IndexOf('*');
if ( pos > 0 )
{
  Stringa = Stringa + sinput.Substring(0, pos);
  BenstartRobotTest.TestForm.Globals.Test.ListaList.Items.Add(Stringa);
  Stringa = sinput.Substring(sinput.Length - pos - 1);
}
else
{
   Stringa = Stringa + sinput;
}


Рейтинг:
0

Mikixx

int prova = serialPort1.ReadChar();
           Carattere = ((char)prova).ToString();
           if (Carattere != "*")
           {
               Stringa = Stringa + Carattere;
           }
           else
           {
               BenstartRobotTest.TestForm.Globals.Test.ListaList.Items.Add(Stringa);
               if (Stringa.IndexOf("AngleX=")>-1)
               {
                   AngleX = Stringa;
                   Stringa = "";
               }
               Stringa = "";
           }