Форум сайта python.su
Выскакивает ошибка, в чем может быть дело?
>>>
=============== RESTART: C:\Новая папка (2)\SerialArduino3.py ===============
x_abs=18 y_abs=153
Traceback (most recent call last):
File “C:\Новая папка (2)\SerialArduino3.py”, line 46, in <module>
arduino.write(b“coordinate”)
File “C:\Users\IVAN\AppData\Local\Programs\Python\Python35-32\lib\site-packages\serial\serialwin32.py”, line 315, in write
raise SerialException(“WriteFile failed ({!r})”.format(ctypes.WinError()))
serial.serialutil.SerialException: WriteFile failed (PermissionError(13, ‘Отказано в доступе.’, None, 5))
>>>
Отредактировано IVAN222 (Апрель 11, 2017 10:47:47)
Офлайн
PermissionError же, попробуйте запускать “от имени администратор”
[code python][/code]
Офлайн
Что именно запускать от имени администратор Python , Arduino или что то другое?
Офлайн
пайтон естевтвенно
В пытаетесь писать а СОМ порт, но вам не хватает прав для этого.
PermissionError(13, ‘Отказано в доступе.’, None, 5) это сообщение венды.
Вам нужно или повысить привилегии, или разраешить непривилегированым пользователям работать с СОМ портами…
Еще конечно может быть что порт уже ктото использует…
ЗЫ тут http://stackoverflow.com/questions/6032568/using-serial-on-python-win7 еще написано
что пролема может быть изза 64-х битного интерпретатора, на 32х битном все заработало..
[code python][/code]
Отредактировано PEHDOM (Апрель 7, 2017 15:36:50)
Офлайн
как повысить привилегии, или разраешить непривилегированым пользователям работать с СОМ3.
Офлайн
IVAN222я же писал:
как повысить привилегии,
PEHDOMВенда начиная с висты устроена очень по хитрожопому, даже если вы входите в группу Администраторы, или работаете под учеткой Администратор вы нихрена не администратор. Чтобы стать полноценным администратором нужно запускать приграммы “от имени Администратора” (в контекстном меню любого ехе файла есть такой пункт “запустить от имени Админитсратора” ). Тогда выскочит хрень с заголовком “Контроль учетных записей бла бла бла…. Разрешить следующей программе бла бла ……” Соотвественно после нажатия “ДА” у вас появляеться уже полные права на работу с системой.
попробуйте запускать “от имени администратор”
PEHDOM
тут http://stackoverflow.com/questions/6032568/using-serial-on-python-win7 еще написано
что пролема может быть изза 64-х битного интерпретатора, на 32х битном все заработало..
[code python][/code]
Офлайн
Давал полные права на работу, не хрена не помогло. Попробовал отключить провод с пина 11, оставил только пин 10 (Х) координата - работает, ошибки нет, но сервопривод дергается в одну сторону и похрену где лицо слева или справа, такая же хрень и с пином 11. Как только подсоединяю пин 10 и 11 - вылазит та же ошибка : x_abs=53 y_abs=54
x_abs=55 y_abs=18
x_abs=23 y_abs=30
x_abs=126 y_abs=53
Traceback (most recent call last):
File “C:\SerialArduino3.py”, line 44, in <module>
arduino.write(b“coordinate”)
File “C:\Users\IVAN\AppData\Local\Programs\Python\Python35-32\lib\site-packages\serial\serialwin32.py”, line 315, in write
raise SerialException(“WriteFile failed ({!r})”.format(ctypes.WinError()))
serial.serialutil.SerialException: WriteFile failed (PermissionError(13, ‘Отказано в доступе.’, None, 5))
Может выдавать координаты x_abs=53 y_abs=54 , одну строку и дать ошибку , а может 2,3,4,5 строк и потом дать ошибку (как вот сейчас на примере) , но сервопривод двигается плавно как надо, не дергается.
Офлайн
хмм тогда единственное что еще приходит в голову, попробуйте понизить BAUDRATE с 115200 до 38400 как в скетче для ардуино так и в пайтон скрипте, посмотрите на результат.
Еще в скетчетнаписано
IVAN222насколько я понимаю если ардуино получает строку “coordinate” он читает Х координату, ждет 3 милисекунды и потом читает Y координату
if(readString.indexOf(“coordinate”) >=0){
x=Serial.read();
delay(3);
y=Serial.read();
}
arduino.write(b“coordinate”) arduino.write(a) arduino.write(b)
[code python][/code]
Офлайн
Тут еще такая идея возникла. Вы пытаетесь работать с COM-портом на высоком уровне тупо записывая туда данные как в файл. Но на самом деле, насколько я помню, в винде нет гарантии, что данные - которые вы записываете в порт тут же и отправятся - вполне может быть какая-нибудь задержка. Как следствие, возможны коллизии, когда Вы пытаетесь записать новые данные в порт, но старые еще не отправлены.
Попробуйте проверить, не исчезнет ли проблема, если Вы снизите частоту отправки данных, то есть какие нибудь таймауты поставите, например time.sleep(1) после arduino.write(b).
Ясно, что это никоим образом не рабочий вариант, но если такая проверка сработает, то будет примерно понятно в каком направлении “копать”.
Офлайн
BAUDRATE понизил до 9600 , так и оставил, не чего не дало.
задержку ставил от 0.05 до 1.
time.sleep(1) после arduino.write(b)
в скече то же разную ставил.
if(readString.indexOf(“coordinate”) >=0){
x=Serial.read();
delay(3);
y=Serial.read();
результат без изменений.
Офлайн