Найти - Пользователи
Полная версия: Протокол обмена данных Honda 3-pin
Начало » Центр помощи » Протокол обмена данных Honda 3-pin
1 2 3
py.user.next
MAGRA
H00 = int(aa[2])
К int приводить не надо, оно и так int.
>>> b = bytearray('abc')
>>> b[0]
97
>>> type(b[0])
<type 'int'>
>>>

MAGRA
Маленько по другому написал
Сначала надо взять контрольную сумму. Она как раз проставлена там, чтобы принимающая сторона проверила корректность данных.

def get_rpm_speed(ser, cmd):
    query = bytearray(cmd)
    query.append((0x100 - sum(query)) & 0xFF)
    ser.write(query)
    resp = bytearray(ser.readline())
    crc = resp.pop()
    if sum(resp) & 0xFF != crc:
        raise ValueError('incorrect crc')
    resp.pop(0)
    resp.pop(0)
    h0, h1, h2 = resp[:3]
    rpm = (h0 * 256 + h1) / 4
    spd = h2
    return rpm, spd
 
ser = serial.Serial('COM3', 9600, timeout=1)
 
rpm, speed = get_rpm_speed(ser, [0x20, 0x05, 0x00, 0x10])
print 'Rpm', rpm
print 'Speed', speed


Проверка:
>>> from mock import patch
>>> 
>>> p = patch('serial.Serial')
>>> m = p.start()
>>> m.return_value.readline.return_value = (
...     b'\x10\xa8\x00\x00'
...     b'\x00\x00\x00\x00'
...     b'\x10\x00\x00\x01'
...     b'\x00\x00\x00\x01'
...     b'\xca'
... )
>>> 
>>> import serial
>>> 
>>> def get_rpm_speed(ser, cmd):
...     query = bytearray(cmd)
...     query.append((0x100 - sum(query)) & 0xFF)
...     ser.write(query)
...     resp = bytearray(ser.readline())
...     crc = resp.pop()
...     if sum(resp) & 0xFF != crc:
...         raise ValueError('incorrect crc')
...     resp.pop(0)
...     resp.pop(0)
...     h0, h1, h2 = resp[:3]
...     rpm = (h0 * 256 + h1) / 4
...     spd = h2
...     return rpm, spd
... 
>>> ser = serial.Serial('COM3', 9600, timeout=1)
>>> 
>>> rpm, speed = get_rpm_speed(ser, [0x20, 0x05, 0x00, 0x10])
>>> print 'Rpm', rpm
Rpm 0
>>> print 'Speed', speed
Speed 0
>>>
MAGRA
py.user.next Спасибо всё получилось!
Вы не имели дело с kivy? Хочу всему этому запилить оболочку типо так:
____________________
Параметры
|датчики | значения |
|speed | 60 км.ч |
|prm | 2500 об.м. |
___________________
Втыкаю 2 недели в киви, получилось только разбить поля, а как сделать так, что бы значения переменных, менялись в окошке, не могу понять, кто ни будь сталкивался с этим?
py.user.next
MAGRA
Вы не имели дело с kivy?
Не, я только PyQt4 изучаю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB