qyb的博客

Win32 下的蓝牙——开发事项、外设购买

作为项目 MobileSync 的一部分,我计划增加对蓝牙通信的支持。结果经过一段时间的尝试,我发现 Win32 平台上针对蓝牙开发简直太让人郁闷了。

红外的支持看 MSDN 的文档下很容易就完成了,所以我也首先去参考 MSDN 上蓝牙相关的部分,结果在创建一个 BTH 的套接字的时候返回了 10047 错误——"Address family not supported by protocol family"。接下来从网上搜索得知这是因为我的机器上还没有安装本机协议栈(native bluetooth stack)的缘故。太奇怪了,我明明已经安装了驱动并可以传送文件啊,为什么说我不支持蓝牙?

再进一步查找,这才知道在 Windows XP SP1 之前,微软是不支持蓝牙的。直到 SP2,native stack 也仅仅支持少数的几种设备。可以想象蓝牙刚刚问世的时候,微软的反应是:“谁知道这项技术会不会最终成功,俺先等等看吧”。于是后来 IVTWidcomm先后开发了自己的协议栈和管理应用程序,来配合蓝牙外设在 Win32 平台上的使用。而我的蓝牙适配器的问题就是,它可以在 IVT 下工作,但 SP2 不支持(ISSC 芯片)。

对于蓝牙软件开发商来说,问题就很棘手。市场上有三种协议栈,最好是全都支持以适应最大可能的应用范围。我现在才明白为什么我的 Nokia 3650 的 PC 同步程序无法用蓝牙通信,这是因为它用的 mRouter 协议层只支持 Widcomm 和 Native,不支持设备附带的 IVT 驱动。

后来还找到 Jon Cellini 的一篇文章,描述如何让并没有被 MS 官方支持的设备在 native 协议栈下工作的。虽然有人报告他的 ISSC 设备可以如法炮制,但我的适配器却不能这样去工作。

为了能继续我的开发工作,我只好重新买了一个 CSR 芯片的适配器。很便宜,不过 50 元(加上快递费),芯片版本还是 BlueCore4-ROM,似乎能支持蓝牙 2.0。它很顺利就在 XP 下自动检测出来了,同时"Control Panel"里面多了一个"Bluetooth Devices"的控件。然后我就发现微软缺省的管理程序比 IVT 差太多了,很明显 Microsoft Native Stack 将是未来开发的主流,但要想得到用户的广泛应用,还差一套完善的设备管理程序。不知道未来是 Vista 去改进,还是独立的第三方厂商做开发。

故事讲完了,如果你计划购买蓝牙适配器,我建议还是选择一个 SP2 官方支持的,比如 CSR 就挺好。市场上的主流好像是 ISSC,它的确更便宜一些,但我不敢保证 SP3 或者 Vista 就一定会支持..

最后要说的是,从这个事例里面看到,微软对外设的支持也就那么回事情,Linux 的 BlueZ 栈好像在 2.4.x 时代就确定了主流地位,是不是未来对新型硬件的支持以后 Linux 的优势会越来越明显?

Topic: 技术

怎样结束一封英文信件?

你是不是厌烦了千篇一律的 "Regards"? 今天从 BBC Learning English 上看到如下技巧:

Best Wishes (OK for someone you don't know and in a fairly formal situation)
Kind Regards ( OK for someone you don't know and in a fairly informal situation)
Fondest regards (OK for someone you know but not intimately)

下面是泡外国 MM 或 GG 的时候用的

With love*
Thinking of you*
Lots of love*
Love and kisses*

* These are a bit intimate 

另,学习到一个好玩的单词:smog,smoke + fog,知道它确切的意思了吧。走召弓虽

Topic: 生活

用免费的 Microsoft Visual C++ Toolkit 2003 编译 Python 2.4 模块

本来这个方法是从别人的 blog 那里看到的,我只是加了我的书签。但今天想查的时候发现这个 blog 访问不了,Tor 今天好像也用不了,寻觅半天,从 MSN Search Cache 里面找到了。贴在这里转载一下。

在这个方法之前,有人说需要 hack distutils 才能使用 Microsoft Visual C++ Toolkit 2003;但现在这个天才发现修改一下注册表就 OK 了,牛!

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC\VC_OBJECTS_PLATFORM_INFO]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC\VC_OBJECTS_PLATFORM_INFO\Win32]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.1\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directories]
"Path Dirs"="C:\\Program Files\\Microsoft Visual C++ Toolkit 2003\\bin;
C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\bin"

"Library Dirs"="C:\\Program Files\\Microsoft Visual C++ Toolkit 2003\\lib;
C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib;
C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Vc7\\lib"

"Include Dirs"="C:\\Program Files\\Microsoft Visual C++ Toolkit 2003\\include;
C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include"

Python 2.5 也应该是用 VC 7.1 编译

Topic: 技术

南开大学北村一居室出租

代我岳父母发一条广告

学校里面的居住生活条件那是没得说了..

40平米,板楼的阳面,6楼顶层,有空调热水器,煤气暖气,还有学校宽带哦。

报价900/月,根据对方人品可以议价。

有意者给我发信

Topic: 生活

Authentication War

昨天读到了一条消息,Yahoo 刚刚发布了基于 Web 认证 Yahoo! ID 的服务——BBAuth。现在加上微软的 LiveID,Google 的 Account,三个世界上最大的 Web 服务提供商,或者也可以说三个全球知名度最高的免费邮件提供商,现在开始了一场"Web认证之战"。

当我 2005 年开始设计 eyou.com 的 passport 机制的时候,当时就考虑到可以开放我们的服务,鼓励第三方开发人员来基于 eyou.com 的 passport 创建应用。甚至还提出了把这个 passport 网络扩展到我们部署在 CERNET 内所有的邮件服务器上。不过现在 eyou 已经专注在"占座"上,我也没有机会去实现这个疯狂的念头

拥有用户的认证信息对于有责任心的厂商而言是一个很不轻松的负担——你必须承担起安全存储它们的任务。提供 HTTPS 连接,雇佣可靠的员工来维护数据库,防御黑客的攻击...。另一方面,吸引用户来你的网站注册又是如此困难,甚至认证邮箱现在从技术上因为 SPAM 防御的因素也越来越困难。因此对于创业网站来说,LiveID,Google Account,BBAuth 这种服务就很有吸引力,你无需再关心怎样吸引用户在你这里注册,而专注在自己的核心竞争力上。

当然事情远远不是我上面所宣称的那般美妙。在 BBAuth 之前,我就已经尝试利用 LiveID 或 Google Account 的 API 来写个测试程序,结果发现目前为止还是困难重重。微软 LiveID Web 版本的 API 要到 2007 年才发布(Client 版本则看起来今年能发布,从这件小事可以看出微软在 Web 服务竞争中的尴尬局面),而且迄今还没有一个明确的关于此服务是否收费的政策。要知道如果加入 Passport (LiveID 的前一个版本)的话,每年的年费至少上万美元;虽然在 Google/Yahoo! 的竞争压力下它应该会包括免费的服务,但如果现在就计划把服务依赖于 LiveID 则必须承担风险。Google Account API 倒是非常简单,我很容易找到了一个 PHP 的例子然后修改了一下就通过了测试,但现在可用的服务仅限于 Google Calendar!就是说如果一个 Google Account 没有注册 Google Calendar 服务,那么我的应用可以确认一个人通过了 Google 的口令认证,但我无法获得这个人的邮件地址!

Google Account 服务包括两个步骤(Yahoo BBAuth 同样如此,估计 LiveID 也差不多):认证和授权。校验邮件地址/口令是否匹配属于认证过程,第三方是否可以获得用户的服务信息,比如邮件地址则属于授权过程。对于用户体验来说就是这样:用户在第三方网站上点击登录,重定向到认证服务的地址,通常是一个 https 连接;用户输入邮件地址和口令,校验正确后进入授权页面,提示用户这个第三方网站将获得用户的某些信息;用户确认后返回到第三方网站同时带有一个 token;第三方网站根据这个 token 来确认用户的确已经通过口令校验,并获得用户的相关信息。

就网上讨论的情况来看,Google 目前仅有 Calendar 一种授权服务,还没有人反映 gmail 已经可以被授权。最让人失望的是,google group 上来自 google 的支持非常少,同样 MSDN 上 LiveID 相关的讨论组里面,也罕有微软的人发言,都是开发人员自己在猜测。

所以欢迎加入 Authentication War, Yahoo!。希望能刺激一下微软和 Google,让竞争来得更猛烈些吧。

Topic: 商业

DV-2-XviD 0.7 发布

DV-2-XviD 0.6 版本发布整整一个月后,0.7 版热辣出炉啦..

ChangeLog:
1. 增加了 comptest 步骤以更有效的控制最终文件大小。(请参考XviD 压缩后文件大小不符合预期结果的原因和解决方法,目前的方案是根据 comptest 结果修正最终分辨率大小)

2. 新开一个线程去执行压缩任务... 这样主窗口不会失去响应

3. 修改了好多以前不了解 Python 时写下的弱智代码.

4. 增加了英文版的 README,中文版的 README 也改成 UTF-8 编码。打包的路径稍稍有些改动。

5. 二进制文件里面去掉了 MSVCR71.dll,因为我没有购买 VC7,因此也没有重新分发该文件的权利。

Topic: 技术

国米官方中文网

国米和新浪合办,inter.sina.com.cn,昨天下午正式开通。

虽然号称要帮助中国足球,但还是等称霸意甲后再说吧。我的印象里两个不幸的企业组合到一起只会得到一个更不幸的企业。

祝国米今年好运..

Topic: 运动

最近在 Python 上的开发

周末经过艰苦的努力,终于可以在我的 R520 和本地的 sqlite 之间同步了!!

不过和西门子 cx65 同步还有问题.

这两天开始尝试别人送给我的 N3650,发现它对同步支持的很弱,好像只能作为 SyncML 客户端同步,但不能作为服务器让别人通过 obex 来同步。据说从 S60 2nd 开始(除了 6600)才能支持 SyncML。就是说除了 7650/3650/N-Gage/3600/6600/3660/3620/QD 的 S60 都支持。

计划在买新手机(目前看好 6630)前做好这么几件事情:

1. 支持 qyt 同志的西门子

R520 的 vcard 是 UTF-7 编码,西门子是 UTF-8 编码再 BASE64.. 另外感觉这个西门子的红外连接不稳定,要么就是我的红外适配器有问题,或者其它什么故障..

2. OBEX over Bluetooth ..

由于我 R520 上的蓝牙坏了,所以只能先拿这个 3650 测试了..另外昨天晚上发现 Python 的蓝牙支持似乎并不包括 win32 平台,至少 2.4.x 是这样

3. Thunderbird 扩展.

希望最后能和 TB 来同步地址本,我的终极目标,hehe

Topic: 技术

Thunderbird 也在 mashup

刚刚弄明白了 Mashup 的意思,现在总算知道别人在讨论 Mashup 的时候是在说什么了..

现在我的 email client 是 Thunderbird,前不久发现它居然也包含有一个很酷的 Mashup 应用:就是如果你在 addressbook 里面给联系人指定地址以后,会出现一个 "Get Map" 的按钮,点击后进入 google map 自动搜索。是不是足够有创意?至少 gmail 现在还没有这个功能

不过 thunderbird 是去美国查找,可以说本地化很不好。期望着有谁能做一个 Thunderbird 插件,去 go2map 或者什么别的地图查中文地名就好了

Topic: 技术 网络
订阅 RSS - qyb的博客