안 드 로 이 드 직렬 통신 apk 소스 코드 상세 설명(전체 소스 코드 첨부)

6539 단어 Android주둥이apk
1.SerialPortHelper"Android 직렬 통신"소개
원래 항목 주소
https://github.com/freyskill/SerialPortHelper
Android 직렬 통신 도 우 미 는 직렬 통신 이 필요 한 Android 외부 장치 에 사용 할 수 있 습 니 다.이 라 이브 러 리 는 다음 과 같은 특징 이 있 습 니 다.
1.직렬 통신 부분 은 C++를 사용 하여 이 루어 집 니 다.필자 가 접촉 한 일부 장 치 를 실측 하고 C++를 사용 하여 구 글 이 공식 적 으로 제공 하 는 Demo 를 실현 하 는 방식 이 빠 릅 니 다.
2.직렬 수신 최대 데이터 길 이 를 지원 하고 설정 해 야 합 니 다.라 이브 러 리 를 초기 화 할 때 이 매개 변 수 를 입력 해 야 합 니 다.이 설정 은 실제 사용 을 고려 하여 규정된 직렬 통신 프로 토 콜 형식 은 보통 최대 길이 로 고정 되 어 데 이 터 를 처리 하기에 편리 하기 때 문 입 니 다.
3.명령 을 한 번 에 받 을 수 있 도록 지원 합 니 다.직렬 포트 의 읽 기와 쓰기 스 레 드 를 동기 화 제어 합 니 다.명령 은 먼저 대기 열 에 가입 한 다음 에 순서대로 보 내 고 받 습 니 다.전 제 는 시간 초과 와 시간 초과 처 리 를 설정 해 야 합 니 다.아래 의 4,5 시 를 참고 하 십시오.
4.시간 초과 설정 을 지원 합 니 다.시간 초과 설정 후 명령 이 설 정 된 시간 내 에 피드백 되 지 않 으 면 설 정 된 작업 에 따라 이 명령 을 다시 보 내 거나 종료 합 니 다.
5.시간 초과 재 송(N 회 재 송 가능,구체 적 으로 필요 한 설정 에 따라)과 종 료 를 지원 합 니 다.종 료 는 리 셋 을 받 는 onComplete 방법 을 사용 합 니 다.
2.apk 데모 실행
이 라 이브 러 리 를 사용 하여 간단하게 실 현 된 직렬 디 버 깅 조수 도 구 를 사용 합 니 다.원래 작가 가 컴 파일 한 버 전에 문제 가 있 었 습 니 다.보 내 려 면 죽 을 것 입 니 다.제 가 다시 수정 하 였 습 니 다.여러분 이 사용 할 때 문제 가 있 으 면 제기 할 수 있 습 니 다.
사용 인터페이스

직렬 apk 사용 인터페이스

데이터 송 수신 인터페이스
3、APK 다운로드 주소
APK 다운로드-SerialPortHelperV 1.0.1-20201225.apk
https://github.com/freyskill/SerialPortHelper/blob/master/SerialPortHelperV1.0.1.apk
하면,만약,만약...
링크:https://pan.baidu.com/s/1GqR7taCh-iOqOU_57OSRtg추출 코드:qrhj
4.소프트웨어 접속 방식
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:

allprojects {
 repositories {
 ...
 maven { url 'https://www.jitpack.io' }
 }
}
Step 2. Add the dependency

dependencies {
  implementation 'com.github.freyskill:SerialPortHelper:v1.0.1'
}
5.사용 설명
초기 화 하려 면 max Size 를 설정 해 야 합 니 다.isReceiveMaxSize 를 설정 할 수도 있 습 니 다.이 매개 변 수 는 기본적으로 false 입 니 다.상세 한 설명 은 다음 과 같 습 니 다.
int maxSize;  // 직렬 읽 기 최대 데이터 길이 설정
boolean isReceiveMaxSize; // 직렬 프로 토 콜 이 정의 한 형식 길 이 는 16 바이트 입 니 다.그러면 max Size 를 16 으로 설정 한 다음 에 이 매개 변 수 를 true 로 설정 하면 받 은 명령 은 16 바이트 의 길 이 를 되 돌려 줍 니 다.
알림:isReceiveMaxSize 를 true 로 설정 한 것 은 명령 을 처리 하기 위해 서 입 니 다.예 를 들 어 전체 명령 의 길 이 는 16 이지 만 직렬 로 읽 는 과정 은 몇 번 에 걸 쳐 되 돌아 갑 니 다.

SerialPortHelper serialPortHelper = new SerialPortHelper(32);
SerialPortHelper serialPortHelper = new SerialPortHelper(32,true);
5.1.직렬 포트 초기 화

//   :      ,       ,          ,   、   、         8、1、N。
SerialPortHelper serialPortHelper = new SerialPortHelper(32);
//serialPortHelper.openDevice("dev/ttyS0");
serialPortHelper.openDevice("dev/ttyS0",11520);
//       
serialPortHelper.setSphResultCallback(new SphResultCallback() {
  @Override
  public void onSendData(SphCmdEntity sendCom) {
  Log.d(TAG, "    :" + sendCom.commandsHex);
  }
 
  @Override
  public void onReceiveData(SphCmdEntity data) {
  Log.d(TAG, "    :" + data.commandsHex);
  
  }
 
  @Override
  public void onComplete() {
  Log.d(TAG, "  ");
  }
 });

//   :  SerialPortConfig        
 
//    
SerialPortConfig serialPortConfig = new SerialPortConfig();
serialPortConfig.mode = 0;  //         (Raw Mode)     
serialPortConfig.path = path;  //     
serialPortConfig.baudRate = baudRate; //    
serialPortConfig.dataBits = dataBits; //          7  8
serialPortConfig.parity = checkBits;//         N ,E, O
serialPortConfig.stopBits = stopBits; //        1    2
 
//      
serialPortHelper = new SerialPortHelper(16);
//       
serialPortHelper.setConfigInfo(serialPortConfig);
//     
isOpen = serialPortHelper.openDevice();
if(!isOpen){
 Toast.makeText(this,"      !",Toast.LENGTH_LONG).show();
}
//       
serialPortHelper.setSphResultCallback(new SphResultCallback() {
 @Override
 public void onSendData(SphCmdEntity sendCom) {
 Log.d(TAG, "    :" + sendCom.commandsHex);
 }
 
 @Override
 public void onReceiveData(SphCmdEntity data) {
 Log.d(TAG, "    :" + data.commandsHex);
 
 }
 
 @Override
 public void onComplete() {
 Log.d(TAG, "  ");
 }
});
5.2.데이터 전송 과 수신

//     
serialPortHelper.addCommands(sendHexTxt); //          
serialPortHelper.addCommands(sendComBytes); //       
 
//       
SphCmdEntity comEntry = new SphCmdEntity();
comEntry.commands = commands; //         
comEntry.flag = flag;  //     
comEntry.commandsHex = DataConversion.encodeHexString(commands); //          
comEntry.timeOut = 100; //      ms
comEntry.reWriteCom = false; //          false
comEntry.reWriteTimes = 5; //      
comEntry.receiveCount = 1; //       ,   1
serialPortHelper.addCommands(comEntry);

//       
serialPortHelper.setSphResultCallback(new SphResultCallback() {
 @Override
 public void onSendData(SphCmdEntity sendCom) {
 Log.d(TAG, "    :" + sendCom.commandsHex);
 }
 
 @Override
 public void onReceiveData(SphCmdEntity data) {
 //        SphCmdEntity,         
 // commandsHex          
 // commands        
 // flag     ,            
 Log.d(TAG, "    :" + data.commandsHex);
 
 }
 
 @Override
 public void onComplete() {
 Log.d(TAG, "  ");
 }
});
5.3 직렬 포트 닫 기

serialPortHelper.closeDevice();
6.흔 한 질문
6.1 직렬 포트 열기 실패
일반적인 상황 은 장치 노드 의 권한 이 정확 하지 않 아서 명령 으로 직렬 포트 의 장치 노드 권한 을 볼 수 있 습 니 다.
7.수정 기록 20201225-수정
원래 의 기초 위 에서 인 터 페 이 스 를 간소화 하여 필요 하지 않 은 물건 을 없 애 버 렸 다.
20201211-수정
기본 코드 와 창 고 는 원래 작성 자의 것 이지 만 원래 코드 는 자주 끊 기 고 코드 에 수정 을 했 습 니 다.추 후 에는 더 많은 수정 이 있 을 것 이다.
안 드 로 이 드 직렬 통신 apk 소스 코드 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 안 드 로 이 드 직렬 통신 apk 소스 코드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기