Найти - Пользователи
Полная версия: python serial
Начало » Python для экспертов » python serial
1 2 3
serrrgggeee
Все сделал но без изменений. Если я пошлю на порт через терминал таким образом
serrrggggeee-Arbyte-Quint-B-M4D3A-H61 serrrggggeee # echo b'Q1\r' > /dev/ttyS0
serrrggggeee-Arbyte-Quint-B-M4D3A-H61 serrrggggeee # cat < /dev/ttyS0
^C
я должен получить же чтото в ответ?
pyuser
Попробуйте так:
ser = serial.Serial("/dev/ttyS0", baudrate=2400)
ser.open()
ser.write(b"Q1\r")
print(ser.readline(eol=serial.CR))
serrrgggeee
Если я запускаю скрипт так
#! /usr/bin/env python
# coding: utf-8
 
import serial
ser = serial.Serial("/dev/ttyS0", baudrate=2400)
ser.open()
ser.write(b"Q1\r")
print(ser.readline(eol=serial.CR))
то
serial.serialutil.SerialException: Port is already open
если так
ser = serial.Serial("/dev/ttyS0", baudrate=2400)
#ser.open()
ser.write(b"Q1\r")
print(ser.readline(eol=serial.CR))
то
serrrggggeee-Arbyte-Quint-B-M4D3A-H61 serrrggggeee # python port_n.py
Traceback (most recent call last):
  File "port_n.py", line 8, in <module>
    print(ser.readline(eol=serial.CR))
TypeError: readline() takes no keyword arguments
если убираю аргументы
ser.write(b"Q1\r")
print(ser.readline())
то просто молчит
и если я сбрасываю скрипт Ctr+c то вот что выдает
serrrggggeee-Arbyte-Quint-B-M4D3A-H61 serrrggggeee # python port_n.py
^CTraceback (most recent call last):
  File "port_n.py", line 8, in <module>
    print(ser.readline())
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 446, in read
    ready,_,_ = select.select([self.fd],[],[], self._timeout)
KeyboardInterrupt
serrrggggeee-Arbyte-Quint-B-M4D3A-H61 serrrggggeee # 
sander
serrrgggeee
читай побайтово
serrrgggeee
побайтово это как?
sander
serrrgggeee
ser.read(1)
serrrgggeee
Вот этот код работает
ser = serial.Serial("/dev/ttyS0", baudrate=2400)
    #ser.open()
    ser.write(b"F\r")
    ups= ser.read(10)
    ser.write(b"Q1\r")
    ups1= ser.read(47)
    ser.write(b"D\r")
    ups2= ser.read(14)
если в read пишешь больше байт чем можно получить то результат не выдается, но меня интересует сейчас
это Q из документации понятно API
что если я воспользуюсь аргументом или байтом b не знаю как это правильно назвать то получу I/P voltage
уже все перепробовал но не пойму куда ставить это b через пробел дефис или другой символ.
PooH
serrrgggeee
что если я воспользуюсь аргументом или байтом b не знаю как это правильно назвать то получу I/P voltage
уже все перепробовал но не пойму куда ставить это b через пробел дефис или другой символ.
Это просто пункты пронумерованы в документе a, b, c и далее :) На Q1 железка должна ответить (MMM.M NNN.N PPP.P QQQ RR.R S.SS TT.T b7b6b5b4b3b2b1b0, так вот пять символов после скобки это ваше напряжение.

ЗЫ: я обещал вам самому попробывать, но пока руки никак не доходят, завал, постораюсь на этой неделе
serrrgggeee
а парсить как я понимаю средствами питона? или как то по другому можно
PooH
serrrgggeee
а парсить как я понимаю средствами питона?
Конечно, это же просто строка.
 float(ups1[1:6])
и всего делов.
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