世界中の技術者を悩ませているトラブルがあるようです.わたしもハマりました.
条件は、、、
・windows (windows10限定かも)
・pythonのpyserialで生じる (わたしはpython3.12.2)
・わたしの環境ではSTM32のCDCで発生しました
・serial.Serial("COM4")のようにopenしただけでerrorで停まる
・error messageは、"serial.serialutil.SerialException: Cannot configure port, something went wrong."
・Teratermでは正常に動く
それまで動いていたのが、あるとき突然動かなくなりました.
検索したトラブルシュート事例では「CH340のdriverをupdateせよ」などと言われますが、わたしのはSTM32ですからCH340とは関係ありません.
かなり困りましたが、ロシア語のこのサイトが参考になりました.
そのサイト曰く、
「COM portのparameter設定を追確認したときの返り値の不一致で例外が発生しているのではないか? ならば例外を停めちまえ.」
だそうです.
わたしもそれに従います.
以下、わたしが成功したトラブル回避方法です.
pythonが出すエラーメッセージ全文を掲載します.
File "C:\Users\hira\AppData\Local\Programs\Python\Python312\Lib\site-packages\serial\serialwin32.py", line 222, in _reconfigure_port
raise SerialException(
serial.serialutil.SerialException: Cannot configure port, something went wrong. Original message: OSError(22, 'パラメー ターが間違っています。', None, 87)
このエラーメッセージのserialwin32.pyをeditorで開きます.pathは深いですがエラーメッセージに書かれています.pathはマシンによって違うかもしれません.
serialwin32.pyの中の例外を発生させている場所を探します.220行目ぐらいにありました.これらを行頭#でコメントアウトしてしまいます.行頭なのはindentを乱さないため.
# if not win32.SetCommState(self._port_handle, ctypes.byref(comDCB)):
# raise SerialException(
# 'Cannot configure port, something went wrong. '
# 'Original message: {!r}'.format(ctypes.WinError()))
これでサクッと治りました.
かしこ
CH340のドライバはexeファイルだったので パソコンが いかれないか心配でした
返信削除7zipで展開して ドライバ入れるべきだったか
Windows10がだめなのか?
ウイルスウィルスブルースウィルス
削除おはようございます
>ロシア語のこのサイトが参考になりました.
返信削除「困ったときの、ロシア頼み(笑)」
※個人的には、ロシアは「敵に回してはいけない」と、思っている。
Спасибо, Россия!
こんどコメント欄をロシア語縛りにして敬意をあらわしましょう
削除да!
削除もはやアスキーアートだ、ロシア
削除ツンデレのロシア娘のアニメがはじまるそうです
削除そうそう、たまにロシア語がでるナターシャみたいなタイトルのやつですね
削除>行頭なのはindentを乱さないため.
返信削除こういう時、python は逆に不利ですね・・・
※複数行(ブロック)コメントって、無いんでしたっけ?
ブロック毎(インデントが)ズレるから、ダメなのか・・・
つか、「ソースそのまま」入ってんですね。デバドラもコンパイルしながら実行するのか?
インタプリタの剥き出しさにたじろぎます.
削除indent方式が大好きかというとヒラ的にはそんなでもないんです.
>indent方式が大好き
削除indent「でもいける」くらいだったら良かったのに、とも思わなくはない。
※indent は、「目に見えない」ので、私も、{} のほうが好きです。
やっぱり、「JavaScript最強説」を取りたい。
さすがはJavaScript LOVERでござーる
削除