package gnu.sercd;
import java.io.File;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import android.app.AlertDialog;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceChangeListener;
import android.serialport.SerialPortFinder;
import android.util.Log;
public class Sercd extends PreferenceActivity {
protected static final String TAG = "Sercd";
private CheckBoxPreference mEnabled;
private ListPreference mSerialPort;
private ListPreference mNetworkInterfaces;
private EditTextPreference mNetworkPort;
private OnPreferenceChangeListener mPreferenceChangeListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary((CharSequence)newValue);
return true;
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* Load preferences from XML */
addPreferencesFromResource(R.xml.preferences);
/* Fetch corresponding Java objects */
mEnabled = (CheckBoxPreference)findPreference("enabled");
mSerialPort = (ListPreference)findPreference("serialport");
mNetworkInterfaces = (ListPreference)findPreference("netinterface");
mNetworkPort = (EditTextPreference)findPreference("portnumber");
/* Complete lists, etc */
mSerialPort.setOnPreferenceChangeListener(mPreferenceChangeListener);
mSerialPort.setSummary(mSerialPort.getValue());
mNetworkInterfaces.setOnPreferenceChangeListener(mPreferenceChangeListener);
mNetworkInterfaces.setSummary(mNetworkInterfaces.getValue());
mNetworkPort.setOnPreferenceChangeListener(mPreferenceChangeListener);
mNetworkPort.setSummary(mNetworkPort.getText());
mEnabled.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ((Boolean)newValue) {
String serialport = mSerialPort.getValue();
String networkinterface = mNetworkInterfaces.getValue();
/* Check access permission */
File device = new File(serialport);
if (!device.canRead() || !device.canWrite()) {
try {
/* Missing read/write permission, trying to chmod the file */
Process su;
su = Runtime.getRuntime().exec("/system/bin/su");
String cmd = "chmod 666 " + device.getAbsolutePath() + "\n"
+ "exit\n";
su.getOutputStream().write(cmd.getBytes());
if ((su.waitFor() != 0) || !device.canRead()
|| !device.canWrite()) {
new AlertDialog.Builder(Sercd.this)
.setMessage(R.string.su_failed)
.show();
return false;
}
} catch (Exception e) {
e.printStackTrace();
new AlertDialog.Builder(Sercd.this)
.setMessage(R.string.su_failed)
.show();
return false;
}
}
int port = Integer.parseInt(mNetworkPort.getText());
Log.d(TAG, "Starting sercd with parameters "
+ serialport + ", " + networkinterface
+ ":" + port);
SercdService.Start(
Sercd.this,
serialport,
networkinterface,
port
);
} else {
SercdService.Stop(Sercd.this);
}
return true;
}
});
feedNetworkInterfacesList();
feedSerialPortList();
if (mEnabled.isChecked()) {
// SercdService.Start(this, "/dev/ttyMSM2", "127.0.0.1", 30001);
}
}
private void feedSerialPortList() {
SerialPortFinder spf = new SerialPortFinder();
mSerialPort.setEntries(spf.getAllDevices());
mSerialPort.setEntryValues(spf.getAllDevicesPath());
}
private void feedNetworkInterfacesList() {
Enumeration<NetworkInterface> nets;
try {
nets = NetworkInterface.getNetworkInterfaces();
ArrayList<String> displaynames = new ArrayList<String>();
ArrayList<String> names = new ArrayList<String>();
while(nets.hasMoreElements()) {
NetworkInterface net = nets.nextElement();
Enumeration<InetAddress> inets = net.getInetAddresses();
while(inets.hasMoreElements()) {
InetAddress inet = inets.nextElement();
String address = inet.getHostAddress();
displaynames.add(address + " (" + net.getDisplayName() + ")");
names.add(address);
}
}
int size = displaynames.size();
int i;
CharSequence[] a = new CharSequence[size];
CharSequence[] b = new CharSequence[size];
for (i=0; i<size; i++) {
a[i] = displaynames.get(i);
b[i] = names.get(i);
}
mNetworkInterfaces.setEntries(a);
mNetworkInterfaces.setEntryValues(b);
} catch (SocketException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
// SercdService.Stop(this);
super.onDestroy();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android增加串口驱动功能 (167个子文件)
all-wcprops 1KB
all-wcprops 1KB
all-wcprops 732B
all-wcprops 633B
all-wcprops 530B
all-wcprops 440B
all-wcprops 420B
all-wcprops 367B
all-wcprops 355B
all-wcprops 354B
all-wcprops 260B
all-wcprops 260B
all-wcprops 258B
all-wcprops 250B
all-wcprops 242B
all-wcprops 232B
all-wcprops 218B
all-wcprops 216B
all-wcprops 184B
all-wcprops 99B
all-wcprops 98B
all-wcprops 98B
all-wcprops 97B
all-wcprops 96B
all-wcprops 93B
all-wcprops 89B
all-wcprops 89B
all-wcprops 86B
all-wcprops 63B
sercd.c 53KB
unix.c 26KB
SerialPort.c 4KB
android.c 2KB
.classpath 273B
COPYING 18KB
.cproject 30KB
entries 2KB
entries 1KB
entries 1KB
entries 887B
entries 780B
entries 738B
entries 621B
entries 614B
entries 573B
entries 570B
entries 437B
entries 433B
entries 428B
entries 428B
entries 425B
entries 421B
entries 407B
entries 405B
entries 402B
entries 303B
entries 295B
entries 294B
entries 281B
entries 268B
entries 267B
entries 266B
entries 259B
entries 254B
entries 250B
sercd.h 7KB
android.h 1KB
sercd-jni.h 913B
SerialPort.h 745B
unix.h 688B
Sercd.java 5KB
SercdService.java 4KB
SerialPortFinder.java 3KB
LoopbackActivity.java 3KB
SerialPortFinder.java 3KB
SerialPortActivity.java 3KB
MainMenu.java 3KB
SerialPort.java 2KB
SerialPortPreferences.java 2KB
ConsoleActivity.java 2KB
Application.java 2KB
Sending01010101Activity.java 2KB
Android.mk 831B
Android.mk 786B
Application.mk 69B
Application.mk 35B
icon.png 5KB
icon.png 5KB
notification_icon_connected.png 2KB
notification_icon_ready.png 2KB
.project 2KB
.project 816B
run_emulator.sh 120B
gen_SerialPort_h.sh 90B
libserial_port.so 12KB
libserial_port.so 12KB
libserial_port.so 5KB
sercd.c.svn-base 53KB
.cproject.svn-base 30KB
unix.c.svn-base 26KB
共 167 条
- 1
- 2
资源评论
- scsyuzujin2013-09-10很不错,有参考价值。
- 敲代码的2018-06-28还不错,谢谢分享,现在都是知识付费哈哈
- 熊大张2014-08-20勉强能用,还是谢谢分享
- dosgo2013-07-28很好!可以用来读写com1接口!在嵌入式开发有点用
vensondianji44
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 4f76dd1f4d0bea09663e536fd2297540.txt
- React项目基于JavaScript实现的全球新闻发布管理系统源码.zip
- 基于keras+fasterRCNN,在VOC格式的口罩数据集上训练,检测人群中有无戴口罩python源码+模型
- 基于opencv+qt5机器视觉的传统缺陷检测, 即采用标准图片和待测图片进行pixel to pixel的XOR操作源码+文档
- 管道内检测缺陷数据库管理系统源码+文档说明+sln
- 毕业设计-低功耗STM32F411开发板(原理图+PCB源文件+官方例程+驱动等)源码+文档说明+截图
- 基于yolov5-tensorRT检测+发动机缸体内壁缺陷检测系统源码+文档说明
- 基于C++实现的锂电池缺陷检测源码+文档说明
- push_version
- 软件自制图像批量压缩工具
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功