知道感应卡的通讯协议 怎样利用DELPHI控件来读写感应卡上的数据啊 知道感应卡的通讯协议 怎样利用DELPHI控件来读写感应卡上的数据啊 求教啊 哪个大哥能提供一下这方面的技术支持啊 感激不尽 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure TForm1.Button3Click(Sender: TObject); //发送字节数组(按照通信协议的命令发送数据varbuf:array[0..7] of Byte;beginif comm1.PortOpen thenbeginbuf[0]:=$ff;buf[1]:=$07;buf[2]:=$55;buf[3]:=$20;buf[4]:=$03;buf[5]:=$08;buf[6]:=$18;buf[7]:=$61;comm1.RThreshold:= ;form1.comm1.output:=buf;其中 FF07552003081861 是rs232中通信协议格式,数据是16进制数句,我的Inputmodle 是设置成2进制传输模式的我是这么将16进制的数据存在字节数组里,然后发送到缓冲区里去,可我的发卡器怎么会没有响应呢,是什么原因啊,哪位大哥知道提醒下 我的这种做法对不对啊???呜呜呜 procedure TForm1.Button1Click(Sender: TObject);var mByteAry: array of Byte; mIn :array of Byte ;begin Comm1.CommPort:=1; Comm1.InBufferSize:=1024; Comm1.OutBufferSize:=1024; Comm1.Settings:='9600,N,8,1'; Comm1.InputLen:=0; Comm1.InBufferCount:=0; if not comm1.PortOpen then Comm1.PortOpen:=True; comm1.RThreshold:=7; //构造上位机报文 SetLength(mByteAry,7); mByteAry[0]:=$ff;//地址位 mByteAry[1]:=$06; //指令长度 mByteAry[2]:=$11;//读卡 mByteAry[3]:=$01; //块地址 mByteAry[4]:=$00; //偏移量 mByteAry[5]:=$04;//长度 mByteAry[6]:=$06 xor $11 xor $01 xor $00 xor $04; //校验位 //发读第一区的命令 Comm1.Output := mByteAry; //等待读卡机的应答信息 Sleep(300); if Comm1.InBufferCount <> 7 then begin memo1.Lines.add('下位机不应答,没有卡放入'); label2.Caption := '00000'; Exit; end; //将下位机报文接受到缓冲区 showmessage(inttostr(Comm1.InBufferCount)); SetLength(mIn,Comm1.inBufferCount); mIn := Comm1.Input; //运行到此处总显示错误信息:InValid argument 请问是什么原因? memo1.Lines.add(chr(mIn[2])); memo1.Lines.add(chr(mIn[3])); memo1.Lines.add(chr(mIn[4])); memo1.Lines.add(chr(mIn[5])); //程序运行时总会触发ComEVFrame:1004错误(硬件检测到帧错误!)请问是什么意思?end; Delphi可否静态链接 长假,我再散 关于在Timage上画线的问题,奇怪 怎么得到控制台程序的参数啊,给个例子,谢谢! 如何正确调用重载函数? 散分!!! 一个自动处理消息的问题.. 请问:application.onidle的作用是什么? 如何使用NMSMTP操作需要身份验证的邮箱发送邮件 有哪为朋友装了DELPHI5企业版的升级包,可以告诉我你用的注册号吗?我用DELPHI碟上的注册号装不上去。 有什么函数可以自动实现下面的功能啊????着急。在线等!!! 求教各位高手,如何走出第一步?
buf:array[0..7] of Byte;begin
if comm1.PortOpen then
begin
buf[0]:=$ff;
buf[1]:=$07;
buf[2]:=$55;
buf[3]:=$20;
buf[4]:=$03;
buf[5]:=$08;
buf[6]:=$18;
buf[7]:=$61;
comm1.RThreshold:= ;
form1.comm1.output:=buf;
其中 FF07552003081861 是rs232中通信协议格式,数据是16进制数句,我的Inputmodle 是设置成2进制传输模式的我是这么将16进制的数据存在字节数组里,然后发送到缓冲区里去,可我的发卡器怎么会没有响应呢,是什么原因啊,哪位大哥知道提醒下 我的这种做法对不对啊???呜呜呜
var
mByteAry: array of Byte;
mIn :array of Byte ;
begin
Comm1.CommPort:=1;
Comm1.InBufferSize:=1024;
Comm1.OutBufferSize:=1024;
Comm1.Settings:='9600,N,8,1';
Comm1.InputLen:=0;
Comm1.InBufferCount:=0;
if not comm1.PortOpen then Comm1.PortOpen:=True;
comm1.RThreshold:=7;
//构造上位机报文
SetLength(mByteAry,7);
mByteAry[0]:=$ff;//地址位
mByteAry[1]:=$06; //指令长度
mByteAry[2]:=$11;//读卡
mByteAry[3]:=$01; //块地址
mByteAry[4]:=$00; //偏移量
mByteAry[5]:=$04;//长度
mByteAry[6]:=$06 xor $11 xor $01 xor $00 xor $04; //校验位
//发读第一区的命令
Comm1.Output := mByteAry;
//等待读卡机的应答信息
Sleep(300);
if Comm1.InBufferCount <> 7 then
begin
memo1.Lines.add('下位机不应答,没有卡放入');
label2.Caption := '00000';
Exit;
end;
//将下位机报文接受到缓冲区
showmessage(inttostr(Comm1.InBufferCount));
SetLength(mIn,Comm1.inBufferCount);
mIn := Comm1.Input; //运行到此处总显示错误信息:InValid argument 请问是什么原因?
memo1.Lines.add(chr(mIn[2]));
memo1.Lines.add(chr(mIn[3]));
memo1.Lines.add(chr(mIn[4]));
memo1.Lines.add(chr(mIn[5]));
//程序运行时总会触发ComEVFrame:1004错误(硬件检测到帧错误!)请问是什么意思?
end;