一、说明
《Arduino--Windows蓝牙通信(一)》实现了蓝牙模块数据透传,这一篇主要讲如何自己写代码实现Arduino--Windows数据透传,也就是通过串口通信实现蓝牙无线通信。
备选方案:
1、Python:
开发环境:Python 2.7+PyCharm+Windows
代码:

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

更加详细Python串口通信可以参考:http://blog.youkuaiyun.com/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.youkuaiyun.com/u014729825/article/details/50354549
3、代码




源代码在末尾
4、验证代码运行成功
运行VS中的C++程序,同时在打开串口助手接收第二个USB--TTL的接收数据。
5、连接蓝牙进行通信
拔出第二个USB--TTL,第一个USB-TTL连接蓝牙,(不要连接EN端口,插入的时候也不用按黑色按钮),可以进行通信,可以使用Arduino自己的串口监视器或者串口助手查看Arduino接收数据。


三、串口通信遇到的坑
1、createfile报错

2、com口打不开
首先确定是正确的端口,可以在设备管理器中查看或者在串口助手中查看;
其次,如果打不开串口,使用

3、串口打开之后,但数据无法发送
首先要配置通信超时,可以按照上面的代码配置;
其次,要发送的数据使用memcpy,而不要直接复制

四、C++源代码下载
源代码:链接:http://pan.baidu.com/s/1gf88LoR 密码:hu3b
end