2016-11-07 3 views
-2

Есть ли способ, чтобы сравнить строки, которые объявлены с получают данные из последовательного порта, такие как:C# - Как сравнивать строки с serialPort.ReadExisting()

string hello = "hello"; 
string dataReceived = serialPort1.ReadExisting(); //the incoming data is "hello" 
bool comparisonResult = hello.Equals(dataReceived, StringComparison.Ordinal); 

if(comparisonResult == true) 
{ 
    //do something 
} 

Заранее спасибо!

+1

Что случилось с вашим текущим кодом? Вы уверены, что данные точно «Hello»? – Rob

+0

@Rob Yeahp проверил, что я получил именно привет (с учетом регистра), но он до сих пор не зарегистрировал, что получил «привет» –

+0

, пожалуйста, проверьте в отладчике, есть ли пробелы или дополнительные символы, такие как '\ r' или '\ n' в' dataReceived'. –

ответ

0

Да есть способ

if (serialPort1.ReadExisting() == "hello") 
{ 
    // do something 
} 
+0

не работает, отображает полученные данные в текстовое поле для проверки данных (это «привет»), но он каким-то образом не регистрируется как serialPort1.ReadExisting() == «hello». –

0

Edit: выяснили, почему он не работает, то, что мне нужно было культуры чувствительных сравнения

string hello = "hello"; 
string dataReceived = serialPort1.ReadExisting(); //incoming data is "hello" 
int comparisonResult = String.Compare(hello, dataReceived, true); 
//if comparisonResult is true, output is 0 

if (comparisonResult == 0) 
{ 
    //do something 
} 
+0

'String.Compare (a, b, true)' - это нечувствительное к регистру сравнение, а не чувствительное к культуре сравнение. Если это сработает для вас, то одна из строк должна быть чем-то вроде «Hello», а другая «hello», которая отличается. –

+0

@MarkLakata [link] (https://msdn.microsoft.com/en-us/library/cc165449.aspx) Я был очень уверен, что я отправлял одну строчку по делу, подозревая, что она может иметь какое-то отношение к регистры, которые он использует для сравнения. В любом случае спасибо –