【问题标题】:OutputStream.write() never endsOutputStream.write() 永远不会结束
【发布时间】:2016-01-29 14:31:55
【问题描述】:

我有一辆带有蓝牙接口的汽车,我使用我的 Android 应用程序连接到它。机器人经过编程,当他得到一个数字 1-5 时,他会做出一个动作。 1 - 向前行驶 2 - 向后行驶 3 - 左转 4 - 右转 5 - 停止 我的应用程序中有 5 个按钮。他们的活动是这样的

public void button1(View view){
socket.write("1");
}

其中socket是持有BluetoothSocket并建立连接并具有写入功能的类:

public void write(String signal)
{
try
{
OutputStream.write(signal.getBytes());
Log.d("#Signal", " connected");
} catch (IOException e)
{
}
}

并且!当我连接并按下例如发送 2 的按钮时,机器人开始向后移动,但我没有收到来自线路的消息

Log.d("#Signal", " connected");

所以看起来write(byte[] buffer) 函数永远不会结束它的过程。按一个按钮后,当我尝试按另一个按钮时,它不起作用。就像 OutputStream.write() 仍然尝试写一些东西。不知道为什么会这样,有什么解决办法吗?

【问题讨论】:

  • 你能做一个线程转储吗?在 Windows 上的控制台中使用 ctrl + break。
  • @Ferrybig 现在我什么都做不了,因为我的地方没有我连接的机器人,你打算在那之后做什么?顺便说一句,当我像 write(1) 一样发送单个 int 时,它会发送它并继续代码

标签: java outputstream robot


【解决方案1】:

像这样调用 write() 后尝试使用 flush() 函数

OutputStream.write(signal.getBytes());OutputStream.flush();

【讨论】:

  • 它不起作用,尝试过 :( 它不会进入下一行,就像 write() 是某种无限循环,如果它可以工作它会记录“#Signal”但是它没有
猜你喜欢
  • 2021-05-17
  • 2013-04-09
  • 2010-12-27
  • 1970-01-01
  • 2021-08-05
  • 2011-01-20
  • 2017-11-05
  • 2019-05-21
  • 1970-01-01
相关资源
最近更新 更多