⑴ android如何讀取串口數據
代碼如下:
import com.friendlyarm.AndroidSDK.HardwareControler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
public class MapGuider_Activity extends Activity{
private int serial_fd=0;
private byte[] serial_RevBuf=new byte[100];
private byte[] serial_SendBuf="fsjajd".getBytes();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mapguider);
serial_fd=HardwareControler.openSerialPort("/dev/s3c2410_serial1", 115200, 8, 1);
if(serial_fd!=-1)
{
System.out.println("打開串口成功");
HardwareControler.write(serial_fd, serial_SendBuf);
lac_handler.post(RevicePosDataThread);
}
else
{
System.out.println("指定的串口不存在或在其它進程中已被打開");
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
HardwareControler.close(serial_fd);
System.out.println("關閉串口");
lac_handler.removeCallbacks(RevicePosDataThread);
super.onDestroy();
}
Handler lac_handler =new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
}
};
Runnable RevicePosDataThread =new Runnable()
{
int err=0;
String s;
public void run() {
// TODO Auto-generated method stub
while(true)
{
//Looper.prepare();
err=HardwareControler.select(serial_fd, 1, 0);
if(err==1)//有數據可讀
{
HardwareControler.read(serial_fd, serial_RevBuf, 10);
s=new String(serial_RevBuf);
System.out.println("接收到串口數據"+s);
}
else if(err==0) //無數據可讀
{
System.out.println("沒有接收到串口數據");
}
else //出錯
{
System.out.println("接收到串口數據出錯");
}
try {
Thread.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
}
⑵ windows下android模擬器,主機(無串口)如何通過usb轉串口線來採集板子數據
看網上有人說的:如果要啟動名字為myavd的虛擬機,則執行以下命令:emulator
@myavd
-qemu
-serial
COM1
啟動後,在dev裡面會有ttyS0,ttyS1,ttyS2。經測試為ttyS2.如果用程序打開串口,提示沒有讀寫許可權。應該運行:adb
shell#cd
dev#chmod
777
ttyS2怎麼啟動後,在dev裡面會有ttyS0,ttyS1,ttyS2。這三個是在哪裡看到的啊,還望高人指點
⑶ 安卓電腦模擬器如何控制計算機串口
可能是你的電腦設置吧
usb串口顯示關了
或是你的手機系統出問題了
先把電腦的設置檢查一遍
再把手機格機看看實在不行就
去維修點看看吧
⑷ 請問一下怎麼在安卓模擬器裡面查看我是否載入了pc的串口呢在線等,求各位大牛解答,拜託拜託。。。。
Android開發,模擬器是可以使用PC的串口的,只是我們需要在命令行啟動模擬器,並且指定要掛載的串口,命令格式如下: emulator -qemu -serial COM1 如果要啟動名字為android2.1的虛擬機,則執行以下命令: emulator @android15r1 -qemu -serial COM1 啟動後,在dev裡面會有ttyS0,ttyS1,ttyS2。
其中ttyS2就是掛載上來的串口COM1。
至於ttyS0/ttyS1,不清楚具體是什麼,經測試,也有數據,我猜測是滑鼠的USB介面。 如果用程序打開串口,可能會提示沒有讀寫許可權。
應該在命令提示符下用linux命令賦予讀寫的許可權: 進入shell:adb shell
進入設備目錄:#cd dev 修改許可權:#chmod 777 ttyS2!
⑸ windows下android模擬器,主機(無串口)如何通過usb轉串口線來採集板子數據
看網上有人說的:如果要啟動名字為myavd的虛擬機,則執行以下命令:emulator
@myavd
-qemu
-serial
COM1
啟動後,在dev裡面會有ttyS0,ttyS1,ttyS2。經測試為ttyS2.如果用程序打開串口,提示沒有讀寫許可權。應該運行:adb
shell#cd
dev#chmod
777
ttyS2怎麼啟動後,在dev裡面會有ttyS0,ttyS1,ttyS2。這三個是在哪裡看到的啊,還望高人指點
⑹ android模擬器怎麼進行串口測試
推薦下載一個那個晶元的datasheet
我買的看完視頻教程等等還是感覺不系統就買了一本書
看了一下結果發現完全翻譯的晶元的datasheet
白白浪費了我五十多塊大洋
最好不要完全選擇一致的板子對應的書
把你的書上的代碼經過思考再移植到你的板子上才有效果
看完手冊以後 你可以找幾本介紹實踐應用的書
⑺ Android平台到底能不能通過串口發送AT指令呢,急!!!
AT命令(Attention)在手機中,用於對modem(也就是移動模塊)通過串口命令進行操作,處理與語音電話、簡訊和數據。
關於AT命令:
Android系統與AT命令
對於智能手機,AP和BP分離的情況,在AP上的系統通過串口和BP通信是個不錯方式。在Android的源碼中有一個內部包com.android.internal.telephony中有對AT命令的封裝和解析,但這種internal的包開發者不能調用的SDK部分,可以用來封裝ROM。這說明Android對AT command的方式是支持的。
對於Android如何調用AT command
用root登錄命令行,直接對串口進行操作,如echo -e "AT " > /dev/smd0
具體的串口,不同設備會有不同,甚至不一定會提供。這種方式,開發者是可以調用的,通過Runtime.exec直接執行命令行命令,但要求是root,例如echo -e "ATD123456789; " > /dev/smd0,撥打123456789的號碼。
目前最新的AT命令標准發布與2014.6.27,似乎還活得挺滋潤的。但是給出的keywords是UMTS, GSM, command, terminal, LTE這說明CDMA確實很可能不是採用AT命令的方式。
⑻ android串口消息
android串口消息連接的方法為:
1.模擬器可以使用PC的串口。
啟動模擬器並載入PC串口 命令如下。
運行 emulator @模擬器名稱 -qmu -serial COM1。
2.查看串口是否被載入。
啟動後使用 adb shell 命令打開命令行
cd dev 查看會發現ttyS0 ttyS1 ttyS2,其他ttyS2 就是我們載入上來的串口COM1
3.修改許可權
chmod 777 ttyS2
現在我們可以開發串口程序了。
4.串口程序實例
下載libserial_port.so ,放入libs/armeabi 目錄,可以自己創建此目錄
libserial_port.so 下載地址:
http://code.google.com/p/android-serialport-api/
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.util.Log;
public class SerialPort {
private static final String TAG = "SerialPort";
private FileDescriptor mFd;
private FileInputStream mFileInputStream;
private FileOutputStream mFileOutputStream;
public SerialPort(File device, int baudrate) throws SecurityException, IOException {
if (!device.canRead() || !device.canWrite()) {
try {
Process su;
su = Runtime.getRuntime().exec("/system/bin/su");
String cmd = "chmod 666 " + device.getAbsolutePath() + "n"
+ "exitn";
su.getOutputStream().write(cmd.getBytes());
if ((su.waitFor() != 0) || !device.canRead()
|| !device.canWrite()) {
throw new SecurityException();
}
} catch (Exception e) {
e.printStackTrace();
throw new SecurityException();
}
}
mFd = open(device.getAbsolutePath(), baudrate);
if (mFd == null) {
Log.e(TAG, "native open returns null");
throw new IOException();
}
mFileInputStream = new FileInputStream(mFd);
mFileOutputStream = new FileOutputStream(mFd);
}
public InputStream getInputStream() {
return mFileInputStream;
}
public OutputStream getOutputStream() {
return mFileOutputStream;
}
//JNI
private native static FileDescriptor open(String path, int baudrate);
public native void close();
static {
System.loadLibrary("serial_port");
}
}
####################################
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class PrintClass {
//輸入流
private static InputStream in;
//輸出流
private static OutputStream out;
private static final String PORT = "/dev/ttyS2";//串口
private SerialPort serialPort;
private void Connect()
{
try {
serialPort = new SerialPort(new File(PORT), 38400);
in = serialPort.getInputStream();
out = serialPort.getOutputStream();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void CloseSerialPort()
{
try {
out.close();
in.close();
serialPort.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}