2、使用串口工具:Windows系统提供的串口工具Device Manager,可以实现与安卓设备的通讯;
3、使用安卓串口库调用:通过安卓串口库调用,从安卓串口中读取数据;
4、使用三方SDK:第三方软件开发工具,比如M2MGO SDK,也可以从安卓串口中读取数据。
代码如下: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()
}
}
}
}
}
我这边也在做Android和硬件设备的串口通信。我的通信方式很简单,我这边发送数据,接收数据(接收数据的内容中有标识位让我判断这次接收到的数据的相应处理动作)
读数据的时候我做的是一个清空的办法,每一次读取数据,如果读到的数据准确则进行处理,如果有误就清空了在读。
如果说接收的数据要对应上发送的数据,你可以在Android这边发送数据后不在发送数据只读取,并开启一个计时器,当这段时间内么有接收到返回值就继续你的发送和读取功能
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)