バーコードリーダーでバーコードを読み込んでWindowsにシリアル通信で送信された番号に、それぞれ処理をしたい、と考えています。
teratermなどのソフトウェアを使う方法などが思い浮かんだのですが、それだと閲覧だけならできると思われますが、取得した番号を他の処理にパイプするようなことは出来ないのではないか、と思い、Powershellでやろうとしました。
バーコードリーダーをPCにBluetooth接続し、Bluetooth設定 > COMポート タブ を確認してみると、com4で受信していることがわかります。なので以下、コマンドでcom4を使用します。
実行したコードは以下です。
$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でも同様のことを試行したのですが、やはりできませんでした。
- バーコードリーダーをubuntuにBluetooth設定する
dmesg | grep ttyS
で、実行中のシリアル通信を取得
[ 2.139452] serial8250: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
- 以下のコマンドを実行して結果を得られると思ったが、数分待機してもバーコードリーダーにて適当なものを読み込んだりしてみても出力がない。
cat /dev/ttyS0 cat < /dev/ttyS0 od -x < /dev/ttyS0
(参考URL)
reading from serial from linux command line - Unix & Linux Stack Exchange
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。