일부 코드에서는 속도가 빠릅니다.Arduino와의 C# 직렬 통신 문제
그래서 두 코드의 전송 속도를 높이고 싶습니다. & Arduino. 그러나 9600 보오율을 그대로두면 데이터가 제대로 수신되지 않고 &으로 전송됩니다. 그래서 간단한 테스트 프로그램을 설정했습니다.
아두 이노 코드 :
void setup()
{
Serial.begin(9600);
Serial.setTimeout(10);
}
void loop()
{
if (Serial.available())
{
String Data = Serial.readStringUntil('#');
if (Data == "Test")
{
Serial.println("Recived");
}
}
delay(1);
}
C# 코드 :
SerialPort Port = new SerialPort("COM4", 9600);
Port.Open();
if (Port.IsOpen)
{
Port.Write("Test#");
System.Threading.Thread.Sleep(1000);
String Read = Port.ReadExisting();
Port.Close();
}
그래서 문자열 읽기 "Recived \ 연구 \ n"로 돌아 오는 것을 실행. 전송 속도를 19200으로 변경하면 ""이 다시 나타납니다.
왜 이런 현상이 발생하는지 알고 싶습니다.
편집 : Arduino IDE의 직렬 모니터 프로그램을 사용하면 사용 된 전송 속도와 상관없이 정상적으로 작동합니다. 그것으로 곧 C#을 사용하여이 문제가 발생합니다. 내가 믿는 하드웨어 문제를 배제한 것은 무엇인가.
http://stackoverflow.com/questions/11197097/how-to-read-a-string-value- delimeter-on-arduino와 함께 – MethodMan
핸드 셰이크 속성을 설정해야합니다. 그렇게하지 않으면 마지막으로 사용한 프로그램이 해당 포트에 사용 된 핸드 셰이크 모드가됩니다. 또는 이러한 프로그램을 사용하지 않았거나 프로그램이 포트를 닫을 때 프로그램이 복원하면 시스템 기본값입니다. Arduino는 핸드 쉐이크 신호를 구현하지 않기 때문에 매우 귀찮은 경향이 있습니다. 핸드 셰이크로 설정해야합니다. 명시 적으로 없습니다. –