通信威胁Javafx与read lacenty

2024-06-11 01:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Javafx上遇到了通信威胁问题

事实上,当我通过我的树莓pi发送一个字符串消息需要2秒钟时,我的响应需要7秒钟,对于我的应用程序来说太长了,但是序列号,它是即时的

这是我的服务器代码:

package tco;

import java.io.*;
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;


public class MyRxTx extends Thread {

    TCO tco = new TCO();
    static Socket clientSocket;
    static String homeIp = "192.168.43.90"; //internal ip of server (aka Pi in this case)
    static int port = 12800;
    String message;
    int stream;

    @Override
    public void run() {

        try {
            //Protocole de connection
            Socket sock = new Socket(homeIp, port);
            PrintStream out = new PrintStream(sock.getOutputStream());
            BufferedInputStream reader = null;
            reader = new BufferedInputStream(sock.getInputStream());

            while(true) {
                if(reader.available() != 0){
                byte[] b = new byte[500];
                stream = reader.read(b);
                message = new String(b, 0, stream);
                if(message.length()==8){
                    tco.gestion_donnee_recue(message);
                }
                }
                out.println(TCO.ligne_a_ecrire);
                TCO.ligne_a_ecrire=""; 
            }

        } catch (IOException ex) {
            System.out.println("Impossible de joindre : " + homeIp + "." + ex.getMessage());
        }

    }
}

这是我的适配器代码:

import threading
import time
import sys
import serial
import os
import socket

def Task1(ser):
    while 1:
        input=ser.readline()
        connexion_avec_client.send(input)
        time.sleep(0.005)
def Task2(ser):
    while 1:
        msg_recu = connexion_avec_client.recv(1024)
        ser.write(msg_recu)
def Main():
    ser = serial.Serial(
    port='/dev/ttyACM0',\
    baudrate=9600,\
    parity=serial.PARITY_NONE,\
    stopbits=serial.STOPBITS_ONE,\
    bytesize=serial.EIGHTBITS,\
        timeout=0)

    t1 = threading.Thread(target = Task1, args=[ser])
    t2 = threading.Thread(target = Task2, args=[ser])    
    t1.start()
    t2.start()

hote = ''
port = 12800
connexion_principale = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion_principale.bind((hote, port))
connexion_principale.listen(5)
print("Le serveur écoute à présent sur le port {}".format(port))
connexion_avec_client, infos_connexion = connexion_principale.accept()
msg_recu = b""

Main()

如果有人有办法, 再见


Tags: importmessagenewportserialstaticsocketjava