登录

在这个站点登录

保存我的登录记录

<<忘记密码?

还没有账号?点此注册>>

Jerry

松下CF-U1条形码扫描器开发笔记

分享到:

本文已被浏览224

很久之前,朋友曾经捡垃圾捡到一个军工级别的三防机”松下CF-U1″——一台十年前卖一万多大洋的”板砖”,搭载了Intel的Atom处理器,1GB的运行内存,三星的32GB SSD。操作系统是Windows XP,根据机身上的标签来看的话,原厂系统应该是Windows Vista,后来被某个机主给重装了一把(到我朋友手里就已经不知道是几手了),之前一直拿来打红警(分辨率和CPU速度什么的刚刚好,系统是XP也不需要考虑什么兼容性),最近想起来这玩意上边还有个条码的扫描器,于是想着看看能否做个扫码的程序。

侧面的扫描器

首先是扫描器的驱动问题,我手头的这个CF-U1还好,驱动在上个机主手里就已经打的相当完备,各种外设用的都很好。至于驱动程序,Google上搜一下也比较容易,比较让我吃惊的是淘宝竟然在卖这货的驱动,还8块钱一份。

其次就是开发工具包(SDK)以及相关文档的问题。去Google上以关键词”CF-U1 SDK”搜了下,在Softpedia上找到了官方提供的SDK连接:

Panasonic CF-U1 Software Development Kit

大小:15627858

下载后安装后发现CF-U1这玩意功能不限于此,从官方SDK的文档可以推断出来,这玩意的某些版本还有摄像头,GPS,磁卡读卡器(后来拆机清点硬件的时候发现这些东西在我这个版本上都没有QAQ,所以也没法做测试了,只搞出来了条码扫描器)

官方SDK说明文档

官方对于条码扫描器提供了Java和C# .Net的SDK,也带了几个例子,不过比较不幸的是JRE1.8我装了几遍也没搞上去(意外终止),Java SDK的Demo则无法测试了,然后那个C#的Demo同样的也是,总是因为硬件权限的问题没法运行,于是没办法只能自己研究一下文档看看能否继续搞了。

很幸运,SDK中有一个十分详尽的文档:

BCR官方文档

可以看到实际上条码扫描器的使用途径不仅仅是目录中看到的两种,还有C++和COM口直接使用的方式。我所研究出来的方式也是使用COM口直接读取数据。在开始动手写代码前先介绍一下硬件上的构造。松下官方认为这个扫描器能耗感人,所以在它的电源电路上加了一层开关,所以在正常情况下,这个开关也是关掉的,所以摁背后两个按钮也是没有任何作用的,然后再打开串口等待数据。

时序图

有了时序图就很容易了,可以看到在PowerControl这个模块里有两个函数,BCR_PowerUp和BCR_HWTrigger,可以使用这两个函数和驱动程序交互将电源接通,后来在尝试了下边的程序后确定了这个结论。

#include <iostream>
#include <BCRPowerControl.h>
using namespace std;

int main(){
    char a;
    cout<<"Init Lib:"<<BCR_InitLib()<<endl;
    cout<<"BCR_PowerUp:"<<BCR_PowerUp(true)<<endl;
    cout<<"BCR_HWTrigger:"<<BCR_HWTrigger(true)<<endl;
    cin>>a;
    return 0;
}

启动了上边那个程序后,我打开了串口调试助手短时间没有找见足够简单并且兼容XP的版本,就直接用了STC的ISP了,选择连接到COM0口,设置波特率(Baud)为9600,数据位(Databits)为8位,校验位(Parity)为无校验,停止位(StopBit)设置为1位,连接串口,摁背后的黄色按钮尝试扫描一个商品上的条码,于是:

串口助手
对于这个数据的格式,在Barcode Configuration Utility中可以设置,比如通过前后缀的拼凑给他拼成一个JSON什么的。这个工具功能很复杂,暂时没有细致的研究它的其他功能都是做什么的。根据它的运行效果,猜测应该是启动电源然后通过串口往里边写了些什么东西的样子。

Barcode Configuration Utility

同时,官方还提供了一个程序,Barcode Key Emulator,可以将扫描得到的内容当做键盘的模拟输入(感觉超市中的扫码枪也是个键盘的样子)

对于其他的硬件,例如GPS,我也有根据网上加装GPS的教程拆机看到底有没有这个模块,不过比较滑稽的是拆开后就只找到一个GPS的排线,并没有找到GPS模块的影子。根据网上的提示,如果有存在GPS模块,应该是在这个铁质支架上面:

GPS模块位置

SSD我也有拆开看了下标签,接口好像叫UDMA66,然鹅淘宝上根本搜不到这种接口的硬盘了,只有咸鱼上有人在出售64GB版本的SSD。

三星UDMA66接口SSD

关于那个MagStrip Reader,是一个外部的设备,可以接在底部的扩展接口上:

磁卡读卡器

参考文献:

【1】Panasonic CF-U1 Software Development Kit Document

 手机扫描左边的二维码,立刻将文章收入手机!
 微信扫描左边二维码,点击右上角即可分享到朋友圈!
严禁任何非授权的采集与转载,转载须经站长同意并在文章显著位置标注本文连接,站长保留追究法律责任的权利.

评论

 您需要 先登录 才可以回复.