最近在用WinCE5制作一个山寨GPS机器,用了扬创2440开发板、Nokia LD-3W蓝牙GPS模块和USB蓝牙模块,软件使用的是Route66 v9和凯立德。
  Route66可以直接连接蓝牙GPS,但是凯立德需要把蓝牙虚拟出一个串口去连接GPS。在网上收集了半天解决方法,发现使用RegisterDevice函数注册一个蓝牙串口最为方便,大致代码如下:

包含文件:
include <bt_api.h>

注册蓝牙串口:
PORTEMUPortParams pp;
ZeroMemory(&pp, sizeof(pp));
pp.device = ba;
pp.channel = 1;
pp.uiportflags = RFCOMM_PORT_FLAGS_REMOTE_DCB | RFCOMM_PORT_FLAGS_AUTHENTICATE |
 RFCOMM_PORT_FLAGS_ENCRYPT;
HANDLE h = RegisterDevice(L”COM”, 9, L”btd.dll”, (DWORD)&pp);

注销蓝牙串口:
DeregisterDevice(h);

说明:
1. pp.device是蓝牙设备的地址,一个ULONGLONG类型的12位十六进制数值,在蓝牙设备设置的窗口中可以找到。
2. pp.channel是蓝牙通道RFCOMM的编号,范围从1~31,可以任意取值,但是所有通道不能同时使用。
3. pp.uiportflags是端口的连接标记,一开始的时候,我并没有设定这个字段,默认为0。结果,蓝牙串口可以连接,但是一直接收不到数据(很奇怪,偶尔一两次能够正常收到数据),后来才发现这个字段。由于在蓝牙设备设置窗口中,默认配对后就选定了“加密”和“认证”两个选项(可在右键菜单中看到),所以一定要添加RFCOMM_PORT_FLAGS_AUTHENTICATE和RFCOMM_PORT_FLAGS_ENCRYPT这两个flag。
4. RegisterDevice函数中的第二个参数是串口的编号,范围从0到9,不能与已使用的串口号重复。代码中指定虚拟的是COM9。

在GPS软件中,只需要指定串口的端口号,至于波特率就可以无视啦。

遗落的GPS导航专用音乐播放器EPlayer2 for WinCE6.0

今天在家里翻出了积灰已久的E路航HD-X8导航仪,发现里面居然还有一个EPlayer2播放器。 非常遗憾的是,我在自己所有的电脑中翻找了好久也没有翻到这个播放器...

阅读全文

MoeViewer2 for Android 3.0+

Android手机系统上的MoeViewer系列的第二作。 由于大部分图片网站已经更新,原来第一版的MoeViewer已经接近无法使用,现推出第二版。 本次的版本可以运行在A...

阅读全文

MoeViewer——Android系统上的萌站图片浏览工具

废话不多说,先上图: 用途不多讲了,因为一些河蟹因素,知道的人就知道了。 第一张图里,上方三个图片按钮依次为:站点切换、关键字、获取图片,...

阅读全文

欢迎留言