标题:
arduino与python互相传递结构体的源程序
[打印本页]
作者:
tomgong
时间:
2019-10-4 13:36
标题:
arduino与python互相传递结构体的源程序
上位机:
# 作者 Tom13a import serial
import struct
import time
import numpy as np
ser = serial.Serial('com7', 115200, timeout=0.2) #定义串口,可以根据需要把com7改为合适的值。
list1=(-4.56193261e-09, -2.04158549e-05, 4.25339884e-05, 0.999977879, 0.999999998, 1.0) #要传输的数据,六个浮点数,放在list1里面。
time.sleep(3)
for i in range(1,6):
data0 = list1[0]
data1 = list1[1]
data2 = list1[2]
data3 = list1[3]
data4 = list1[4]
data5 = list1[5] # 赋值到结构体
data = struct.pack('>ffffff', data0, data1, data2, data3, data4, data5) #结构体打包
ser.write(data)
time.sleep(0.5)
print(data)
#read
data = ''
p=ser.inWaiting()
print(p)
if p>=24:
data_temp = ser.read(24)
time.sleep(0.4)
#data_p=ser.read(2)
data = struct.unpack('<ffffff', data_temp) #结构体解包
print(data)
# print(data_p)
else:
datat=ser.read(p)
复制代码
下位机(arduino):
//定义一个comdata字符串变量,赋初值为空值
String comdata = "";
int size1;
//numdata是分拆之后的数字数组
int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0;
void setup()
{
//定义0~6脚是输出
for(int i = 0; i < 6; i++) pinMode(PWMPin<i>, OUTPUT);
Serial.begin(115200);
Serial.flush();
}
typedef struct sdata
{
float a0;
float a1;
float a2;
float a3;
float a4;
float a5;
}; //如果需要对结构体里的元素单个赋值,就用: float list0[6]={list0[0],list0[1],list0[2],list0[3],list0[4],list0[5]};
void loop()
{
float list0[6]={0.01380237000, -0.16868371, 1.07774284, -0.90905913, 2.81380237 , 0.1};
struct sdata t1={12308, -1.77590998000e-03, 0.00000000e+00 , 1.00111152000e+00 ,1.00066536e+00 , 1.00123030e+00};
delay(500);
/* size1=sizeof(sdata);
byte b[size1];
memcpy(b,&t1,size1);
Serial.write(b,size1);
delay(2000);*/
byte *tobyte=(byte*)&t1;
delay(100);
Serial.write(tobyte,sizeof(sdata));
delay(100);
//如下这段注释掉的代码,可以用于做串口试验:
/* while (Serial.available() > 0)
{
//读入之后将字符串,串接到comdata上面。
comdata +=char( Serial.read());
delay(2);
//标记串口读过数据,如果没有数据的话,直接不执行这个while了。
mark = 1;
} */
}
</i>
复制代码
以上程序实测通过。全部资料51hei下载地址:
源码.rar
(1.33 KB, 下载次数: 7)
2019-10-4 14:13 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
tomgong
时间:
2019-10-4 13:59
硬件环境为:上位机 win7 ,下位机 arduino uno
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1