WOSA的C#实践
更新时间:2023-10-07 05:35:01 阅读量: 综合文库 文档下载
- 我撒的菜籽容易出苗了推荐度:
- 相关推荐
WOSA/XFS的C#实践
前言
金融服务扩展的一个关键内容就是对一组API、一组相应的SPI和支持服务的定义,使金融服务能够使用以Windows为基础的应用程序。
下面是典型的API使用方案。本例以打印表格所用的函数举例说明。
●? StartUp(启动,将应用程序连接到XFS管理器,包括版本协商) ●? Open(打开,在应用程序和服务提供程序间建立会话)
●? Register(注册,指定应用程序应该从服务提供程序收到的消息) ●? Lock(锁定,通过应用程序获得对服务的唯一访问) ●? 多个Execute(执行)函数,传递一个或多个具体命令: ●? Print_Form(打印表格) ●? 等等
●UnLock(解锁,通过应用程序获得对服务的唯一访问) ●Deregister(注销,指定应用程序不再从服务提供程序收到消息) ●Close(关闭,结束应用程序和服务提供程序间的会话) ●CleanUp(清除,断开应用程序和XFS管理器的连接)
使用C#开发WOSA过程中。 Startup:
uint dwVersion = 0x0B020003;
var lpwfVersion = newWFSVERSION();
int result = _dllwrapper.WFSStartUp(dwVersion, ref lpwfVersion); Open:
_dllwrapper.WFSCreateAppHandle(ref app); uint dwVersion = 0x0b020003;
WFSVERSION srvcVersion = newWFSVERSION(); WFSVERSION spiVersion = newWFSVERSION();
var hr = _dllwrapper.WFSOpen(pszName, app, appName, WFSConstants.WFS_TRACE_ALL_API|WFSConstants.WFS_TRACE_MGR, WFSConstants.WFS_INDEFINITE_WAIT, dwVersion, ref srvcVersion, ref spiVersion, ref service);
其中,pszName,服务名称需和SP方确定具体名称
Register:
var pinpadRegister = _dllwrapper.WFSRegister(pinpadService, WFSConstants.EXECUTE_EVENTS | WFSConstants.SERVICE_EVENTS | WFSConstants.USER_EVENTS | WFSConstants.SYSTEM_EVENTS,
mainPtr); LogErr(pinpadRegister,\);
var cardReader = _dllwrapper.WFSRegister(cardService,
WFSConstants.EXECUTE_EVENTS | WFSConstants.SERVICE_EVENTS , mainPtr); LogErr(cardReader,\);
Excute:
WFSPINGETPIN getPin= newWFSPINGETPIN(); getPin.bAutoEnd = true; getPin.cEcho = '*';
getPin.ulActiveFDKs = 0x00000000; getPin.ulActiveKeys = 0x00001FFF; getPin.ulTerminateFDKs = 0x00000000; getPin.ulTerminateKeys = 0x00000400; getPin.usMaxLen = 6; getPin.usMinLen = 4;
int size = Marshal.SizeOf(getPin);
IntPtr buffer = Marshal.AllocHGlobal(size); try
{
Marshal.StructureToPtr(getPin,buffer,false);
var hr= _dllwrapper.WFSAsyncExecute(pinpadService, PinConstants.WFS_CMD_PIN_GET_PIN, buffer, WFSConstants.WFS_INDEFINITE_WAIT,
mainPtr, ref getPinRequestId); LogErr(hr, \); }
执行命令时,buffer为命令的参数,应为指针类型,可使用Marshal来处理生成。
WPF接收XFS Manager发的消息,并根据消息来处理
privatevoid Window_Loaded(object sender, RoutedEventArgs e) {
mainPtr = newWindowInteropHelper(this).Handle; HwndSource hs = HwndSource.FromHwnd(mainPtr);
hs.AddHook(newHwndSourceHook(TestHwndSourceHook)); }
privateIntPtr TestHwndSourceHook(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam, refbool handled) { switch (msg) {
caseWFSConstants.WFS_EXECUTE_EVENT:
this.Dispatcher.Invoke((Action)(() => { Log(\); try
{
WFSRESULT result = (WFSRESULT)Marshal.PtrToStructure(lparam, typeof(WFSRESULT));
if (result.RequestID==getPinRequestId) {
WFSPINKEY key = (WFSPINKEY) Marshal.PtrToStructure(result.lpBuffer, typeof (WFSPINKEY));
Log(string.Format(\{0},complete:{1}\,key.ulDigit,key.wCompletion)); if (key.ulDigit==0x2a) {
tb_PassWord.Text += \; }
if (key.ulDigit==PinConstants.WFS_PIN_FK_BACKSPACE) {
}
if (key.ulDigit==PinConstants.WFS_PIN_FK_CANCEL)
{
_dllwrapper.WFSCancelAsyncRequest(pinpadService, getPinRequestId);
} }
} catch (Exception e) {
Log(e.Message);
}
})); break;
caseWFSConstants.WFS_USER_EVENT:
this.Dispatcher.Invoke((Action)(() => { Log(\); })); break;
caseWFSConstants.WFS_SERVICE_EVENT:
this.Dispatcher.Invoke((Action)(() => { Log(\); })); break;
caseWFSConstants.SYSTEM_EVENTS:
this.Dispatcher.Invoke((Action)(() => { Log(\); })); break;
}
returnIntPtr.Zero; }
要点:
所有的结构体,因在C头文件中定义为#pragmapack(push,1)
应使用LayoutKind.Explicit来标记 并使用FieldOffset来设置开始位置
正在阅读:
WOSA的C#实践10-07
最新不连沟煤矿车队班组建设方案1 -10-23
管理沟通情景模拟剧本11-24
五强两比钢筋考卷101-30
浅谈国内外绘本研究12-09
如何理解学风和科研诚信08-06
初中优秀学生团员事迹材料_事迹材料04-04
拒绝溺爱作文400字07-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C#
- 实践
- WOSA
- 大学毕业实习自我鉴定总结3000字
- 宝马刷机
- 高中化学期中考试卷(难度系数:0.55-0.41)-20150605
- 安徽旺安包装有限公司年产1000万条编织袋生产线建设项目全本公示 - 图文
- 2018年人教版二年级下册易错字易错拼音题集
- 银行业金融机构重要信息系统投产及变更管理办法
- 燃运部内部管理制度汇编 - 图文
- 数控机床的基本组成以及发展前景 - 图文
- 对“如何创建学习型社区及社区教育师资队伍建设”的思考和探索
- 绿色校园环保标语
- 《土壤学》试题集--整理版(附答案~) - 图文
- 铸轧厂检验规程
- 电工与电子技术基础期中考试B卷
- 初中一年级数学竞赛题(一)
- 中山市喜汇名苑可行性研究报告-广州中撰咨询
- 现代企业管理试题及标答B
- “提高综合素质,争做文明员工”主题教育学习材料之九
- 宁波市市级科技项目经费管理暂行办法(甬财政教488、甬科计136号 2002年8月25日)
- 国家规定装修工程设计收费标准
- dsp实验心得体会