80,351
社区成员
发帖
与我相关
我的任务
分享
public abstract class SerialPortActivity extends Activity {
protected Application mApplication;
protected SerialPort mSerialPort;
protected OutputStream mOutputStream;
private InputStream mInputStream;
private ReadThread mReadThread;
private class ReadThread extends Thread {
@Override
public void run() {
super.run();
while (!isInterrupted()) {
int size;
try {
byte[] buffer = new byte[64];
if (mInputStream == null) {
return;
}
size = mInputStream.read(buffer);
if (size > 0) {
onDataReceived(buffer, size);
}
} catch (IOException e) {
e.printStackTrace();
return;
}
}
}
}
private void DisplayError(int resourceId) {
AlertDialog.Builder b = new AlertDialog.Builder(this);
b.setTitle("Error");
b.setMessage(resourceId);
b.setPositiveButton("OK", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
SerialPortActivity.this.finish();
}
});
b.show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mApplication = (Application) getApplication();
try {
mSerialPort = mApplication.getSerialPort();
mOutputStream = mSerialPort.getOutputStream();
mInputStream = mSerialPort.getInputStream();
/* Create a receiving thread */
mReadThread = new ReadThread();
mReadThread.start();
} catch (SecurityException e) {
DisplayError(R.string.error_security);
} catch (IOException e) {
DisplayError(R.string.error_unknown);
} catch (InvalidParameterException e) {
DisplayError(R.string.error_configuration);
}
}
protected abstract void onDataReceived(final byte[] buffer, final int size);
@Override
protected void onDestroy() {
if (mReadThread != null)
mReadThread.interrupt();
mApplication.closeSerialPort();
mSerialPort = null;
super.onDestroy();
}
}
09-29 14:18:58.687 26036-26349/com.huruwo.sportthread W/System.err: java.lang.InterruptedException
09-29 14:18:58.687 26036-26349/com.huruwo.sportthread W/System.err: at java.lang.VMThread.sleep(Native Method)
09-29 14:18:58.687 26036-26349/com.huruwo.sportthread W/System.err: at java.lang.Thread.sleep(Thread.java:1013)
09-29 14:18:58.697 26036-26349/com.huruwo.sportthread W/System.err: at java.lang.Thread.sleep(Thread.java:995)
09-29 14:18:58.697 26036-26349/com.huruwo.sportthread W/System.err: at com.huruwo.sportthread.Data1Activity$myThread.run(Data1Activity.java:150)
09-29 14:18:58.697 26036-26349/com.huruwo.sportthread W/System.err: java.io.IOException: ioctl failed: EBADF (Bad file number)
09-29 14:18:58.697 26036-26349/com.huruwo.sportthread W/System.err: at libcore.io.IoBridge.available(IoBridge.java:68)
09-29 14:18:58.707 26036-26349/com.huruwo.sportthread W/System.err: at java.io.FileInputStream.available(FileInputStream.java:110)
09-29 14:18:58.707 26036-26349/com.huruwo.sportthread W/System.err: at com.huruwo.sportthread.Data1Activity$myThread.run(Data1Activity.java:130)
09-29 14:18:58.707 26036-26349/com.huruwo.sportthread W/System.err: Caused by: libcore.io.ErrnoException: ioctl failed: EBADF (Bad file number)
09-29 14:18:58.717 26036-26349/com.huruwo.sportthread W/System.err: at libcore.io.Posix.ioctlInt(Native Method)
09-29 14:18:58.717 26036-26349/com.huruwo.sportthread W/System.err: at libcore.io.ForwardingOs.ioctlInt(ForwardingOs.java:84)
09-29 14:18:58.717 26036-26349/com.huruwo.sportthread W/System.err: at libcore.io.IoBridge.available(IoBridge.java:52)
09-29 14:18:58.727 26036-26349/com.huruwo.sportthread W/System.err: ... 2 more
但是数据算是正确的传到了