package com.chuangyingkeji.serialportdetection.activity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Checkable;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import com.chuangyingkeji.serialportdetection.R;
import com.chuangyingkeji.serialportdetection.adapter.MyGridAdapter;
import com.chuangyingkeji.serialportdetection.application.MyApplication;
import com.chuangyingkeji.serialportdetection.constants.IConstant;
import com.chuangyingkeji.serialportdetection.entity.Option;
import com.chuangyingkeji.serialportdetection.utils.AryChangeManager;
import com.chuangyingkeji.serialportdetection.utils.SerialPortUtil;
import com.chuangyingkeji.serialportdetection.utils.ThreadPoolManager;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
private static boolean isSerialOpen = false;//串口状态
private static Button btnControlSerial;//控制串口开关
private GridView gridSetting;//串口数据设置区
private MyGridAdapter adapter;
private List<Option> options;
private static TextView textReceiveContent;//串口数据接收区
private EditText editTransportContent;//串口数据发送区
private RadioGroup groupReceive;//接收缓冲区
private RadioGroup groupTransport;//发送缓冲区
private Button btnClearReceive;//清空接收区按钮
private Button btnClearTransport;//清空发送区按钮
private Button btnSend;//发送串口指令
private CheckBox boxAutoSend;//自动发送
private EditText editAutoTime;//自动发送串口数据的时间间隔
private boolean isAutoSend = false;//是否自动发送
private static TextView textSendByte;//发送出去的字节数
private static TextView textReceiveByte;//接收到的字节数
private Button btnClear;//清空自动接收的字节数
private static String port;//串口号
private static int baud;//波特率
private static char check;//校验位
private static int data;//数据位
private static int stop;//停止位
private RadioGroup groupReceiveModel;//接收方法的单选按钮组
private RadioGroup groupTransportModel;//发送方法的单选按钮组
public static boolean isHexReceive = true;//当前为16进制接收
private static boolean isHexTransport = true;//当前为16进制发送
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
/*清空接收区
*/
btnClearReceive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textReceiveContent.setText("");
}
});
/*清空发送区
*/
btnClearTransport.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editTransportContent.setText("");
}
});
/*打开/关闭串口
*/
btnControlSerial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isSerialOpen){
//关闭串口
closeSerial();
}else{
//打开串口
openSerial();
}
}
});
/*发送串口指令
*/
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = editTransportContent.getText().toString();
Log.i("TAG",str+"=");
// for(int i:AryChangeManager.stringToHex(str)){
// Log.i("TAG",""+i);
// }
if(isHexTransport){
SerialPortUtil.sendHexSerialPort(AryChangeManager.stringToHex(str));
}else{
SerialPortUtil.sendTextSerialPort(str);
}
}
});
/**
*接收方式的选择改变监听
*/
groupReceiveModel.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.i("TAG","接收方式改变");
if(group.getCheckedRadioButtonId()==R.id.rb_receive_hex){
Log.i("TAG","16进制接收");
isHexReceive = true;
}else{
Log.i("TAG","文本模式接收");
isHexReceive = false;
}
}
});
/**
*发送方式的选择改变监听
*/
groupTransportModel.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.i("TAG","发送方式改变");
if(group.getCheckedRadioButtonId()==R.id.rb_transport_hex){
Log.i("TAG","16进制发送");
isHexTransport = true;
}else{
Log.i("TAG","文本模式发送");
isHexTransport = false;
}
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyApplication.receiveByte = 0;
MyApplication.sendByte = 0;
refreshReceiveByte();
refreshSendByte();
}
});
/*自动发送
*/
boxAutoSend.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, final boolean isChecked) {
isAutoSend = isChecked;
ThreadPoolManager.getManager().getCachedThreadPool().execute(new Runnable() {
@Override
public void run() {
try{
int time = Integer.valueOf(editAutoTime.getText().toString());
String str = editTransportContent.getText().toString();
Log.i("test","str="+str);
while (isAutoSend){
//自动发送
if(isHexTransport){
SerialPortUtil.sendHexSerialPort(AryChangeManager.stringToHex(str));
}else{
SerialPortUtil.sendTextSerialPort(str);
}
Thread.sleep(time);
}
}catch (Exception e){
e.printStackTrace();
}
}
});
}
});
final Handler handler = new Handler(getMainLooper()){
@Override
public void handleMessage(Message msg) {
if(msg.what==100){
refreshSendByte();
}
}
};
ThreadPoolManager.getManager().getCachedThreadPool().execute(new Runnable() {
@Override
public void run() {
while(true){
handler.sendEmptyMessage(100);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android Studio下的串口通信实例项目.zip (63个子文件)
Android Studio下的串口通信实例项目
SerialPortDetection-master
gradle.properties 730B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 230B
app
src
androidTest
java
com
chuangyingkeji
serialportdetection
ExampleInstrumentedTest.java 780B
test
java
com
chuangyingkeji
serialportdetection
ExampleUnitTest.java 416B
main
jni
SerialPort.h 760B
Android.mk 204B
SerialPort.c 7KB
gen_SerialPort_h.sh 90B
Application.mk 35B
java
android_serialport_api
SerialPort.java 3KB
com
chuangyingkeji
serialportdetection
application
MyApplication.java 575B
adapter
MyGridAdapter.java 2KB
MyBaseAdapter.java 2KB
utils
AryChangeManager.java 4KB
CrashHandler.java 6KB
ThreadPoolManager.java 4KB
SerialPortUtil.java 6KB
activity
MainActivity.java 12KB
entity
Option.java 608B
constants
IConstant.java 749B
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 8KB
mipmap-hdpi
ic_launcher_round.png 4KB
ic_launcher.png 3KB
mipmap-mdpi
ic_launcher_round.png 2KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 14KB
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher_round.png 6KB
ic_launcher.png 5KB
values
colors.xml 208B
strings.xml 1KB
styles.xml 197B
layout
include_setting_view.xml 206B
inflate_serial_port_setting.xml 761B
activity_main.xml 1KB
include_transport_view.xml 3KB
include_receive_view.xml 3KB
drawable
text_area_bg.xml 209B
jniLibs
armeabi-v7a
libserial_port.so 37KB
armeabi
libserial_port.so 37KB
x86
libserial_port.so 9KB
AndroidManifest.xml 791B
proguard-rules.pro 922B
build.gradle 1KB
app-release.apk 182KB
.gitignore 7B
gradlew.bat 2KB
build.gradle 498B
.idea
dictionaries
Administrator.xml 92B
runConfigurations.xml 564B
misc.xml 2KB
compiler.xml 686B
modules.xml 375B
gradle.xml 626B
encodings.xml 200B
copyright
profiles_settings.xml 74B
settings.gradle 15B
gradlew 5KB
projectFilesBackup
.idea
workspace.xml 196KB
.gitignore 118B
项目说明.zip 46KB
共 63 条
- 1
资源评论
DC头发很茂密
- 粉丝: 2059
- 资源: 612
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- 基于Javascript的结婚请帖设计源码 - Invitation
- mysql语句大全及用法
- mysql语句大全及用法
- mysql语句大全及用法
- MySQL是一种广泛使用的开源关系型数据库管理系统
- MySQL是一种广泛使用的开源关系型数据库管理系统
- MySQL是一种广泛使用的开源关系型数据库管理系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功