標題:
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) #定義串口,可以根據(jù)需要把com7改為合適的值。
list1=(-4.56193261e-09, -2.04158549e-05, 4.25339884e-05, 0.999977879, 0.999999998, 1.0) #要傳輸?shù)臄?shù)據(jù),六個浮點數(shù),放在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是分拆之后的數(shù)字數(shù)組
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);
//標記串口讀過數(shù)據(jù),如果沒有數(shù)據(jù)的話,直接不執(zhí)行這個while了。
mark = 1;
} */
}
</i>
復制代碼
以上程序?qū)崪y通過。全部資料51hei下載地址:
源碼.rar
(1.33 KB, 下載次數(shù): 7)
2019-10-4 14:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
tomgong
時間:
2019-10-4 13:59
硬件環(huán)境為:上位機 win7 ,下位機 arduino uno
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1