안녕하세요. 그리고 저는 당신에게 조언을 구하러 왔습니다. 기본적으로 다음과 같은 두 가지 방법이있는 클래스가 있습니다. 직렬 포트 (UART)로 데이터를 보내고 데이터를받습니다. 잘 작동합니다.안드로이드 쓰레드에 대한 조언
이제는 직렬 포트에 데이터를 전송하는 방식으로 수정해야합니다. serialPort.writeBytes (src.getBytes()); 및 3 초 동안 회신을 기다리는 경우, 3 초 이내에 회신을 받으면 TextView로 업데이트해야하고 그렇지 않으면 두 번째 데이터를 보내야합니다 (serialPort.writeBytes (src1.getBytes());) 다시 응답을 기다립니다.
나는 그것을 배우기 시작한 이래로 스레드 및 처리기의 전문가는 아닙니다. 이것에 대해 조언 해주세요. 시간 내 주셔서 대단히 감사합니다.
public void sendData(){
final String src = "MYDATA\r";
final String src1 = "MYDATA1\r";
serialPort.writeBytes(src.getBytes());
**// Pause here and wait for the reply**
serialPort.writeBytes(src1.getBytes());
**// Pause here and wait for reply**
}
private class ReadThread extends Thread {
byte[] buf = new byte[512];
@Override
public void run() {
super.run();
while (!isInterrupted()) {
int size;
if (mInputStream == null)
return;
size = serialPort.readBytes(buf);
if (size > 0) {
byte[] dest = new byte[size];
System.arraycopy(buf, 0, dest, 0, size);
byteLinkedList.offer(dest);
onDataReceived();
}
}
}
}
이제
Android 태그가 아닌 더 많은 뷰를 얻기 위해 Java 태그를 추가했습니다. 귀하의 질문에 대해서는, sendData()를 스레드 실행 메소드 내에서 호출하고 첫 번째 바이트를 보내고 readData()를 호출하고 Thread.sleep (3000)을 수행 한 다음 데이터를 수신했는지 확인합니다. 초를 이미 통과 한 경우), 두 번째 청크 청크를 보내거나 청취하지 않으면 아무것도하지 않습니다. – momo