Итак, я новичок в разработке Java и Android. Пока я создаю приложение, которое может подключаться и взаимодействовать с ардуином. У меня есть метод, который способен читать данные из arduino (в байтах), а затем печатать данные как строку в UTF-8 .... Однако я просто хочу, чтобы этот метод читал и интерпретировал данные, и интерпретируемые данные, подлежащие вызову от другого метода, например, кнопка от android. Ниже приведен код, который считывает данные.Разработка android с arduino
public class MainActivity extends AppCompatActivity {
public final String Action_USB_Permission = "com.example.myapplication.USB_PERMISSION";
UsbManager usbManager;
UsbDevice device;
UsbSerialDevice serial;
UsbDeviceConnection connection;
String data;
String adata;
TextView textView;
Button tempButton
UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() {
@Override
public void onReceivedData(byte[] arg0) {
try {
data = new String(arg0, "UTF-8"); //edit (removed String in "String data =")
} catch (UnsupportedEncodingException e) {
e.getStackTrace();
}
}
};
// Serial codes and commands
public void pushcmd(String command) { //command for serial
serial.write(command.getBytes());
}
public void gettemp() {
pushcmd("T\n");
serial.read(mCallback);
adata = data;
}
//This is for the app creation i think
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usbManager = (UsbManager) getSystemService(this.USB_SERVICE);
tempButton = (Button) findViewById(R.id.buttontemp);
}
public void onClickTemp(View view) { //This is the command to print data
gettemp();
tvAppend(textView, "\n Measured temperature \n" + adata);
}
private void tvAppend(TextView tv, CharSequence text) {
final TextView ftv = tv;
final CharSequence ftext = text;
runOnUiThread(new Runnable() {
@Override
public void run() {
ftv.append(ftext);
}
});
}
}
tvAppend - это метод, который печатает строку в текстовом виде на экране. Я получил библиотеку из https://github.com/felHR85/UsbSerial, и он говорит просто ссылаться на него с
serial.read (mcallback), я попробовал команду, но я получаю «измеренное temperaturenull», то измерение будет печататься после, который из метод onReceivedData. Любые предложения были бы очень благодарны. Если я не знаю, дайте мне знать, я попытаюсь разобраться в чем-то еще.
Редактировать: Я добавил свой метод tvAppend, определил поле текстового поля и кнопку. Я также указываю, что у меня нет всей включенной программы, я следил за реализацией всех схем http://www.allaboutcircuits.com/projects/communicate-with-your-arduino-through-android/ Еще раз спасибо за отзыв
КОММЕНТАРИЙ О редактировании: когда код изменен на то, как он выше. адаты не отображаются, только «Измеренная температура».
Попробуйте удалить '' String' из строковых данных = ' –
Кроме того, вы, кажется, с отсутствующим полная часть создания [mcve]. Вам не хватает как переменной textView, так и метода tvAppend –
@ cricket_007 Спасибо, что сообщили мне о том, что вы недостаточно ясны. Я также попытался удалить String из данных String = – robman