Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中利用触发事件连续控制arduino直流电机_Java_Android_Sockets_Arduino_Serial Port - Fatal编程技术网

java中利用触发事件连续控制arduino直流电机

java中利用触发事件连续控制arduino直流电机,java,android,sockets,arduino,serial-port,Java,Android,Sockets,Arduino,Serial Port,我试图用pc java通过Arduino Uno控制一个小型直流电机。此java应用程序是服务器应用程序,使用套接字与android应用程序连接。它可以在来自java的单个命令上工作。但不工作,不断按下。我想旋转电机时,我不断按下按钮,并停止按向上。请帮帮我 这是android代码/连续按压/ class RepetitiveUpdater implements Runnable { @Override public void run() {

我试图用pc java通过Arduino Uno控制一个小型直流电机。此java应用程序是服务器应用程序,使用套接字与android应用程序连接。它可以在来自java的单个命令上工作。但不工作,不断按下。我想旋转电机时,我不断按下按钮,并停止按向上。请帮帮我

这是android代码/连续按压/

   class RepetitiveUpdater implements Runnable {

        @Override
        public void run() {
            if (autoIncrement) {
                increment();
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                repeatUpdateHandler.postDelayed(new RepetitiveUpdater(), REPEAT_DELAY);
            } else if (autoDecrement) {
                decrement();
                repeatUpdateHandler.postDelayed(new RepetitiveUpdater(), REPEAT_DELAY);
            }
        }

    }

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            increment();
        }
    });

    btn.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            autoIncrement = true;
            repeatUpdateHandler.post(new RepetitiveUpdater());
            return false;
        }
    });

    btn1.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            autoDecrement = true;
            repeatUpdateHandler.post(new RepetitiveUpdater());
            return false;
        }
    });
这是java服务器

private void sendMsgToPort(int k) {
    try {
        String s = String.valueOf(k);
        char buf2[] = s.toCharArray();
        serialPort.writeByte((byte) buf2[0]);
    } catch (SerialPortException ex) {
        System.out.println(ex);
    }
}

// ........
        while (true) {
            try {

                clientSocket = serverSocket.accept(); // accept the client connection
                inputStreamReader = new InputStreamReader(clientSocket.getInputStream());
                bufferedReader = new BufferedReader(inputStreamReader); // get the client message
                message = bufferedReader.read();
                sendMsgToPort(message);
                System.out.println("m=:" + message);
               // System.out.println("Serial : "+serialPort.readString());
                //inputStreamReader.close();
               // clientSocket.close();
                //System.out.println(serialPort.readBytes());
                //Thread.sleep(100);

            } catch (IOException ex) {
                // status.setText("Error: " + ex);
                System.out.println("Problem in message reading");
            } 
        } 
下面是ardiuno示例代码:

int val = 0;
int led = 8;

void setup()
{
   Serial.begin(9600);
   pinMode(led, OUTPUT);
}

void loop()
{
   delay(100);
}

void serialEvent() // To check if there is any data on the Serial line
{
   if (Serial.available())
   {
       val = Serial.parseInt();
       if(val == 1)   //Switch on the LED, if the received value is 1.
       {
          digitalWrite(led, HIGH);
       }
   }

}

`Java服务器程序中存在一个问题:

clientSocket=serverSocket.accept()

您接受一个新连接,读取/处理一条消息,然后? 客户端套接字超出了范围。连接保持打开状态,代码等待再次建立新连接


搜索“Java多线程服务器”示例,非常简单。接受后,在专用线程中完全处理每个连接,以便您可以同时等待另一个连接和处理已建立连接上的较长对话。

谢谢您的建议。我试试JimmyB