VB.NET 连接 POS机 DLL接口出错,请高手指点!!!

问题描述

POS机与pc通讯函数函数原型:intExchangeData(unsignedcharTransType,unsignedchar*ToTerminal,unsignedshortReqLenunsignedchar*FrmTerminal,unsignedshort*RepLen,unsignedshortTimeOut)输入参数:TransType交易类型ToTerminal交易请求数据ReqLen交易请求数据长度FrmTerminal交易应答数据RepLen交易应答数据长度TimeOut交易处理超时时间改成VB.NET:PublicStructure查询Public交易类型AsBytePublic交易结果AsBytePublic返回数据AsStringEndStructurePrivateDeclareFunctionExchangeDataLib"zhsb_api.dll"Alias"ExchangeData"(ByVal_TransTypeAsByte,ByVal_ToTerminalAsString,ByVal_ReqLenAsInteger,ByVal_FrmTerminalAs查询,ByVal_RspLenAsInteger,ByVal_TimeOutAsShort_)AsInteger查询时,交易请求包为空,传入的长度参数为0返回交易应答格式:交易类型:(1字节,查询为0x31)交易结果标志:(1字节)交易数据:(交易成功426定长字节,内容见下,交易失败时,为中文提示信息)运行程序后与POS机连接,POS机显示查询正确,但PC机显示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。请各位大侠帮忙看看,先感谢各位!附POS返回给电脑的数据包格式:交易数据包交易(查询)交易请求包1(查询)为空,传入的长度参数为0交易响格式(查询)交易类型(1字节,查询为0x31)(1字节,交易结果标志交易数据(交易成功426定长字节,内容见下,交易失败时,为中文提示信息)交易结果标志:1字节,0x00-成功,后面跟的是426个字节的交易数据其他值交易失败,后面以中文字符方式应答了失败原因,不需要处理其响应码交易数据:426字节的交易数据(为了不更改以后接口用)注:BCD码为压缩的十进制数,HEX为16进制数,为不可压缩数值。卡的识别码16字节32位压缩BCD码卡类别1字节规范版本4字节HEX码初始化机构编号12字节24位压缩BCD码发卡日期4字节8位压缩BCD码失效日期4字节8位压缩BCD码卡号9字节字符公民身份证号码18字节字符姓名30字节字符性别1字节字符民族1字节2位压缩BCD码出生地3字节6位压缩BCD码出生日期4字节8位压缩BCD码基本医疗保险个人账户建立日期4字节8位压缩BCD码定点医疗机构名称162字节字符定点医疗机构名称扩展18字节字符定点医疗机构代码19字节字符定点医疗机构名称262字节字符定点医疗机构名称扩展28字节字符定点医疗机构代码29字节字符定点医疗机构名称362字节字符定点医疗机构名称扩展38字节字符定点医疗机构代码39字节字符医疗证号15字节字符基本医疗保险个人账户10字节字符医疗人员类别1字节医疗保险用卡方式1字节基本医疗保险个人账户余额4字节高位在前的HEX码年度个人自付累计金额4字节高位在前的HEX码年度统筹基金支付累计金额4字节高位在前的HEX码发卡行ID8字节16位BCD码(转换后取左三位上传)最近审核日期4字节8位压缩BCD码分散因子8字节HEX码黑名单版本号19字节附上C语言结构typedefstruct{unsignedcharcard_id[0x10];unsignedcharcard_type[0x01];unsignedcharcriterion[0x04];unsignedcharinitorgan[0x0c];unsignedcharissuer_dt[0x04];unsignedcharexpire[0x04];unsignedcharcardno[0x09];unsignedcharpersonid[0x12];unsignedcharname[0x1e];unsignedcharsex[0x01];unsignedcharnation[0x01];unsignedcharhomeplace[0x03];unsignedcharbirthday[0x04];unsignedcharaccreatedt[0x04];unsignedcharhospitalname1[0x3e];unsignedcharhospitalnameext1[0x08];unsignedcharhospitalcode1[0x09];unsignedcharhospitalname2[0x3e];unsignedcharhospitalnameext2[0x08];unsignedcharhospitalcode2[0x09];unsignedcharhospitalname3[0x3e];unsignedcharhospitalnameext3[0x08];unsignedcharhospitalcode3[0x09];unsignedcharmedicerti[0x0f];unsignedcharmediaccount[0x0a];unsignedcharmeditype[0x01];unsignedcharusecardtype[0x01];unsignedcharbalance0[0x04];unsignedcharbalance1[0x04];unsignedcharbalance2[0x04];unsignedcharbankid[0x08];unsignedcharlatestchktime[0x04];unsignedchardiverfactor[0x08];unsignedcharblacklistver[0x13];}T_MEDICARDINFO;注:发卡行ID==0+卡号的前两位(例如05)==005分散因子采用三级分散因子交易(消费)交易请求2(消费)金额(12位数值,压缩成6字节BCD码,不足时前补0)商户名称(16字节,即最多8个中文字,不足填空格)商户操作人员姓名(8字节,即最多4个中文字,不足填空格)PC编号(12字节ASCII,不足时后补二进制0)PC交易序号(12字节ASCII,不足时后补二进制0)交易响应2(消费)交易类型(1字节,消费为0x32)0x02(1字节,交易结果标志)交易数据(交易成功34定长字节,内容见下,交易失败时,为中文提示信息)交易结果标志:1字节,0x00-成功,后面跟的是34个字节的交易数据其他值交易失败,后面以中文字符方式应答了失败原因,不需要处理其响应码交易数据:34字节,仅在交易成功时需要,包括以下数据:交易类型标志,1字节,根据医保卡规范交易金额12位数值6字节BCD码,高位前,单位为分交易日期,8位数值,4字节BCD码,CCYYMMDD交易时间,6位数值,3字节BCD码,HHMMSS终端机编号,12位数值,6字节BCD码PSAM交易号,4字节高位在前的HEX码卡片的交易签名TAC4字节的HEX码卡片的脱机交易序号2字节高位在前的HEX码卡片交易后余额4字节高位在前的HEX码注意:1BCD码为压缩的十进制数,HEX为16进制数,为不可压缩数值。2.金额使用压缩的12位BCD码参照ISO8583规范3.所有数据使用规范参照现用的医保卡标准,银行清算需要这些数据进行交易有效性检查附上C结构typedefstruct{/*交易类型标志*/unsignedchartranstype;/*交易金额*/unsignedchartransamount[6];/*交易日期时间*/unsignedchartransdatetime[7];/*终端机编号*/unsignedcharsamid[6];/*PSAM卡交易序号*/unsignedcharpsamptc[4];/*用户卡验证码*/unsignedchartranstac[4];/*用户卡交易序号*/unsignedchartransoffctc[2];/*用户卡余额*/unsignedcharnowbalance[4];}T_SENDTRANS;交易(结算)清算请求为空,传入的长度参数为0清算响应交易类型(1字节,为0x34)(1字节,交易结果标志交易数据(交易成功12定长字节,内容见下,交易失败时,为中文提示信息)交易结果标志:1字节,0x00-成功,后面跟的是12个字节的交易数据其他值交易失败,后面以中文字符方式应答了失败原因,不需要处理其响应码交易数据:12字节的交易数据注:BCD码为压缩的十进制数终端交易总金额12位数值6字节BCD码,高位前,单位为分终端交易总笔数12位数值6字节BCD码,高位前

解决方案

解决方案二:
呃你得指定字符集
解决方案三:
如何指定,能讲讲骂?谢谢!

时间: 2024-09-20 14:46:36

VB.NET 连接 POS机 DLL接口出错,请高手指点!!!的相关文章

源代码-COM控件编译连接成功 但手动编译总是失败 请高手指点下

问题描述 COM控件编译连接成功 但手动编译总是失败 请高手指点下 这几天做COM技术内幕第10章的例子,手动编译时碰到了麻烦,请高手指点下! 问题如下:(我用的是VS2013C++) 这一章的例子用到手动编译,我这方面没经验,总是出错,于是就想到把客户端,COM控件, 代理DLL,本地服务器分别用VS2013在IDE下做出来,前面的客户端,和COM控件我做出来 了,但COM控件手动编译总是出错.这个问题困了我好几天了,资料查了好多,但手动编译总是过不去. 下面是我的Makefile文件的内容:

求助,如何通过VB读取word文档中的各级目录信息,请高手指点,送分!

问题描述 如何通过VB读取word文档中的各级目录信息,请高手指点~!送分,谢各路大侠~~ 解决方案 解决方案二:正在关注此项功能,目前唯一的想法是添加书签然后在判断,还没通过程序调试.另外这次要求用C#比较郁闷!

asp+access代码出错 请高手指导

问题描述 asp+access代码出错 请高手指导 <%if rs.eof and rs.bof then response.Write("暂时没有信息") else Do Until rs.Eof response.Write("联系人:"& rs("联系人")) If vipuser = 0 Then response.Write("电话:"& rs("电话")) Else If

VB.net中能否实现相当于VB6中的异或绘图功能?如何实现?请高手指点!

问题描述 VB.net中能否实现相当于VB6中的异或绘图功能?如何实现?请高手指点!

购物车 传值-增加到购物车操作,在本机测试正常,上传到服务器后,出现黑屏或白屏,没有反应,是为什么 ?请高手指点?

问题描述 增加到购物车操作,在本机测试正常,上传到服务器后,出现黑屏或白屏,没有反应,是为什么 ?请高手指点? startRequest("POST", "requestext", "../Ajax/AddCart.aspx", "RequestType=add&PId=" + pId + "&BuyNum=" + buyNum, BindTxtInfo); function startRe

关于dll的反编译问题,请高手指点

问题描述 近日做工程,得到一份dll,是用.net编写的源代码,语言是c++.我特别想将该dll反编译回c++源代码,因为里面有很多我关心的物理.技术等细节问题(汇编语言的话读来可能意义不大了,我对汇编语言也不熟).高手们从第一句话就可以看出,我对编程并不专业.我先从网上找到reflectorfor.net(最新的)想直接反编译回c++的源代码,但得到"cannotfindacliheader".又经过一番学习,我找到了peid0.94,对dll进行察看,得到以下信息:entrypoi

请高手指点!用combobox绑定某一列后,进行插入会出错

问题描述 用combobox绑定某一列后,进行插入会出错.如果没有绑定插入就会成功!帮我看下我的控件绑定有问题吗?谢谢了PrivateSubFrmClientAdv_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadDimtablenameAsStringSearchSQL="Select员工IDFrom员工"tablename="员工"TryExecuteSQL(S

想用 vb 做一个更新notes calender 的工具,请高手指点

问题描述 想用vb做一个更新notescalender的工具,可以吧access数据库中的内容更新到notescalender中,vb和access数据库没设么问题,可是对notes真是没有什么概念啊,根据查到的资料,已经可以连接的notes数据库,可是接下来怎么办啊.请高手指点啊!!不胜感激!!!!

AIX宕机怎么办,请高手指点,急

问题描述 AIX5.3数据库为DB28.3服务器突然宕机了,用命令重启服务器以后,系统还是进不去,从硬件启动了服务器,应用还是无法使用,并提示Err500内部错误,DB2是启动起来了,但是用connecttoxx怎么也连不上,启动was也提示无法启动,提示看startServer.log.如下:[12/23/1113:41:07:303CST]594cb876ManagerAdminITRAS0017I:Thestartuptracestateis*=all=disabled.[12/23/11