android蓝牙开发,PC端模拟串口接收字符,该如何编程

android蓝牙开发,PC端模拟串口接收字符,该如何编程,第1张

您好,android蓝牙这方面还是很好搞的,因为大家的方式都是差不多的。先说说如何开启蓝牙设备和设置可见时间:

private void search() {

BluetoothAdapter adapter = BluetoothAdaptergetDefaultAdapter();

if (!adapterisEnabled()) {

adapterenable();

}

Intent enable = new Intent(BluetoothAdapterACTION_REQUEST_DISCOVERABLE);

enableputExtra(BluetoothAdapterEXTRA_DISCOVERABLE_DURATION, 3600); //3600为蓝牙设备可见时间

startActivity(enable);

Intent searchIntent = new Intent(this, ComminuteActivityclass);

startActivity(searchIntent);

}

首先,需要获得一个BluetoothAdapter,可以通过getDefaultAdapter()获得系统默认的蓝牙适配器,当然我们也可以自己指定,但这个真心没有必要,至少我是不需要的。然后我们检查手机的蓝牙是否打开,如果没有,通过enable()方法打开。接着我们再设置手机蓝牙设备的可见,可见时间可以自定义。

完成这些必要的设置后,我们就可以正式开始与蓝牙模块进行通信了:

public class ComminuteActivity extends Activity {

private BluetoothReceiver receiver;

private BluetoothAdapter bluetoothAdapter;

private List<String> devices;

private List<BluetoothDevice> deviceList;

private Bluetooth client;

private final String lockName = "BOLUTEK";

private String message = "000001";

private ListView listView;

@Override

public void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutsearch_layout);

listView = (ListView) thisfindViewById(Ridlist);

deviceList = new ArrayList<BluetoothDevice>();

devices = new ArrayList<String>();

bluetoothAdapter = BluetoothAdaptergetDefaultAdapter();

bluetoothAdapterstartDiscovery();

IntentFilter filter = new IntentFilter(BluetoothDeviceACTION_FOUND);

receiver = new BluetoothReceiver();

registerReceiver(receiver, filter);

listViewsetOnItemClickListener(new AdapterViewOnItemClickListener() {

@Override

public void onItemClick(AdapterView<> parent, View view, int position, long id) {

setContentView(Rlayoutconnect_layout);

BluetoothDevice device = deviceListget(position);

client = new Bluetooth(device, handler);

try {

clientconnect(message);

} catch (Exception e) {

Loge("TAG", etoString());

}

}

});

}

@Override

protected void onDestroy() {

unregisterReceiver(receiver);

superonDestroy();

}

private final Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msgwhat) {

case BluetoothCONNECT_FAILED:

ToastmakeText(ComminuteActivitythis, "连接失败", ToastLENGTH_LONG)show();

try {

clientconnect(message);

} catch (Exception e) {

Loge("TAG", etoString());

}

break;

case BluetoothCONNECT_SUCCESS:

ToastmakeText(ComminuteActivitythis, "连接成功", ToastLENGTH_LONG)show();

break;

case BluetoothREAD_FAILED:

ToastmakeText(ComminuteActivitythis, "读取失败", ToastLENGTH_LONG)show();

break;

case BluetoothWRITE_FAILED:

ToastmakeText(ComminuteActivitythis, "写入失败", ToastLENGTH_LONG)show();

break;

case BluetoothDATA:

ToastmakeText(ComminuteActivitythis, msgarg1 + "", ToastLENGTH_LONG)show();

break;

}

}

};

private class BluetoothReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String action = intentgetAction();

if (BluetoothDeviceACTION_FOUNDequals(action)) {

BluetoothDevice device = intentgetParcelableExtra(BluetoothDeviceEXTRA_DEVICE);

if (isLock(device)) {

devicesadd(devicegetName());

}

deviceListadd(device);

}

showDevices();

}

}

private boolean isLock(BluetoothDevice device) {

boolean isLockName = (devicegetName())equals(lockName);

boolean isSingleDevice = devicesindexOf(devicegetName()) == -1;

return isLockName && isSingleDevice;

}

private void showDevices() {

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, androidRlayoutsimple_list_item_1,

devices);

listViewsetAdapter(adapter);

}

}

SystemUri uri = new Uri("obex://" + sbddSelectedDeviceDeviceAddressToString() + "/" + SystemIOPathGetFileName(ofdFileToBeamFileName));

你的URI对不。

>

关于串口设备,最好联系厂家询问是否提供API接口。关于API接口一般是一个可供调用的DLL文件。如果有可以直接在C#中引用,作为类库来 *** 作设备。具体调用方式需要询问厂家或参阅api的文档说明。不提供软件接口的设备是无法进行开发的。我大概搜了下这个设备,设备是提供配套软件的,那么这款设备是有相关通讯接口类库的,也就是可以用C#进行开发。如果找不到API文档,请尝试用串口调试工具,跟踪配套软件的每一步 *** 作,获取串口通讯报文,用C#模拟 *** 作报文自己封装通讯类后进行开发。

你是用的蓝牙20,还是40 BLE?不管是这两者中哪一个,android SDK都有相关sample可以学习使用,从搜索设备,建立连接,到两端的通信都有,基本覆盖我们要使用的所有功能。

20的sample是:BluetoothChat,网上对它的相关讲解很多,你可以参考blogcsdnnet/homebei2/article/details/6078007;

40的sample是:BluetoothLeGatt,因为google在android43才支持BLE的api,相对来说比较新,用的话主要是理解一些新的协议栈概念,不是很难,网上资料相对来说少些,你也可以找找看

如果你要自己写的话,其实也是上面sample里那些基本功能的重新组合,可以参考:blogcsdnnet/eric41050808/article/details/16967189

计算机端配一个蓝牙适配器 十几块人民币吧

单片机端配一个蓝牙串口模块 ,二十几块 淘宝上找找

对于计算机和单片机,都是串口通信的接口,完全无需其他的程序

(唯一要注意的是,市面上的蓝牙模块,基本上都只支持一对一的模式,因此蓝牙模块没有9位数据的模式)

所以这个你会的,^_^

以上就是关于android蓝牙开发,PC端模拟串口接收字符,该如何编程全部的内容,包括:android蓝牙开发,PC端模拟串口接收字符,该如何编程、C# 蓝牙编程 错误、C#调用蓝牙编程,该怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9845416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存