質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

シリアルポート

シリアルポートは一度に一ビットごと移行される物理的なインターフェイスです。一般的には、9ピンのd-subコネクタであるRS-232を指します。

Q&A

1回答

9935閲覧

PowershellまたはBashでCOMポートのシリアル通信を取得するには

igar

総合スコア110

COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

シリアルポート

シリアルポートは一度に一ビットごと移行される物理的なインターフェイスです。一般的には、9ピンのd-subコネクタであるRS-232を指します。

0グッド

1クリップ

投稿2018/10/29 03:34

バーコードリーダーでバーコードを読み込んでWindowsにシリアル通信で送信された番号に、それぞれ処理をしたい、と考えています。

teratermなどのソフトウェアを使う方法などが思い浮かんだのですが、それだと閲覧だけならできると思われますが、取得した番号を他の処理にパイプするようなことは出来ないのではないか、と思い、Powershellでやろうとしました。

バーコードリーダーをPCにBluetooth接続し、Bluetooth設定 > COMポート タブ を確認してみると、com4で受信していることがわかります。なので以下、コマンドでcom4を使用します。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_1f666319-1d85-45ca-a0f9-d8f368a9cfae.png

実行したコードは以下です。

$port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one $port.Open() $port.ReadLine()
function read-com { $port= new-Object System.IO.Ports.SerialPort COM4,9600,None,8,one $port.Open() do { $line = $port.ReadLine() Write-Host $line # Do stuff here } while ($port.IsOpen) }

(参考URL)
Writing and Reading info from Serial Ports | PowerShell Team Blog
How to continuously read Serial COM port in Powershell and occasionally write to COM port - Stack Overflow

しかし、2つとも、数分待機してもバーコードリーダーにて適当なものを読み込んだりしてみても出力がされませんでした。

何かが間違っているでしょうか?

また、Ubuntu 18.04でも同様のことを試行したのですが、やはりできませんでした。

  1. バーコードリーダーをubuntuにBluetooth設定する
  2. dmesg | grep ttySで、実行中のシリアル通信を取得
[ 2.139452] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
  1. 以下のコマンドを実行して結果を得られると思ったが、数分待機してもバーコードリーダーにて適当なものを読み込んだりしてみても出力がない。
cat /dev/ttyS0 cat < /dev/ttyS0 od -x < /dev/ttyS0

(参考URL)
reading from serial from linux command line - Unix & Linux Stack Exchange


気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

回答ではないですが。

一般的なバーコードリーダは、設定によりキーボードエミュレーション出力になったりしますが、そういう設定はないんでしょうか


双方のソースとも、readline で読み込んでますが、
これまた一般的なバーコードリーダは、デフォルト状態ではデリミタの出力はしないようになってます

で、readlineで読み込みためには、行区切りのリターンコードがないと読み込んでくれません。
そこで、お使いのバーコードリーダの設定で、デリミタにリターンコードを付加する設定があると思いますんで、それを設定してみましょう

投稿2018/10/29 03:41

編集2018/10/29 03:46
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問