• ベストアンサー

socket通信 非同期処理におけるバーコード読み

工場のラインで製品が流れてくる際に2つの固定バーコードリーダー(カメラ式)でバーコードを読み込みむ処理を作成しているのですが、 上手くPGが組めません。 ポートは”9600”で2つのカメラで片方でも読み込めた際は画面(swing)のテキストボックスに表示するサンプルのご教授を頂けないでしょうか? ※バーコード読み込みは終了等のボタンが押下されるまで非同期で読み込みます。 環境はeclipse-jdk1.7(windows10)となります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

お悩みの内容は、工場のラインで製品が流れる際に2つの固定バーコードリーダーを使用してバーコードを読み込む処理を作成したいということでしょうか。また、読み込んだバーコード情報を画面のテキストボックスに表示させたいということでしょうか。 まず、バーコードリーダーを使用する際には、通信ポートやボーレートなどの設定が必要です。おっしゃる通り、ポートは"9600"となります。この設定を行うために、以下のようなコードを追加してください。 ```java import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Main { public static void main(String[] args) { // ポートの設定 String port = "COM1"; // 使用するポートを指定してください // バーコードリーダーのインスタンス生成 BarcodeReader reader1 = new BarcodeReader(port, 9600); BarcodeReader reader2 = new BarcodeReader(port, 9600); // テキストボックスの生成 JTextField textBox = new JTextField(); // ウィンドウの生成 JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.add(textBox); frame.add(panel); frame.setVisible(true); // バーコード読み込みスレッドの開始 Thread thread1 = new Thread(() -> { while (true) { String barcode = reader1.readBarcode(); if (barcode != null) { textBox.setText(barcode); break; } Thread.sleep(500); } }); Thread thread2 = new Thread(() -> { while (true) { String barcode = reader2.readBarcode(); if (barcode != null) { textBox.setText(barcode); break; } Thread.sleep(500); } }); thread1.start(); thread2.start(); } } class BarcodeReader { private final String port; private final int baudRate; public BarcodeReader(String port, int baudRate) { this.port = port; this.baudRate = baudRate; } public String readBarcode() { // バーコードを読み込む処理を実装してください // 読み込めた場合はバーコードの値を、読み込めなかった場合はnullを返すようにしてください return null; } } ``` 上記のコードは、バーコードリーダーのインスタンスを2つ作成し、それぞれがバーコードを読み込むスレッドとして処理を行っています。バーコードが読み込まれた場合には、それをテキストボックスに表示するように設定しています。 ただし、バーコードを読み込む処理(`readBarcode`メソッド)は、具体的に使用するバーコードリーダーに合わせて実装する必要があります。例えば、バーコードリーダーがシリアル通信を行う場合は、通信処理を実装してバーコードを取得するようにしてください。 以上のコードは参考程度にご利用いただければ幸いです。ご要望に合わせてカスタマイズしてください。また、バーコードリーダーのプラットフォームやライブラリによっては、ライブラリのインストールや設定が必要な場合がありますので、詳細は各リーダーのドキュメントをご参照ください。 お困りの事柄が解決し、工場のラインでスムーズな作業ができることを願っています。何か他にお困りのことがありましたら、お気軽にご相談ください。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/

Java_syoshinsya
質問者

お礼

ありがとうございます。

Powered by GRATICA

関連するQ&A