A
abc12345678
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:有谁做过串口通信的。用mscomm32.ocx我找过了很多资料,但解决不了.
现在不懂的是:
1. 现在我搞不明白的是,ID卡与IC卡
2. IC卡是否可写??
3. 读卡器发送到串口的数据是:二进制,十进制,十六进制??还是ACCSI码
本人想要的如果:是读出卡号
我用MScomm32.ocx,可以接到数据,但不能解码...
这是我用二进制转出来的数据
这是卡上印有的卡号 : 0003261713 049,50449
这是读到的数据 : 1E 98 1E 98 00 78 78 1E 78 1E 1E 06 78 1E
06 78 78 FE 1E 98 1E 98 00 78 78 1E 78 1E 1E 06 78 1E
读出来的数据是几进制的??
代码如下:
procedure TForm1.MSComm1Comm(Sender: TObject);
var
buffer: Olevariant;//MSComm1.InputMode = comInputModeBinary
str: string;//MSComm1.InputMode = comInputModeText
i: integer;
begin
case MSComm1.CommEvent of
comEvReceive: //串行接收事件处理
begin
if MSComm1.InputMode = comInputModeText then
//字符方式读取
str := MSComm1.Input//读出后会自动清除接收缓冲区,str[1]~str[32]
else
//二进制方式读取
buffer := MSComm1.Input;//读出后会自动清除接收缓冲区,buffer[0]~buffer[31]
Edit3.Text := '';
for i := 0 to MSComm1.RThreshold - 1do
//32字节Hex转换
begin
if MSComm1.InputMode = comInputModeText then
//单行字符转换
Edit3.Text := Edit3.Text + inttohex(byte(str[i + 1]), 2) + ' '
else
//单行二进制数据转换
Edit3.Text := Edit3.Text + inttohex(buffer, 2) + ' ';
end;
Memo2.Lines.Add(Edit3.Text);//加入一行显示
end;
end;
end;
现在不懂的是:
1. 现在我搞不明白的是,ID卡与IC卡
2. IC卡是否可写??
3. 读卡器发送到串口的数据是:二进制,十进制,十六进制??还是ACCSI码
本人想要的如果:是读出卡号
我用MScomm32.ocx,可以接到数据,但不能解码...
这是我用二进制转出来的数据
这是卡上印有的卡号 : 0003261713 049,50449
这是读到的数据 : 1E 98 1E 98 00 78 78 1E 78 1E 1E 06 78 1E
06 78 78 FE 1E 98 1E 98 00 78 78 1E 78 1E 1E 06 78 1E
读出来的数据是几进制的??
代码如下:
procedure TForm1.MSComm1Comm(Sender: TObject);
var
buffer: Olevariant;//MSComm1.InputMode = comInputModeBinary
str: string;//MSComm1.InputMode = comInputModeText
i: integer;
begin
case MSComm1.CommEvent of
comEvReceive: //串行接收事件处理
begin
if MSComm1.InputMode = comInputModeText then
//字符方式读取
str := MSComm1.Input//读出后会自动清除接收缓冲区,str[1]~str[32]
else
//二进制方式读取
buffer := MSComm1.Input;//读出后会自动清除接收缓冲区,buffer[0]~buffer[31]
Edit3.Text := '';
for i := 0 to MSComm1.RThreshold - 1do
//32字节Hex转换
begin
if MSComm1.InputMode = comInputModeText then
//单行字符转换
Edit3.Text := Edit3.Text + inttohex(byte(str[i + 1]), 2) + ' '
else
//单行二进制数据转换
Edit3.Text := Edit3.Text + inttohex(buffer, 2) + ' ';
end;
Memo2.Lines.Add(Edit3.Text);//加入一行显示
end;
end;
end;