arduino与vb编写的上位机通讯简单程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上位机
一、回环测试
1.1VB程序
Option Explicit
Private Sub Command1_Click()
MSComm1.Output = Trim(TextSend.Text)
End Sub
Private Sub Command2_Click()
Dim num As String
num = Trim(MSComm1.Input)
If Len(num) = 0 Then
TextRecive.Text = ""
Else
TextRecive.Text = Trim(num) & TextRecive.Text
End If
End Sub
Private Sub Command3_Click()
MSComm1.PortOpen = False
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub
VB窗口
1.2Arduino程序
char val;
void setup() {
int i=0;
for (i=1;i<=13;i++)
pinMode(i,OUTPUT);
Serial.begin(9600);
}
void loop() {
val=Serial.read();
if(-1!=val)
{
delay(100);
Serial.print(val);
}
}
或者另一程序也能满足要求
String comdata = "";
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
Serial.println(comdata);
comdata = "";
}
}
二、数字传送加工送回
2.1 arduino将浮点型数据变为指定位数字符型数据
void setup() {
Serial.begin(9600);
}
void loop() {
float f=3.1;
char c[6];
dtostrf(f,1,3,c);
Serial.println(c);
delay(10000);
}
2.2 arduino将一个字符型数据转换为浮点型数据加工后再变回为制定位数的字符型数据。这个程序是将字符100变为浮点型数据100,在加30变为130,然后转换为字符型数据
char *a;
float i;
void setup() {
Serial.begin(9600);
}
void loop() {
a= "100";
i = 0.0;
Serial.println(i,2);
i=atof(a)+30;
Serial.println(i,2);
char c[6];
dtostrf(i, 3, 2, c);
Serial.println(c);
delay(1000);
}
2.3 VB上位机发送字符100,经由arduino加上30返回字符130至上位机
2.3.1 arduino程序
String comdata = "";
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);}
if (comdata.length() > 0)
{
float a=comdata.toFloat();
a=a+30.0;
char c[1];
dtostrf(a, 3, 2, c);
Serial.println(c) ;
delay(1000);
comdata = "";
}
}
2.3.2 VB程序
Option Explicit
Private Sub Command1_Click() MSComm1.Output = Trim(TextSend.Text) End Sub
Private Sub Command2_Click()
Dim num As String
num = Trim(MSComm1.Input)
If Len(num) = 0 Then
TextRecive.Text = ""
Else
TextRecive.Text = Trim(num)
End If
End Sub
Private Sub Command3_Click() MSComm1.PortOpen = False
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub