Ⅰ 两台android之间怎么通过串口进行通信
串口连接不正确. 25芯: A机2脚--B机3脚 A机3脚--B机2脚 A机7脚--B机7脚 9芯: A机2脚--B机3脚 A机3脚--B机2脚 A机5脚--B机5脚 查看原帖>>
Ⅱ android虚拟机串口通信
工具:Virtual Serial Port Driver.
用这个工具虚拟出一对串口。
下载地址
2.用串口调试助手,测试串口通信。
3.用这个命令启动虚拟机:emulator @2.2 -scale auto -qemu -serial COM3 &
说明:
2.2:是虚拟机的名称。
COM3是你要选择的串口。
ps:在cmd中使用这个命令有两种方式:1)将安卓的sdk的tools文件夹加入到path环境变量中,2)在安卓的sdk的tools文件夹下打开cmd。
4.虚拟机中测试串口通信用谷歌的一个开源项目:android_serialport_api
5.在虚拟机中运行项目。
说明:运行前要获取设备的权限
1)在cmd中用adb shell命令,进入虚拟机命令行环境。
2)打开dev文件夹:cd dev
3)获取权限:chmod 777 ttyS2
6.谷歌的开源项目不能导入进eclipse,我整理了一下,调通了。
Ⅲ android_studio手机蓝牙串口通信源代码
初涉android的蓝牙操作,按照固定MAC地址连接获取Device时,程序始终是异常终止,查了好多天代码都没查出原因。今天改了一下API版本,突然就成功连接了。总结之后发现果然是个坑爹之极的错误。
为了这种错误拼命查原因浪费大把时间是非常不值得的,但是问题不解决更是揪心。可惜我网络了那么多,都没有给出确切原因。今天特此mark,希望后来者遇到这个问题的时候能轻松解决。
下面是我的连接过程,中间崩溃原因及解决办法。
1:用AT指令获得蓝牙串口的MAC地址,地址是简写的,按照常理猜测可得标准格式。
2:开一个String adress= "************" //MAC地址, String MY_UUID= "************"//UUID根据通信而定,网上都有。
3:取得本地Adapter用getDefaultAdapter(); 远程的则用getRemoteDevice(adress); 之后便可用UUID开socket进行通信。
如果中途各种在getRemoteDevice处崩溃,大家可以查看一下当前的API版本,如果是2.1或以下版本的话,便能确定是API版本问题,只要换成2.2或者以上就都可以正常运行了~ 这么坑爹的错误的确很为难初学者。 唉·········· 为这种小trick浪费很多时间真是难过。
(另外有个重要地方,别忘了给manifest里面加以下两个蓝牙操作权限哦~)
<uses-permissionandroid:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
下面附上Android蓝牙操作中用固定MAC地址传输信息的模板,通用搜索模式日后再补删模板:
=null;
=null;
privateOutputStreamoutStream=null;
privateInputStreaminStream=null;
privatestaticfinalUUIDMY_UUID=UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//这条是蓝牙串口通用的UUID,不要更改
privatestaticStringaddress="00:12:02:22:06:61";//<==要连接的蓝牙设备MAC地址
/*获得通信线路过程*/
/*1:获取本地BlueToothAdapter*/
mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter==null)
{
Toast.makeText(this,"Bluetoothisnotavailable.",Toast.LENGTH_LONG).show();
finish();
return;
}
if(!mBluetoothAdapter.isEnabled())
{
Toast.makeText(this,"-runthisprogram.",Toast.LENGTH_LONG).show();
finish();
return;
}
/*2:获取远程BlueToothDevice*/
BluetoothDevicedevice=mBluetoothAdapter.getRemoteDevice(address);
if(mBluetoothAdapter==null)
{
Toast.makeText(this,"Can'tgetremotedevice.",Toast.LENGTH_LONG).show();
finish();
return;
}
/*3:获得Socket*/
try{
btSocket=device.(MY_UUID);
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Socketcreationfailed.",e);
}
/*4:取消discovered节省资源*/
mBluetoothAdapter.cancelDiscovery();
/*5:连接*/
try{
btSocket.connect();
Log.e(TAG,"ONRESUME:BTconnectionestablished,datatransferlinkopen.");
}catch(IOExceptione){
try{
btSocket.close();
}catch(IOExceptione2){
Log.e(TAG,"ONRESUME:",e2);
}
}
/*此时可以通信了,放在任意函数中*/
/*try{
outStream=btSocket.getOutputStream();
inStream=btSocket.getInputStream();//可在TextView里显示
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Outputstreamcreationfailed.",e);
}
Stringmessage="1";
byte[]msgBuffer=message.getBytes();
try{
outStream.write(msgBuffer);
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);
}
*/
通用搜索模式代码模板:
简洁简洁方式1 demo
作用: 用VerticalSeekBar控制一个 LED屏幕的亮暗。
直接上码咯~
packagecom.example.seed2;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.Dialog;
importandroid.os.Bundle;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.util.UUID;
importandroid.bluetooth.BluetoothAdapter;
importandroid.bluetooth.BluetoothDevice;
importandroid.bluetooth.BluetoothSocket;
importandroid.content.DialogInterface;
importandroid.util.Log;
importandroid.view.KeyEvent;
importandroid.widget.Toast;
{
privatestaticfinalStringTAG="BluetoothTest";
=null;
=null;
privateOutputStreamoutStream=null;
privateInputStreaminStream=null;
privateVerticalSeekBarvskb=null;
privatestaticfinalUUIDMY_UUID=UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//这条是蓝牙串口通用的UUID,不要更改
privatestaticStringaddress="00:12:02:22:06:61";//<==要连接的蓝牙设备MAC地址
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.vskb=(VerticalSeekBar)super.findViewById(R.id.mskb);
this.vskb.setOnSeekBarChangeListener(newOnSeekBarChangeListenerX());
mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter==null)
{
Toast.makeText(this,"Bluetoothisnotavailable.",Toast.LENGTH_LONG).show();
finish();
return;
}
if(!mBluetoothAdapter.isEnabled())
{
Toast.makeText(this,"-runthisprogram.",Toast.LENGTH_LONG).show();
finish();
return;
}
}
.OnSeekBarChangeListener{
publicvoidonProgressChanged(VerticalSeekBarseekBar,intprogress,booleanfromUser){
//Main.this.clue.setText(seekBar.getProgress());
/*Stringmessage;
byte[]msgBuffer;
try{
outStream=btSocket.getOutputStream();
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:OutputStreamcreationfailed.",e);
}
message=Integer.toString(seekBar.getProgress());
msgBuffer=message.getBytes();
try{
outStream.write(msgBuffer);
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);
}*/
}
(VerticalSeekBarseekBar){
Stringmessage;
byte[]msgBuffer;
try{
outStream=btSocket.getOutputStream();
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:OutputStreamcreationfailed.",e);
}
message=Integer.toString(seekBar.getProgress());
msgBuffer=message.getBytes();
try{
outStream.write(msgBuffer);
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);
}
}
publicvoidonStopTrackingTouch(VerticalSeekBarseekBar){
Stringmessage;
byte[]msgBuffer;
try{
outStream=btSocket.getOutputStream();
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:OutputStreamcreationfailed.",e);
}
message=Integer.toString(seekBar.getProgress());
msgBuffer=message.getBytes();
try{
outStream.write(msgBuffer);
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);
}
}
}
@Override
publicvoidonStart()
{
super.onStart();
}
@Override
publicvoidonResume()
{
super.onResume();
BluetoothDevicedevice=mBluetoothAdapter.getRemoteDevice(address);
try{
btSocket=device.(MY_UUID);
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Socketcreationfailed.",e);
}
mBluetoothAdapter.cancelDiscovery();
try{
btSocket.connect();
Log.e(TAG,"ONRESUME:BTconnectionestablished,datatransferlinkopen.");
}catch(IOExceptione){
try{
btSocket.close();
}catch(IOExceptione2){
Log.e(TAG,"ONRESUME:",e2);
}
}
//.
/*try{
outStream=btSocket.getOutputStream();
inStream=btSocket.getInputStream();
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Outputstreamcreationfailed.",e);
}
Stringmessage="read";
byte[]msgBuffer=message.getBytes();
try{
outStream.write(msgBuffer);
}catch(IOExceptione){
Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);
}
intret=-1;
while(ret!=-1)
{
try{
ret=inStream.read();
}catch(IOExceptione)
{
e.printStackTrace();
}
}
*/
}
@Override
Ⅳ android things 怎么使用串口通信方式,进入或登录系统
网络上搜索“串口调试助手”或者“串口调试精灵”,进行简单的安装。 点击运行串口调试助手,进入相应的界面。 设置串口通讯的接口,波特率校验位等相关信息。 在发送栏输入要发送的信息,选择手动发送或者自动发送,这时如果没有什么错误,对方的串口通信工具就会收到发送的内容。 设置接收区域的相关信息,这时对方如果发送信息,接收区就会收到相应的内容。 另外也可以进行文件的发送,但是串口通信的速率过慢,传输文件的话会很耗时,不过可以用来检测通信的正确性。
Ⅳ android 串口通信丢失数据原因
我现在测试也遇到这个问题,我是根据android_serialport_api里面的代码做的,就是在android端接收串口发过来的数据不完整,几乎每次都只是接收一部分的数据,另外一部分就不知道跑到哪里去,请问你这个问题你解决了吗
Ⅵ 如何使用android studio实现串口通信
为了帮助网友解决“Android studio使用http”相关的问题,中国学网通过互联网对“Android studio使用http”相关的解决方案进行了整理,用户详细问题包括:androidandroid?studiohttp协议 本人新手,在使用android Studio编写网站展示的应用程序中,使用HttpClient httpClient = new DefaultHttpClient();获取客服端时,编译器显示没有HttpClient这个类。网上查资料,换成CloseableHttpClient httpclient = HttpClients.createDefault();也同样没有类CloseableHttpClient 这个类。上面两个类都是被deprecated了。
请问android Studio 1.2.1.1这个版本,实现http协议GET数据的接口是哪个?在哪个包?
,具体解决方案如下:
解决方案1:
HttpURLConnection
conn.setRequestMethod("GET");
包的话应该是:import java.net.HttpURLConnection; sdk带了
解决方案2:
引用 1 楼 inquisitive_plus 的回复:HttpURLConnection
conn.setRequestMethod("GET");
包的话应该是:import java.net.HttpURLConnection; sdk带了
你好!这个是使用URLConnection方式实现Android的网络通信。难道android Studio 1.2.1.1这个工具不支持使用HTTPClient方式来实现android的网络通信?
解决方案3:
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://localhost/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
int l;
byte[] tmp = new byte[2048];
while ((l = instream.read(tmp)) != -1) {
}
}
解决方案4:
引用 3 楼 stublue 的回复:
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://localhost/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
int l;
byte[] tmp = new byte[2048];
while ((l = instream.read(tmp)) != -1) {
}
}
你好!你用的开发环境应该是Eclipse吧!我用的工具是android Studio 1.2.1.1,上面提示'org.apache.http.impl.client.DefaultHttpClient' is deprecated。不能使用!我不想换开发环境!难道android Studio 1.2.1.1这个工具不支持使用HTTPClient方式来实现android的网络通信?
解决方案5:
引用 2 楼 iloyou19 的回复:Quote: 引用 1 楼 inquisitive_plus 的回复:
HttpURLConnection
conn.setRequestMethod("GET");
包的话应该是:import java.net.HttpURLConnection; sdk带了
你好!这个是使用URLConnection方式实现Android的网络通信。难道android Studio 1.2.1.1这个工具不支持使用HTTPClient方式来实现android的网络通信?
1.2.1.1支持的,我就是这个版本64位
在Android studio/lib里你可以找到HttpClient-XXX.jar
你需要的java常规jar包在lib里都能找到
解决方案6:
引用 4 楼 iloyou19 的回复:Quote: 引用 3 楼 stublue 的回复:
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://localhost/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
int l;
byte[] tmp = new byte[2048];
while ((l = instream.read(tmp)) != -1) {
}
}
你好!你用的开发环境应该是Eclipse吧!我用的工具是android Studio 1.2.1.1,上面提示'org.apache.http.impl.client.DefaultHttpClient' is deprecated。不能使用!我不想换开发环境!难道android Studio 1.2.1.1这个工具不支持使用HTTPClient方式来实现android的网络通信?
我的就是在Android studio中啊!
版本是1.2.2
要想不提示deprecated,在类上加个注解 @SuppressWarnings("deprecation")
解决方案7:
你没有导入包吧
解决方案8:
引用 6 楼 stublue 的回复:Quote: 引用 4 楼 iloyou19 的回复:
Quote: 引用 3 楼 stublue 的回复:
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://localhost/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
int l;
byte[] tmp = new byte[2048];
while ((l = instream.read(tmp)) != -1) {
}
}
你好!你用的开发环境应该是Eclipse吧!我用的工具是android Studio 1.2.1.1,上面提示'org.apache.http.impl.client.DefaultHttpClient' is deprecated。不能使用!我不想换开发环境!难道android Studio 1.2.1.1这个工具不支持使用HTTPClient方式来实现android的网络通信?
我的就是在Android studio中啊!
版本是1.2.2
要想不提示deprecated,在类上加个注解 @SuppressWarnings("deprecation")
你好!这个注解我不知道怎么用!!麻烦能给我一个完整的工程吗?谢谢!
解决方案9:
导的包对?
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
解决方案10:
引用 5 楼 inquisitive_plus 的回复:Quote: 引用 2 楼 iloyou19 的回复:
Quote: 引用 1 楼 inquisitive_plus 的回复:
HttpURLConnection
conn.setRequestMethod("GET");
包的话应该是:import java.net.HttpURLConnection; sdk带了
你好!这个是使用URLConnection方式实现Android的网络通信。难道android Studio 1.2.1.1这个工具不支持使用HTTPClient方式来实现android的网络通信?
1.2.1.1支持的,我就是这个版本64位
在Android studio/lib里你可以找到HttpClient-XXX.jar
你需要的java常规jar包在lib里都能找到
我的androidstudio/lib里面也有httpclient-4.3.6.jsr,可是就是解析不出来这个
import org.apache.http.NameValuePair
这里显示红色
我在另一台机的1.0版本的Androidstudio就能解析出来
这个好像不用另外配置引入jar的吧
解决方案11:
用volley吧,大文件下载不适用!!!
参考:
http://www.kwstu.com/ArticleView/kwstu_20144118313429
解决方案12:
我现在也遇到了这个问题,楼主你解决了没有呀?
解决方案13:
HttpClient是SDK自带的啊 为什么会没有
解决方案14:
API9之上不再支持httpclient,从官方网站可以查到。换成HttpURLConnection
解决方案15:
http://..com/link?url=-U7xmd4pkvj0WWDIkRaT-
解决方案16:
我也遇到这种问题搞了半天都没弄好,最后还是直接把httpclient这个包直接导到工程去了。。。
解决方案17:
android sdk中就已经包含了这个包(如上图,我截的是sdk22版本),跟android studio版本没有关系。
解决方案18:
这个问题现在我没有弄了,感谢大家的回答!有位大神给我私信了!好像能用(我没有试),遇到相同问题的各位试一下吧!
silence12s21给你发了私信
silence12s21 : httpmime-4.5.jar httpcore-4.4.1.jar httpclient-4.5.jar 同时导入了这三个包后就可以用了。
Ⅶ android串口通信如何发送16进制给给下位机
已解决,发送串口帧数据时,对于16进制数据定义,直接用byte[]数组就行了,不需要用Array.fill函数;
Ⅷ 我想用Android手机与单片机进行串口通信,从而可以控制单片机,该如何实现呢
不过你还得注意的是手机的USB转串口电平是TTL电平,所以你的单片机板子的串口也得是TTL,在就是分清楚交叉连接或者直连。
Ⅸ Android手机使用USB接口与RS232通讯
从技术上讲,是肯定可以的。方案如下:
手机USB -> USB HOST -> USB转232 -> RS232设备
主要工作会有:
手机USB端的程序需要定制。
USB HOST端的程序需要定制,如果不用PC机,甚至连USB HOST设备都要做。
RS232设备的程序需要重写。
你确定你想这么做吗?