Форум сайта python.su
0
Добрый день, подскажите в чем ошибка.
в терминале набираю:
>>> import serial
>>> ser = serial.Serial('/dev/ttyUSB1')
>>> ser.write(b'9')
Передается цифра 9 в сериал по ЮСБ. И ардуинка не завершает цикл.
Если так то завершается.
>>> import serial
>>> ser = serial.Serial('/dev/ttyUSB1')
>>> ser.write(b'9')
1
>>> ser.close()
>>> ser.open()
но пытаюсь сделать файл run.py с тем же содержимым и запустить из консоли как:
python run.py
ничего не происходит
Офлайн
0
Получился рабочий вариант:
import serial
port = serial.Serial(“/dev/ttyUSB1”, baudrate=9600, timeout=3.0)
while True:
port.write(“9”)
exit()
но ардуинка зависает
что делать?
Офлайн
0
Выше уже не актуально, сделал реле напрямую из малины, теперь надо считать аналоговый датчик холла
через USB serial:
import serial
s = serial.Serial('/dev/ttyUSB0')
s.write = (str(“ATI\r\n”)).encode(“utf-8”)
while True:
last = ''
for byte in s.read(s.inWaiting()): last += chr(byte)
Вот так получилось, но тут вопрос, раз данные передаются в byte как мне их потом обрадатывать в int?
Мне необходимо сделать цикл while конечным, что б он когда то заканчивался, и прерывался, если делаю
var = 0
while var < 0:
то скрипт в малине виснет.
помогите пожалуста!!!!
Офлайн
0
Короче такая бодяга получилась Хвала гуглу……
#!/usr/bin/python import serial import time import RPi.GPIO as GPIO import requests import sys opcl = sys.argv[1] prop = str(sys.argv[2]) GPIO.setmode(GPIO.BOARD) GPIO.setup(33,GPIO.OUT) GPIO.setup(35,GPIO.OUT) GPIO.setup(37,GPIO.OUT) GPIO.output(33,GPIO.HIGH) GPIO.output(35,GPIO.HIGH) GPIO.output(37,GPIO.HIGH) ser = serial.Serial('/dev/ttyUSB1',9600) ch = ser.readline() mag = int(ch.encode('hex'),16)/100000-30 if int(opcl) < 8: if (mag == 6): ex = 4 elif (mag == 4): ex = 3 else: ex = 6 var = 0 while var < 30: GPIO.output(33,GPIO.LOW) GPIO.output(37,GPIO.LOW) ch = ser.readline() mag = int(ch.encode('HEX'),16)/100000-30 print(mag) if (ex == mag): GPIO.output(33,GPIO.HIGH) GPIO.output(37,GPIO.HIGH) GPIO.cleanup() print (str(prop)) link = "http://localhost/vd.php?pr="+prop f = requests.get(link) print(f.text) break; exit() var = var + 1 else: GPIO.output(33,GPIO.HIGH) GPIO.output(35,GPIO.HIGH) GPIO.output(37,GPIO.HIGH) GPIO.cleanup() else: if (mag < 4): ex = 4 elif (mag > 5): ex = 3 else: ex = 6 var = 0 while var < 30: GPIO.output(33,GPIO.LOW) GPIO.output(37,GPIO.LOW) ch = ser.readline() mag = int(ch.encode('HEX'),16)/100000-30 print(mag) if (ex == mag): GPIO.output(33,GPIO.HIGH) GPIO.output(37,GPIO.HIGH) GPIO.cleanup() print (str(prop)) link2 = "http://localhost/vihod.php?pr="+prop f2 = requests.get(link2) print(f2.text) break; exit() var = var + 1 else: GPIO.output(33,GPIO.HIGH) GPIO.output(35,GPIO.HIGH) GPIO.output(37,GPIO.HIGH) GPIO.cleanup()
Офлайн
0
Теперь надо запустить файлик питон из php чот не получается……
<?php require_once 'connection.php'; // Create connection $conn = mysqli_connect($server, $user, $password, $database); mysqli_query($conn,"SET CHARACTER SET 'utf8'"); mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'"); if (isset($_GET['pr'])) { $pr = $_GET['pr']; } else { // Fallback behaviour goes here } $link = mysqli_connect($server, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $query ="SELECT * FROM fio_table where (propusk='$pr')"; $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); $rows = mysqli_num_rows($result); // количество полученных строк echo $rows; if ($rows < 1) { header("Location: zapr.php"); mysqli_free_result($result); } else { $command = escapeshellcmd('python2.7 /var/www/html/mg.py 9 003'); ВОТ тут файлик echo "Connected successfully"; $datey = date('Y-m-d H:i:s'); $datev = date('H:i:s'); $sql = "INSERT INTO prohod (propusk, status, data, time_vh) VALUES ('$pr', '00FF00', '$datey', '$datev')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } } mysqli_close($conn); header("Location: vh_time.php"); mysqli_close($link); ?>
Офлайн
253
shiyriЭто вам на форум по php. Но и там наверняка потребуется лог ошибки.
Теперь надо запустить файлик питон из php чот не получается
int(ch.encode('hex'),16)
ord(ch)
GPIO.setup(33,GPIO.OUT) GPIO.setup(35,GPIO.OUT) GPIO.setup(37,GPIO.OUT) GPIO.output(33,GPIO.HIGH) GPIO.output(35,GPIO.HIGH) GPIO.output(37,GPIO.HIGH)
for i in [33,35,37]: GPIO.setup(i,GPIO.OUT) GPIO.output(i,GPIO.HIGH)
if (mag == 6): ex = 4 elif (mag == 4): ex = 3 else: ex = 6
ex = {6:4, 4:3}.get(mag,6)
Отредактировано doza_and (Авг. 2, 2019 20:15:08)
Офлайн
0
СПАСИБО
/var/www/html/mg.py:10: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(33,GPIO.OUT) /var/www/html/mg.py:11: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(35,GPIO.OUT) /var/www/html/mg.py:12: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(37,GPIO.OUT) Traceback (most recent call last): File “/usr/lib/python3/dist-packages/serial/serialposix.py”, line 275, in open self.fd = os.open(self.portstr, os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK) PermissionError: Permission denied: ‘/dev/ttyUSB1’
During handling of the above exception, another exception occurred: Traceback (most recent call last): File “/var/www/html/mg.py”, line 16, in ser = serial.Serial('/dev/ttyUSB1',9600) File “/usr/lib/python3/dist-packages/serial/serialutil.py”, line 261, in __init__ self.open() File “/usr/lib/python3/dist-packages/serial/serialposix.py”, line 278, in open raise SerialException(“could not open port %s: %s” % (self._port, msg)) serial.serialutil.SerialException: could not open port /dev/ttyUSB1: Permission denied: ‘/dev/ttyUSB1’
Прав не хватает….. походу, есть мысль как дать права?
Первый раз с питоном и в програмировании вообще…..
Офлайн
0
из терминала под sudo запускается, а через php может
Офлайн
0
ord(ch)
Офлайн
253
:)
shiyriУгу ошибка. Вопрос то в чем?
Ошибка
Отредактировано doza_and (Авг. 3, 2019 19:50:46)
Офлайн