помогите с SerialPort.read SerialPort.Write разабраца

garmoska89
Offline
Зарегистрирован: 20.12.2011

 всё делаю в C#

send data:

string outBufer;
outBufer += "none"+" x="+1+" y="+1+" z="+1;
serialPort1.WriteLine(outBufer);

recive data event:

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxString = serialPort1.ReadExisting();
MessageBox.Show(RxString);
}

резултат

press OK

ишё раз

ОК

garmoska89
Offline
Зарегистрирован: 20.12.2011

 скетч

char inData;
String inDataString;
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop()
{

if (Serial.available()!=0)
{
 inData = Serial.read();
  inDataString = inData;
  if (inData=='none x=1 y=1 z=1') digitalWrite(13,HIGH);
  else digitalWrite(13,LOW);
  Serial.print(inDataString);
}

}

 

garmoska89
Offline
Зарегистрирован: 20.12.2011

 

breack point.

garmoska89
Offline
Зарегистрирован: 20.12.2011

 пробавал так

char inData;
String inDataString;
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop()
{

if (Serial.available()!=0)
{
inData = Serial.read();
delay(5);
inDataString = inData;
if (inData=='none x=1 y=1 z=1') digitalWrite(13,HIGH);
else digitalWrite(13,LOW);
Serial.println(inDataString);
delay(5);
}

}

резултат

garmoska89
Offline
Зарегистрирован: 20.12.2011

 поогите пажалуста я хочу проста передать  целый string и проверить что получил тоlже целый стринг

chervyachok
chervyachok аватар
Offline
Зарегистрирован: 22.12.2011

Serial.read(); читает по байту за раз так что 'none x=1 y=1 z=1' там никогда не будет. сначала нужно сложыть все что пришло а потом проверять. на форуме уже много раз подымалась такая тема

 

Borland
Offline
Зарегистрирован: 17.05.2012

Если задача ввести строку

сравнить ее с заданной и включитьфлаг в зависимости от результата - то как то так:

#define ECHO
#define CR 13
char inData[80];

void setup()
{
Serial.begin(115200);
pinMode(13,OUTPUT);

digitalWrite(13,LOW);

}

unsigned char AnyKey(void) { // ввод одного символа

while (!Serial.available());
return Serial.read();

}

void loop()
{
unsigned char c;
int i;
//Serial.write('*');
if (Serial.available()!=0) { // если нажата клавиша
inData;
i=0;
while ((c!=CR)){
c=AnyKey();
#ifdef ECHO
Serial.write(c);
#endif
inData[i++]= c;
} // ввод строки
inData[i-1]='\0';

if (strcmp(inData,"none ")) digitalWrite(13,HIGH);
else digitalWrite(13,LOW);
delay(2000);

} // end if
}

garmoska89
Offline
Зарегистрирован: 20.12.2011

тежолыь скетч не понемаю и ишё не работает (none)

chervyachok
chervyachok аватар
Offline
Зарегистрирован: 22.12.2011

 блин, люди!, вы на каком языке общаетесь?

maksim
Offline
Зарегистрирован: 12.02.2012

На Российском )))

Borland
Offline
Зарегистрирован: 17.05.2012

все работает, надо вводить в окно терминала "none " с пробелом, без кавычек естественно