Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

com0com のポートを認識しない #365

Closed
nmaya opened this issue Oct 8, 2024 · 8 comments
Closed

com0com のポートを認識しない #365

nmaya opened this issue Oct 8, 2024 · 8 comments
Assignees
Labels
bug Something isn't working
Milestone

Comments

@nmaya
Copy link
Member

nmaya commented Oct 8, 2024

これは workaround で、別に対策が必要?
https://x.com/ttdoda/status/1843684376284147743

@nmaya nmaya changed the title com0com no com0com のポートを認識しない Oct 8, 2024
@zmatsuo
Copy link
Member

zmatsuo commented Oct 9, 2024

調べます。

解決できれば #209 も解決するのではないかと思います。

@zmatsuo zmatsuo self-assigned this Oct 9, 2024
@zmatsuo zmatsuo added the bug Something isn't working label Oct 9, 2024
@zmatsuo
Copy link
Member

zmatsuo commented Oct 9, 2024

解決できそうです。

com0com独自のシリアルポート?(Ports classではないポート)のとき、
"COM4" のような伝統的なシリアルポートデバイス名以外、
例えば"TERATERM"などにも設定できます。

Tera Term内部では "COM%d" に決め打ちしている箇所があるかもしれないので、
まずは、Ports classではないポート伝統的なシリアルポートデバイス名に
対応することを目指してみます。

zmatsuo added a commit that referenced this issue Oct 13, 2024
- com0com = virtual serial port driver
- シリアルポート、モデムデバイス、に加えて com0com のデバイスもオープンできるようになった
  - ただし "CNCA0" などのデバイス名はオープンできない
- comportinfo.cpp を修正
  - 全デバイスから必要なデバイスを探すようにした
  - 従来OSに対応するためのコードを外部に移動した
    - compat_win.cpp,h
    - win32helper.cpp,h
zmatsuo added a commit that referenced this issue Oct 13, 2024
com0com の "COM%d" デバイスをオープンできるようにした #365
@zmatsuo
Copy link
Member

zmatsuo commented Oct 13, 2024

com0com の Ports classではない
"COM%d"のデバイス名のシリアルポートを
選択できるようになりました。

検出部分(comportinfo.cpp)内では
"COM%d"以外も検出できています。
現在はリストせずに捨てています。
Tera Term のシリアル選択が対応できれば
com0comの全てのデバイス名がオープンできるようになる見込みです。

com0comのデバイスクラス(デバイスの分類)が
普通のシリアル(Port class)とは異なっていて
修正前は検出することができていませんでした。

#209 の egg timer も特別なデバイスなのかもしれません。
手もとにARDUINOがあったので試してみたところ
普通のシリアルで Tera Term から使えているようでした。

バイナリを作りました。
https://ci.appveyor.com/project/teraterm/github-snapshot/builds/50786506/artifacts

@nmaya
Copy link
Member Author

nmaya commented Oct 13, 2024

ありがとうございます。
use Ports class が off でも認識されることを確認しました。

@nmaya
Copy link
Member Author

nmaya commented Oct 13, 2024

00ffde5 ですが、リンクライブラリの追加はこれまでプロジェクトの「追加の依存ファイル」(vcxproj の AdditionalDependencies)に追加しています。
特に理由がなければ、一貫性を保つようにしてもらえるでしょうか。

@zmatsuo
Copy link
Member

zmatsuo commented Oct 14, 2024

compat_win.cpp に _SetupDiGetDevicePropertyW() を追加したのですが、
(Windows-7 以前でも動作する SetupDiGetDevicePropertyW() です)
この関数,オブジェクトファイルを含む common_static.lib を
リンクしている他のプロジェクトでも
setupapi.lib をリンクが必要となってしまいました。

_SetupDiGetDevicePropertyW() を使用していないプロジェクトなら
リンク時 setupapi.lib なくてもいいのではと思うのですが
必要となります。

プラグインなど全てに
追加の依存ファイル setupapi.lib を追加する必要があります。
ちょっと大変なのでオブジェクトに埋め込みました。

setupapi.lib が必要なライブラリを例えば common_setupapi.lib に
分ける方法もあると思います。

@nmaya
Copy link
Member Author

nmaya commented Oct 14, 2024

SetupDiGetDevicePropertyW()
プラグインなど

ありがとうございます。
理由がわかりましたので、ソースのコメントを追加しておきました。

zmatsuo added a commit that referenced this issue Oct 15, 2024
- Windows Vistaから7以前の時場合
- インデント調整
@zmatsuo
Copy link
Member

zmatsuo commented Oct 15, 2024

手もとにモデムデバイスがないので確認はできていませんが
Windows Vistaから7以前の時、
モデムデバイスが検出できなくなる不具合があったので修正しました。 a173922

sempreff pushed a commit to sempreff/teraterm that referenced this issue Oct 17, 2024
- com0com = virtual serial port driver
- シリアルポート、モデムデバイス、に加えて com0com のデバイスもオープンできるようになった
  - ただし "CNCA0" などのデバイス名はオープンできない
- comportinfo.cpp を修正
  - 全デバイスから必要なデバイスを探すようにした
  - 従来OSに対応するためのコードを外部に移動した
    - compat_win.cpp,h
    - win32helper.cpp,h
sempreff pushed a commit to sempreff/teraterm that referenced this issue Oct 17, 2024
sempreff added a commit to sempreff/teraterm that referenced this issue Oct 17, 2024
@nmaya nmaya added this to the 5.4 milestone Dec 22, 2024
@nmaya nmaya closed this as completed Dec 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants