?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

블루투스 템플릿 이용해서 아두이노에 데이터전달하고자 합니다.

페이지 정보

작성자 장승희 메일보내기 이름으로 검색 작성일15-05-01 14:17 조회2,927회 댓글2건

본문

기존에 블루투스를 사용하였으나 

실제로 쓰기위해 서비스를 돌리고자 조사하던중 템플릿을 발견하였습니다.

 

헌데 sendMessageToRemote 함수를 이용하여 디바이스에 메시지를 보내는게 아닌가요?

안드로이드 초보라 

일단 첫 탭의 프레그먼트인 ExampleFragment 에 

다음과 같이 버튼을 추가하고 버튼클릭이벤트를 작성하였습니다.

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false);
        
        btn1 = (Button) rootView.findViewById(R.id.button1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(),"hi",Toast.LENGTH_SHORT).show();
                btcTemplateService.sendMessageToRemote("Shi");
            }
        });
        return rootView;
    }

물론 클래스전역으로 객체생성하였구요.

BTCTemplateService btcTemplateService = new BTCTemplateService();

 

헌데 아두이노 시리얼에서 확인하기도 전에 앱이 꺼져버립니다.

05-01 14:14:29.557  20641-20641/com.hardcopy.btctemplate E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.hardcopy.btctemplate, PID: 20641
    java.lang.NullPointerException: Attempt to invoke virtual method 'com.hardcopy.btctemplate.bluetooth.TransactionBuilder$Transaction com.hardcopy.btctemplate.bluetooth.TransactionBuilder.makeTransaction()' on a null object reference
            at com.hardcopy.btctemplate.service.BTCTemplateService.sendMessageToDevice(BTCTemplateService.java:153)
            at com.hardcopy.btctemplate.service.BTCTemplateService.sendMessageToRemote(BTCTemplateService.java:287)
            at com.hardcopy.btctemplate.fragments.ExampleFragment$1.onClick(ExampleFragment.java:54)
            at android.view.View.performClick(View.java:5197)
            at android.view.View$PerformClick.run(View.java:20909)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5942)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

 

초보라 봐도 잘 모르겠네요 ㅠㅠ 

조언부탁드립니다.

댓글목록

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

BTCTemplateService 는 안드로이드 앱에서 백그라운드 서비스 돌릴때 사용하는 특수 클래스입니다. 그냥 객체 생성해서 사용하시면 안됩니다. Activity 에서 Service의 메서드를 호출하기 위한 사전작업을 MainActivity.java 안에 해 뒀으니... 일단 fragment에서 activity로 메시지를 보내세요. 그리고 activity에서 다시 service의 public 메서드를 호출하는 형태로 사용하시면 됩니다.

일단 이 부분 수정하고 에러 메시지를 다시 봐야할 것 같습니다.

안드로이드에미쳐님의 댓글

안드로이드에미쳐 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

저도 지금 sendMessage가 문제인데요..
기존 액티비티가 아닌 다른 액티비티 화면에서 그 메서드를 사용할려고 하는데, 일단 doStartService()
를 실행시켜서 서비스 정보를 받고 메시지를 보냈는데 결국 BTCTemplateService.java에서
transaction 가 NULL 값이 나오면서 튕겨버리는데 어떻게 해야되죠..