From fef1813e9a811cbcf44bda45b366497485e45c56 Mon Sep 17 00:00:00 2001 From: MRSa Date: Mon, 6 May 2019 22:26:48 +0900 Subject: [PATCH] =?utf8?q?=E3=82=B7=E3=83=A3=E3=83=83=E3=82=BF=E3=83=BC?= =?utf8?q?=E3=82=92=E5=88=87=E3=82=8C=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?utf8?q?=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../gokigen/cameratest/fuji/Communication.java | 16 +++++++++++- .../osdn/gokigen/cameratest/fuji/Connection.java | 30 +++++++++++----------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Communication.java b/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Communication.java index 851cc0f..2328c0c 100644 --- a/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Communication.java +++ b/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Communication.java @@ -22,6 +22,7 @@ class Communication private Socket socket = null; private DataOutputStream dos = null; private BufferedReader bufferedReader = null; + private int sequenceNumber = 0x0000000a; private final FujiStreamReceiver stream; private final FujiAsyncResponseReceiver response; @@ -79,7 +80,7 @@ class Communication System.gc(); } - void send_to_camera(byte[] byte_array) + void send_to_camera(byte[] byte_array, boolean useSeqNumber) { //Log.v(TAG, "send_to_camera() : " + byte_array.length + " bytes."); try @@ -95,9 +96,22 @@ class Communication sendData[3] = 0x00; System.arraycopy(byte_array,0,sendData,4, byte_array.length); + if (useSeqNumber) + { + sendData[8] = (byte) ((0x000000ff & sequenceNumber)); + sendData[9] = (byte) (((0x0000ff00 & sequenceNumber) >>> 8) & 0x000000ff); + sendData[10] = (byte) (((0x00ff0000 & sequenceNumber) >>> 16) & 0x000000ff); + sendData[11] = (byte) (((0xff000000 & sequenceNumber) >>> 24) & 0x000000ff); + + Log.v(TAG, "SEQ No. : " + sequenceNumber); + + // シーケンス番号を増やす + sequenceNumber++; + } // ログに送信メッセージを出力する dump_bytes("SEND[" + sendData.length + "] ", sendData); + // (データを)送信 dos.write(sendData); dos.flush(); diff --git a/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Connection.java b/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Connection.java index 435bd40..51a4701 100644 --- a/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Connection.java +++ b/app/src/main/java/net/osdn/gokigen/cameratest/fuji/Connection.java @@ -34,7 +34,7 @@ public class Connection ReceivedDataHolder rx_bytes; comm.connect_socket(); - comm.send_to_camera(sequence.registration_message()); + comm.send_to_camera(sequence.registration_message(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(0, rx_bytes); Thread.sleep(50); @@ -42,67 +42,67 @@ public class Connection // 応答エラーの場合は この値が返ってくるはず = {0x05, 0x00, 0x00, 0x00, 0x19, 0x20, 0x00, 0x00}; // start_messageを送信 - comm.send_to_camera(sequence.start_message()); + comm.send_to_camera(sequence.start_message(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(1, rx_bytes); Thread.sleep(50); // なんだろう?? (送信が必要なようだが) - comm.send_to_camera(sequence.start_message2()); + comm.send_to_camera(sequence.start_message2(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(2, rx_bytes); Thread.sleep(50); // two_part messageを発行 (その1) - comm.send_to_camera(sequence.start_message3_1()); + comm.send_to_camera(sequence.start_message3_1(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(3, rx_bytes); Thread.sleep(50); // two_part messageを発行 (その2) - comm.send_to_camera(sequence.start_message3_2()); + comm.send_to_camera(sequence.start_message3_2(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(4, rx_bytes); Thread.sleep(50); // remote mode - comm.send_to_camera(sequence.start_message4()); + comm.send_to_camera(sequence.start_message4(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(5, rx_bytes); Thread.sleep(50); // two_part messageを発行 (その1) - comm.send_to_camera(sequence.start_message5_1()); + comm.send_to_camera(sequence.start_message5_1(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(6, rx_bytes); Thread.sleep(50); // two_part messageを発行 (その2) - comm.send_to_camera(sequence.start_message5_2()); + comm.send_to_camera(sequence.start_message5_2(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(7, rx_bytes); Thread.sleep(50); // ???? - comm.send_to_camera(sequence.start_message6()); + comm.send_to_camera(sequence.start_message6(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(8, rx_bytes); Thread.sleep(50); // ???? - comm.send_to_camera(sequence.start_message7()); + comm.send_to_camera(sequence.start_message7(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(9, rx_bytes); Thread.sleep(50); // ???? - comm.send_to_camera(sequence.start_message8()); + comm.send_to_camera(sequence.start_message8(), false); rx_bytes = comm.receive_from_camera(); dump_bytes(10, rx_bytes); Thread.sleep(50); // ???? - comm.send_to_camera(sequence.start_message9()); + comm.send_to_camera(sequence.start_message9(), false); // 応答OKの場合は、8バイト ({0x03, 0x00, 0x01, 0x20} + {0x10, 0x02, 0x00, 0x00} )が応答されるはず rx_bytes = comm.receive_from_camera(); @@ -129,7 +129,7 @@ public class Connection { try { - comm.send_to_camera(sequence.reset_message()); + comm.send_to_camera(sequence.reset_message(), true); ReceivedDataHolder rx_bytes = comm.receive_from_camera(); dump_bytes(0, rx_bytes); Thread.sleep(150); @@ -158,7 +158,7 @@ public class Connection { try { - comm.send_to_camera(sequence.status_request_message()); + comm.send_to_camera(sequence.status_request_message(), true); ReceivedDataHolder rx_bytes = comm.receive_from_camera(); dump_bytes(12, rx_bytes); @@ -202,7 +202,7 @@ public class Connection { try { - comm.send_to_camera(sequence.execute_shutter_message()); + comm.send_to_camera(sequence.execute_shutter_message(), true); ReceivedDataHolder rx_bytes = comm.receive_from_camera(); dump_bytes(14, rx_bytes); -- 2.11.0