• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите найти ошибку в коде Python

  • Автор темы Автор темы AID_GEN
  • Дата начала Дата начала

AID_GEN

Ученик
Регистрация
14 Сен 2015
Сообщения
4
Реакции
0
Баллы
0
Помогите найти ошибку в коде Python

from socket import *
from struct import *

import threading
import time
import math

f1=open ('1.csv','w')
f2=open ('2.csv','w')
f3=open ('3.csv','w')
f4=open ('4.csv','w')

global w1
global w2
global E3
global w3
w1 = 0
w2 = 0
w3 = 0
E3 = 0
E2 = 0
i = 1
class Buffer():
buffer = [0,]
update = True

def __init__(self, buffer_size, ):
self.buffer = self.buffer*buffer_size

def put(self, data):
self.buffer[0:len(self.buffer)-2] = self.buffer[1:len(self.buffer)-1]
self.buffer[len(self.buffer)-1] = data
self.update = True

def pop(self):
self.update = False
return self.buffer[len(self.buffer)-1]

class receive_data(threading.Thread):
UDP_rsv = socket(AF_INET, SOCK_DGRAM)
addr = ("127.0.0.1", 25001)
buf = 1024
data = ""
UDP_rsv.bind(addr)

CanRun = True


def __init__(self, addr):
threading.Thread.__init__(self)
self.addr = addr

def run(self):
while self.CanRun:
self.data,self.addr = self.UDP_rsv.recvfrom(1024)
a = unpack('dd', self.data)
ob1.put(a[0])
ob2.put(a[1])
f4.write('%s\n' %(a[1]))
def Stop(self):
self.CanRun = False
f4.close()


class Controller():
def SetCoefficient(self):
self.Kp = 0
self.Kd = 0
self.Ki = 0
def SetEpsilon(E1,E2,E3):
g = -1
x1 = ob1.pop()
x2 = ob2.pop()
E3= E2
E1 = g - x1
E2 = g - x2
f1.write('%s\n' %(E1))
f2.write('%s\n' %(E2))

def SetIntegrator(w1,w2,w3):
w1 = w1+0.01*E1
w2 = w2+0.01*E2
w3 = (E2-E3)/0.01

class PI(Controller):
def SetK(Kp,Kd):
Kp = 0.1
Kd = 0.35
def _init_(self):
threading.Thread.__init__(self)
def run(self):
while self.CanRun:
PI = Kp*E1+Kd*w1
def Stop(self):
self.CanRun = True

class PID(Controller):
def SetK(Kp,Kd,Ki):
Kp = 0.1
Kd = 0.137
Ki = 0.0001
def _init_(self):
threading.Thread.__init__(self)
def run(self):
while self.CanRun:
PID = Kp*E2+Kd*w2+Ki*w3
def Stop(self):
self.CanRun = True


class send_data(threading.Thread):
UDP_send = socket(AF_INET,SOCK_DGRAM)
addr = ("localhost", 25000)
data = ""
i = 0
times = [0]

CanRun = True

def __init__(self, addr, buf, sign):
threading.Thread.__init__(self)
self.addr = addr
self.buf = buf
self.sign = sign

def Stop(self):
self.CanRun = False


def run(self):
while self.CanRun:
if Buffer.update:
g=-1
self.times[0] = 0.001
t = time.clock()
self.times.append(t)
if sign == '1':
g = math.sin(1.5*t)
if sign == '2':
g=1.0
f3.write('%s\n' %(g))
u1 = PI
u2 = PID
print (u1)
print (u2)
self.data = pack('dd', u1, u2)
self.UDP_send.sendto(self.data, self.addr)
self.i=self.i+1
f1.close()
f2.close()
f3.close()

seconds = [0.0001]
host = "localhost"
addr = (host,25000)
addr2 = (host, 25001)
print('Choose signal: Sinusoida - 1, Step - 2')
sign = input()
ob1 = Buffer(1024)
ob2 = Buffer(1024)
ob3 = Buffer(1024)
thread1 = send_data(addr, 1024, sign)
thread2 = receive_data(addr2)
thread1.start()
thread2.start()



выдает:
Choose signal: Sinusoida - 1, Step - 2
1
<class '__main__.PI'>
>>>
<class '__main__.PID'>
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python34\lib\threading.py", line 920, in _bootstrap_inner
self.run()
File "C:\Python34\an.py", line 146, in run
self.data = pack('dd', u1, u2)
struct.error: required argument is not a float

:blondy:
 
Назад
Сверху