在MainActivity里定义一个operateSerialPort ioperateSerialPort = new operateSerialPort(mInputStream,mOutputStream);
ioperateSerialPort.setOnDataReceiveListener(new operateSerialPort.OnDataReceiveListener() {
@Override
public void onDataReceive(byte[] buffer, int size) {
Log.d("MainActivity", "进入数据监听事件中。。。" + new String(buffer));
}
});
重写一个接口;
然后在其他地方new serialReadThread().start();一个线程
class serialReadThread extends Thread{
@Override
public void run()
{
super.run();
byte [] buffer=new byte[32];
int size=0;
Log.d(TAG,"running Serial Receive Thread!");
while(true)
{
try
{
size=mInputStream.read(buffer);
Thread.sleep(100);
if(size>0)
{
Log.d(TAG,"receive lock data:"+byteToHexStr(buffer,size));
for(int i=0;i<size;i++)
{
System.out.printf(" %2X",buffer[i]);
}
System.out.println("");
Log.d(TAG,"receive data lenght:"+String.valueOf(size));
onDataReceiveListener.onDataReceive(buffer,3);
size=0;
}
} catch (IOException e) {
Log.e(TAG,"Receive Lock data fail!"+e.toString());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
一直运行,串口接收到数据就报错,java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.serialtest.operateSerialPort$OnDataReceiveListener.onDataReceive(byte[], int)' on a null object reference这样的错误,求解是什么原因?