2016-11-17 3 views
-1

Я разрабатываю приложение для чтения данных через последовательный порт. То, что я пытаюсь читать, - это string, который может быть пустым или что-то в нем.Чтение любой строки из Arduino

Моя первая попытка заключалась в создании массива, внутри которого я мог бы вставить то, что могло бы произойти из Serial Port.

string[] pass = new string[4]; 
pass[0] = ""; 
pass[1] = "Something"; 
pass[2] = "To"; 
pass[3] = "Read"; 

for (int i = 0; i < pass.Length; i++) 
{ 
    string element = pass[i]; 
} 

Но это не работает для меня, потому что я хочу прочитать что-либо из последовательного порта. В следующем варианте, в data.ToString() == "Any string I want".

string data = serPort.ReadExisting(); 
if (data.ToString() == "Any string I want") 
{ 
    Environment.Exit(0); 
} 

В принципе, вместо "Any string I want" я хотел бы каждый раз, когда я отправить что-то через Arduino он будет признан приложением.

У вас есть предложения по этому вопросу? Другими словами, если входящие данные равны строке, написанной Arduino, она что-то сделает.

+0

Я понятия не имею, что вы просите. –

+0

Я обновил вопрос ... @MichaelFaisst –

+0

Вы спрашиваете, как сравнить две строки? –

ответ

0

Вам необходимо определить символ завершения и добавить его в код arduino, который отправляет последовательную строку и ищет этот символ во входящих данных. Я использую карету Return Line feed.

private string receivedDate = string.Empty; 
    private System.IO.Ports.SerialPort mport; 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     mport = new SerialPort("COM1", 9600, Parity.None,8, StopBits.One); 
     mport.DataReceived += new SerialDataReceivedEventHandler(mport_DataReceived); 
    } 

    private void mport_DataReceived(object sender, SerialDataReceivedEventArgs e) 
    { 
     receivedDate += mport.ReadExisting(); 
     if (receivedDate.Contains("\r\n")) 
     { 
      //show data 
      //Clear receivedDate 

     } 

    } 
Смежные вопросы