我将视觉工作室C#中的角色发送到串口,我希望arduino能够阅读角色并做一些工作。但是,它没有正确阅读。我已经使用串行监视器测试了arduino程序,它运行正常。这是我的C#代码。
private void startBit_Click(object sender, EventArgs e)
{
char start = '!';
byte[] buffer = new byte[] { Convert.ToByte(start) };
timerRealTimeData.Enabled = true;
serialPort1.PortName = "COM29";
serialPort1.BaudRate = 9600;
serialPort1.DtrEnable = true;
serialPort1.Open();
serialPort1.Write(buffer, 0, 1);
if (serialPort1.IsOpen)
{
Start.Enabled = false;
Stop.Enabled = true;
}
}
这是用于读取串口的arduino代码
char incomingByte;
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop()
{
if(Serial.available() > 0) {
incomingByte = Serial.read();
if(incomingByte=='!')
{
digitalWrite(13,HIGH);
delay(2000);
digitalWrite(13,LOW);
}
}
}
我长期坚持这一点。感谢任何帮助
答案 0 :(得分:0)
尝试使用int而不是char来读取等效的Ascii(33)。同时更改行
if(Serial.available() > 0)
要
if(Serial.available())
为您提供一些参考。 Here
答案 1 :(得分:0)
首先,创建一个打开串口的功能,以及关闭串口的功能。您的单击处理程序startBit_Click将打开串行端口,这意味着如果再次调用该处理程序,则该端口已打开并将生成异常。 (除非你有其他代码未显示关闭串口?)
其次,我猜你通过USB端口连接到arduino? 如果是这样,DtrEnable应为false(默认),因为您没有XON / XOFF软件握手。
您还应该在调试窗口中检查缓冲区,在为缓冲区分配字符后设置断点,并检查您发送的字符是否确实如此。