Arduino--Windows蓝牙通信(二)

一、说明

《Arduino--Windows蓝牙通信(一)》实现了蓝牙模块数据透传,这一篇主要讲如何自己写代码实现Arduino--Windows数据透传,也就是通过串口通信实现蓝牙无线通信。

备选方案:

1、Python:

开发环境:Python 2.7+PyCharm+Windows

代码:

Arduino--Windows蓝牙通信(二)_第1张图片
在file-setting中选择上面,主义引入pyserial串口通信的库

短接TXD--RXD就可以验证Python数据通信

Arduino--Windows蓝牙通信(二)_第2张图片
代码

更加详细Python串口通信可以参考:http://blog.csdn.net/yangbingzhou/article/details/40355183

2、C++

开发环境:VS2015

因为还有其他项目,必须使用C++处理主程序,所以要在C++中进行串口通信,当时的方案有两种:C++调用Python,在Python中调用串口;或者C++直接调用串口。发现C++调用Python确实不简单,就使用了C++直接调用串口。

二、C++串口通信

这里首先会进行C++串口通信的验证,之后再连接蓝牙,进行Arduino--Windows数据无线传输。

1、硬件连接

硬件:USB转TTL     2个

连接:将第一个USB-TTL 的TXD接第二个的RXD,之后RXD--TXD


2、方案

我在网上找的C++串口通信主要有三种:使用Windows API,createfile进行串口通信,C++都试用;使用comboCom,使用与C++ MFC程序;自己写一个Serial的文件,进行通信。由于自己水平渣,并且不使用MFC编程,所以选择了第一种方案。

关于createfile进行串口通信的基础知识可以参考:http://blog.csdn.net/u014729825/article/details/50354549

3、代码


Arduino--Windows蓝牙通信(二)_第3张图片
通过createfile打开串口


Arduino--Windows蓝牙通信(二)_第4张图片
设置超时以及波特率等


Arduino--Windows蓝牙通信(二)_第5张图片
发送数据


Arduino--Windows蓝牙通信(二)_第6张图片
最后要关闭串口

源代码在末尾

4、验证代码运行成功

运行VS中的C++程序,同时在打开串口助手接收第二个USB--TTL的接收数据。

5、连接蓝牙进行通信

拔出第二个USB--TTL,第一个USB-TTL连接蓝牙,(不要连接EN端口,插入的时候也不用按黑色按钮),可以进行通信,可以使用Arduino自己的串口监视器或者串口助手查看Arduino接收数据。


Arduino--Windows蓝牙通信(二)_第7张图片
连接蓝牙
Arduino--Windows蓝牙通信(二)_第8张图片
Arduino--Windows通信流程图,需要两个HC05

三、串口通信遇到的坑

1、createfile报错


Arduino--Windows蓝牙通信(二)_第9张图片
字符集使用多字节字符集

2、com口打不开

首先确定是正确的端口,可以在设备管理器中查看或者在串口助手中查看;

其次,如果打不开串口,使用


Arduino--Windows蓝牙通信(二)_第10张图片
在com前加上\\等符号

3、串口打开之后,但数据无法发送

首先要配置通信超时,可以按照上面的代码配置;

其次,要发送的数据使用memcpy,而不要直接复制


1314054-bdf48f5ac10c8192.png
不要使用注释掉的代码

四、C++源代码下载

源代码:链接:http://pan.baidu.com/s/1gf88LoR 密码:hu3b


end

你可能感兴趣的:(Arduino--Windows蓝牙通信(二))