edit_recv_data = findViewById(R.id.editRecvData); // 接收数据框用log打印出值
时间: 2024-03-16 12:44:53 浏览: 94
您想知道如何使用 log 打印出 editRecvData 接收到的值吗?如果是的话,您可以在代码中加入以下语句:
```java
Log.d("TAG", editRecvData.getText().toString());
```
其中,TAG 是您自己定义的一个字符串,用于标识这条日志的来源,可以是任意字符串。这样,每次接收到数据时,logcat 中就会输出这条日志,包括 editRecvData 接收到的值。
相关问题
import socket import numpy as np import scipy.signal as signal from scipy.fftpack import fft,ifft from scipy.stats import pearsonr import matplotlib.pyplot as pltdef is_valid(corr_arr): for i in range(0, 25): if corr_arr[i] < 0.8: return False return True if __name__ == '__main__':udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2.绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配 dest_addr = ('192.168.4.2', 4444) # ip地址 和端口号,ip一般不用写,表示本机的任何一个ip udp_socket.bind(dest_addr) # 必须绑定自己的IP N = 32768 # 采样点数 fs = 48000 # 采样频率 n = np.arange(N) # 用于产生离散时间序列 f = n * fs / N # 生成频率序列,为后续作图做准备#将标准的chirp数据取出来作为标准 file_object = open('chirp2218.txt') try: chirp_data_str = file_object.read() chirp_data_spl = chirp_data_str.split(',') n = len(chirp_data_spl) chirp_data = np.zeros(4800, dtype=np.int16) for i in range(0, 4800): chirp_data[i] = int(chirp_data_spl[i]) finally: file_object.close() while True: recv_data = udp_socket.recvfrom(19200) n = len(recv_data[0])voice_data = recv_data[0]voice_data_del = np.zeros(9600, dtype=np.int16)
这段代码主要是一个Python程序,首先导入了一些Python的库,包括socket、numpy、scipy.signal、scipy.fftpack、scipy.stats和matplotlib.pyplot。这些库提供了一些常用的函数和工具,例如用于网络通信的socket库、用于科学计算的numpy和scipy库、用于绘图的matplotlib库等。
is_valid函数用于判断相关系数数组中的值是否满足一定的条件。具体来说,它会判断数组中第一个值是否大于0.8,如果大于则继续判断数组中后面的25个值是否都大于0.8,如果都大于则返回True,否则返回False。
在main函数中,代码首先创建了一个UDP套接字并绑定了本地的IP地址和端口号。然后定义了一些常量,包括采样点数N、采样频率fs、离散时间序列n和频率序列f。这些常量为后续的信号处理和绘图做准备。
接下来,代码从文件中读取了标准的chirp数据并将其转换为numpy数组。然后,代码进入一个无限循环,不断接收UDP数据并对其进行处理。具体来说,代码首先从接收到的数据中取出音频数据,并将其转换为numpy数组。然后,代码对音频数据进行一些处理并进行相关性分析,最后根据相关性分析的结果进行判断并输出结果。
public void showMsg(String text) { msg_view.post(() -> msg_view.setText(text)); } // 显示接收数据 public void showRecvData(String text, boolean append) { edit_recv_data.post(() -> { if (edit_recv_data.getLineCount() > 4 || edit_recv_data.length()>1000 || !append) { edit_recv_data.setText(text); } else { edit_recv_data.append(text); } }); } public void showRecvData(String text){ showRecvData(text, true); }; /** * 显示操作区域 * * @param show 显示接收区域(连接之后) * @param edit 可编辑,显示编辑区域(服务匹配之后) */ public void showOpView(boolean show, boolean edit) { op_view.post(() -> { if (show) { if (edit) { view_can_send.setVisibility(View.VISIBLE); } else { view_can_send.setVisibility(View.GONE); } op_view.setVisibility(View.VISIBLE); } else { op_view.setVisibility(View.GONE); } }); } public void showRecvLen(long len){ text_recv_len.post(()->{ if(len>=0){ text_recv_len.setText(String.valueOf(len)); Log.i(TAG,"len.." +len); } }); } public void run(byte[] value){ // 拼接数据 String byteStrTemp = Util.byte2Str(value); bleDataStr += byteStrTemp;
根据你提供的代码,我将这些方法拼接起来,让界面显示接收到的数据:
```
public void run(byte[] value) {
// 拼接数据
String byteStrTemp = Util.byte2Str(value);
bleDataStr += byteStrTemp;
// 显示接收数据
showRecvData(bleDataStr);
// 显示数据长度
showRecvLen(bleDataStr.length());
// 显示操作区域
showOpView(true, true);
}
```
这段代码将接收到的数据拼接到 `bleDataStr` 字符串上,并调用 `showRecvData()` 和 `showRecvLen()` 方法分别显示接收到的数据和数据长度。最后,调用 `showOpView()` 方法显示操作区域。
阅读全文