Processingを使って、シリアル通信を行う際のシリアルナンバーを確認するプログラムを掲載します。
Processingで以下のプログラムを起動します。
import processing.serial.*; Serial serial_port = null; // the serial port // serial port buttons Button btn_serial_up; // move up through the serial port list Button btn_serial_dn; // move down through the serial port list Button btn_serial_connect; // connect to the selected serial port Button btn_serial_disconnect; // disconnect from the serial port Button btn_serial_list_refresh; // refresh the serial port list String serial_list; // list of serial ports int serial_list_index = 0; // currently selected serial port int num_serial_ports = 0; // number of serial ports in the list void setup() { // set the window size size (640, 480); // create the buttons btn_serial_up = new Button("^", 140, 10, 40, 20); btn_serial_dn = new Button("v", 140, 50, 40, 20); btn_serial_connect = new Button("Connect", 190, 10, 100, 25); btn_serial_disconnect = new Button("Disconnect", 190, 45, 100, 25); btn_serial_list_refresh = new Button("Refresh", 190, 80, 100, 25); // get the list of serial ports on the computer serial_list = Serial.list()[serial_list_index]; //println(Serial.list()); //println(Serial.list().length); // get the number of serial ports in the list num_serial_ports = Serial.list().length; } void mousePressed() { // up button clicked if (btn_serial_up.MouseIsOver()) { if (serial_list_index > 0) { // move one position up in the list of serial ports serial_list_index--; serial_list = Serial.list()[serial_list_index]; } } // down button clicked if (btn_serial_dn.MouseIsOver()) { if (serial_list_index < (num_serial_ports - 1)) { // move one position down in the list of serial ports serial_list_index++; serial_list = Serial.list()[serial_list_index]; } } // Connect button clicked if (btn_serial_connect.MouseIsOver()) { if (serial_port == null) { // connect to the selected serial port
serial_port = new Serial(this, Serial.list()[serial_list_index], 9600); } } // Disconnect button clicked if (btn_serial_disconnect.MouseIsOver()) { if (serial_port != null) { // disconnect from the serial port serial_port.stop(); serial_port = null; } } // Refresh button clicked if (btn_serial_list_refresh.MouseIsOver()) { // get the serial port list and length of the list serial_list = Serial.list()[serial_list_index]; num_serial_ports = Serial.list().length; } } void draw() { // draw the buttons in the application window btn_serial_up.Draw(); btn_serial_dn.Draw(); btn_serial_connect.Draw(); btn_serial_disconnect.Draw(); btn_serial_list_refresh.Draw(); // draw the text box containing the selected serial port DrawTextBox("Select Port", serial_list, 10, 10, 120, 60); } // function for drawing a text box with title and contents void DrawTextBox(String title, String str, int x, int y, int w, int h) { fill(255); rect(x, y, w, h); fill(0); textAlign(LEFT); textSize(14); text(title, x + 10, y + 10, w - 20, 20); textSize(12); text(str, x + 10, y + 40, w - 20, h - 10); } // button class used for all buttons class Button { String label; float x; // top left corner x position float y; // top left corner y position float w; // width of button float h; // height of button // constructor Button(String labelB, float xpos, float ypos, float widthB, float heightB) { label = labelB; x = xpos; y = ypos; w = widthB; h = heightB; } // draw the button in the window void Draw() { fill(218); stroke(141); rect(x, y, w, h, 10); textAlign(CENTER, CENTER); fill(0); text(label, x + (w / 2), y + (h / 2)); } // returns true if the mouse cursor is over the button boolean MouseIsOver() { if (mouseX > x && mouseX < (x + w) && mouseY > y && mouseY < (y + h)) { return true; } return false; } }
このプログラムを起動すると、以下の画面が表示されます。
PCに何も接続されていない場合は、「Select Port」にポート「COM1」が表示されています。
セレクトボタンをクリックしても「COM1」しか表示されません。
次に、レーダー本体をUSBポートに接続して、「Refresh」ボタンをクリックします。
その後、セレクトボタンをクリックすると次のように「COM1」以外に「COM3」が表示されます。
この「COM3」がレーダー本体の接続されているポート名です。
確認するだけでしたら「Connect」ボタン(接続)、「Disconnect」ボタン(切断)は使わなくても良いです。