2 justice199107 justice199107 于 2015.07.16 08:13 提问

串口通信后为什么两个字符串不同了……

VB和aeduino中波特率都设置为9600,VB能够正常接收数据,看起来一样,但数据判断却不一样。。。。
VB中代码:
Dim buf$
Dim DR$
DR = Trim("DATA:CREADY")

buf = Trim(MSComm1.Input)
Label15.Caption = buf
Label16.Caption = DR

If LCase(buf) = LCase(DR) Then
MsgBox ("校准完成!")
Else
MsgBox ("校准失败!")
End If
buf = ""
End If

arduino中的代码:
char data = char(Serial.read());
if (data=='A')
{
//Serial.println(data);
delay(5000);
Serial.print("DATA:CREADY \r \n");
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);

按钮上方为串口接收的值,下方是VB中定义的值
图片说明

2个回答

wenwuwenwuwenwu
wenwuwenwuwenwu   2015.07.16 08:47
已采纳

你试一下把 Serial.print("DATA:CREADY \r \n"); 更改成 Serial.print("DATA:CREADY"); 看看能不能成功

wenwuwenwuwenwu
wenwuwenwuwenwu 回复BerryPod: 试一下,先不要用字符串作为判断,让arduino发送一个简单的数字到电脑串口,然后再用vb判断,看能不能识别出来
2 年多之前 回复
justice199107
justice199107 一开始就是不带\r和\n的,也不一样……
2 年多之前 回复
lzp_lrp
lzp_lrp   Ds   Rxr 2015.07.16 08:38

arduino里你增加delay(5000);是不是这个导致的数据不一样了

关于arduino串口通信,可参考
http://www.douban.com/note/200000463/

justice199107
justice199107 delay(5000)是为了让上位机软件检测下位机是否已准备好,去掉delay,数据还是这样。谢谢,我去看看你给的链接。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片