嘿,我想知道你需要root才能做到这一点吗?我想通过无线安装/运行应用程序来停止所有这些电缆切换.我还读过它会导致一些错误吗?这是在这个网站上的旧帖子,我想知道它现在可靠和容易吗?
我正在寻找代码来在终端中旋转光标并找到它.我想知道代码中发生了什么.特别是for c in spinning_cursor():我从未见过这种语法.是因为我一次从生成器返回一个元素yield,并将其分配给c?在y()中使用x的任何其他例子?
import sys
import time
def spinning_cursor():
cursor='/-\|'
i = 0
while 1:
yield cursor[i]
i = (i + 1) % len(cursor)
for c in spinning_cursor():
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write('\b')
Run Code Online (Sandbox Code Playgroud) 如果我echo a; echo b在bash中运行,结果将是两个命令都运行.但是,如果我使用subprocess,则运行第一个命令,打印出整个行的其余部分.下面的代码是echos a; echo b而不是a b,如何让它运行这两个命令?
import subprocess, shlex
def subprocess_cmd(command):
process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
proc_stdout = process.communicate()[0].strip()
print proc_stdout
subprocess_cmd("echo a; echo b")
Run Code Online (Sandbox Code Playgroud) 我有一个字符串值,我也有一个字符串数组和一个包含该范围的枚举.要获取数组中字符串的索引,请从提供的值中写出:
Arrays.asList(myClass.BAUD_RATES).indexOf(username)
Run Code Online (Sandbox Code Playgroud)
我如何为枚举这样做?我可以使用序数吗?或者我必须制作自己的方法?
方法可能如下:
public enum Fruit {
...
static public boolean isMember(String aName) {
Fruit[] aFruits = Fruit.values();
for (Fruit aFruit : aFruits)
if (aFruit.fruitname.equals(aName))
return aFruit;
return false;
}
...
}
Run Code Online (Sandbox Code Playgroud) 我主要用dispatchKeyEvent中的这些行修复了这个问题:
byte[] cmdLeft = { (byte) 27, (byte) '[', (byte) 'D' };
byte[] cmdErase = { (byte) 27, (byte) '[', (byte) 'P' };
mSession.appendToEmulator(cmdLeft, 0, cmdLeft.length);
mSession.appendToEmulator(cmdErase, 0, cmdErase.length);
Run Code Online (Sandbox Code Playgroud)
现在唯一的问题是,如果我选择editText并点击删除,则删除一个字符,但两个字符似乎在屏幕上.因此,如果我写启用并点击删除它将改为enab但实际发送的是enabl
我重写了dispatchKeyEvent,它有点工作.如果选择了editText,终端现在会删除序列中的字符,这是一个很好的步骤.然而,主要问题仍然存在,如果自己选择终端,则将奇怪的小盒子写入屏幕而不是删除字符.好吧一个是写的,如果我一直按下删除它会停留在那个盒子上,但是下次我输入删除的数量时我按下了框.这很奇怪......
就像它只是覆盖了edittext而不是终端.
所有荣耀中都有奇怪的小盒子:

public boolean dispatchKeyEvent(KeyEvent event) {
if (event != null && event.getAction() == KeyEvent.ACTION_UP) {
return false;
}
if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
try {
sendOverSerial("\b".getBytes("UTF-8"));
}
catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return super.dispatchKeyEvent(event);
};
Run Code Online (Sandbox Code Playgroud)
我使用android中的库连接到终端模拟器,这连接到串行设备(交换机)并显示我发送/接收的数据.我通过终端下方的文本框通过连接发送数据,或者通过键入终端本身并在两种情况下按键盘输入.它只会是一个使用的软键盘.如果我发送了一个不正确的字符串,由于没有删除密钥实现,我处于不可恢复的状态.我的editTxt中的退格键工作正常,我只是希望它在终端突出显示时起作用,而我正在写入.
目前,如果我按下删除一个奇怪的盒子字符出现,没有其他事情发生,我有时会在日志中得到一个例外(http://i.imgur.com/wMRaLPX.png).我想知道的是如何更改删除键功能,以便当我按下它时,我可以发送这样的删除字符,但也保留删除edittext框中的字符等功能:
sendOverSerial("\b".getBytes("UTF-8"))
Run Code Online (Sandbox Code Playgroud)
这会发送一个正确的后退空间,我只需要合并它. …
我正在使用终端仿真器库来创建终端,然后我用它将串行输入的数据发送到串行设备.图书馆可以在这里看到.
当我向终端输入数据时,正在发送/接收一系列奇怪的字符.我认为unicode替换字符是通过串行发送的,串行设备不知道它是什么并返回〜0.
我写"test"时终端中显示的内容的屏幕截图: 
并显示发送的字符串和收到的数据的日志. 
我创建了一个EmulatorView,它是终端视图.它在这里提到钻石.
private void sendText(CharSequence text) {
int n = text.length();
char c;
try {
for(int i = 0; i < n; i++) {
c = text.charAt(i);
if (Character.isHighSurrogate(c)) {
int codePoint;
if (++i < n) {
codePoint = Character.toCodePoint(c, text.charAt(i));
} else {
// Unicode Replacement Glyph, aka white question mark in black diamond.
codePoint = '\ufffd';
}
mapAndSend(codePoint);
} else {
mapAndSend(c);
}
}
} catch (IOException e) {
Log.e(TAG, "error …Run Code Online (Sandbox Code Playgroud) 我想知道我在这里做错了什么,为什么围绕这些按钮RelativeLayout导致错误?我没有很多编辑布局,我不能只是坚持相对或线性布局吗?
如果我没有将布局中的按钮环绕在一起,它们就会出现在彼此之下,我只是想尝试将它们水平放在彼此旁边.
我认为我完成整个布局的方式很糟糕,因为垂直方向看起来非常紧张.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout android:id="@+id/topButtons"
android:layout_margin="4dip"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/deviceConnect"
android:layout_margin="8dip"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:text="Connect2"/>
<LinearLayout android:orientation="vertical"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
android:layout_margin="8dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="Connected Adapter:"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Spinner android:id="@+id/deviceSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"/>
<TextView android:id="@+id/currentSettings"
android:layout_marginLeft="8dip"
android:text="Current Settings: Not Connected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
android:layout_margin="8dip"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:text="Baud:"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Spinner android:id="@+id/baudSpinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"/> …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的列表列表:
[[10564, 15], [10564, 13], [10589, 18], [10637, 39], [10662, 38], [10712, 50], [10737, 15], [10762, 14], [10787, 9], [10812, 12], [10837, 45], [3, 17], [7, 21], [46, 26], [48, 12], [49, 24], [64, 14], [66,
17], [976, 27], [981, 22], [982, 22], [983, 17], [985, 13], [517, 9], [521, 15], [525, 11], [526, 13], [528, 14], [698, 14], [788, 24], [792, 19]]
Run Code Online (Sandbox Code Playgroud)
我试图找到每个列表中第二个元素的最低值(所以比较15到13到18等不比较10564和15),但也将它分成范围,所以我可以说,最低的第二个元素[1]在每个列表中,仅当元素[0]超过10000时...我该怎么做?我试过它,只能比较同一列表中的元素,这不是我想要的.在我提到的情况下,我会返回[10787,9],但如果有超过10000的另一个值9,我也想返回.
我希望从字符串中删除所有不可打印的ascii字符,同时保留不可见的字符.我认为这会有效,因为空格,\n\r是不可见的字符,但不是不可打印的?基本上我得到一个带有 字符的字节数组,我不希望它们在其中.所以我试图将它转换为字符串,删除 字符再次使用它作为字节数组.
空间在我的代码中工作正常,但是现在\ r和\n不起作用.保留这些也是正确的正则表达式是什么?还是有更好的方式来做我正在做的事情?
public void write(byte[] bytes, int offset, int count) {
try {
String str = new String(bytes, "ASCII");
str2 = str.replaceAll("[^\\p{Print}\\t\\n]", "");
GraphicsTerminalActivity.sendOverSerial(str2.getBytes("ASCII"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我试过[^\x00-\x7F]这是ascii字符的范围....但是然后 符号仍然通过,很奇怪.
我有一个列表,其中包含此表单中的元素,字符串可能会更改,但格式保持相似:
["Radio0","Tether0","Serial0/0","Eth0/0","Eth0/1","Eth1/0","Eth1/1","vlanX","modem0","modem1","modem2","modem3","modem6"]
Run Code Online (Sandbox Code Playgroud)
我想将其转换为下面的列表.你可以看到它会删除同一个字符串出现的副本,例如Eth - 只在新列表中出现一个并将数字转换为x和y以更通用:
["RadioX","TetherX","SerialX/Y","EthX/Y","vlanX","modemX"]
Run Code Online (Sandbox Code Playgroud)
我正在搞乱不同的正则表达式,我的方法很乱,会对你们想到的任何优雅的解决方案感兴趣.
这里有一些可以改进的代码,也设置不保留顺序,所以也应该改进:
a = ["Radio0","Tether0","Serial0/0","Eth0/0","Eth0/1","Eth0/2","Eth1/0","vlanX","modem0","modem1","modem2","modem3","modem6"]
c =[]
for i in a:
b = re.split("[0-9]", i)
if "/" in i:
c.append(b[0]+"X/Y")
elif len(b) > 1:
c.append(b[0]+"X")
else:
c.append(b)
print set(c)
set(['modemX', 'TetherX', 'RadioX', 'vlanX', 'SerialX/Y', 'EthX/Y'])
Run Code Online (Sandbox Code Playgroud)
保留订单的设置可能有所改进:
unique=[]
[unique.append(item) for item in c if item not in unique]
print unique
['RadioX', 'TetherX', 'SerialX/Y', 'EthX/Y', 'vlanX', 'modemX']
Run Code Online (Sandbox Code Playgroud)