안 드 로 이 드 직렬 통신 apk 소스 코드 상세 설명(전체 소스 코드 첨부)
원래 항목 주소
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 소스 코드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.