線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2904
推到 Plurk!
推到 Facebook!

開發 heart 讀卡機的經驗

尚未結案
ckwong
一般會員


發表:7
回覆:15
積分:4
註冊:2004-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-25 00:58:34 IP:218.103.xxx.xxx 未訂閱
請問有沒有人有開發 heart 的刷卡機的經驗, 可否分享 ?
ckwong
一般會員


發表:7
回覆:15
積分:4
註冊:2004-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-04 00:58:54 IP:218.103.xxx.xxx 未訂閱
有沒有方法可以控制讀卡機內的資料, 在用隨機附上的程式發出,經RS232 發出 (用SERIAL PORT MONITOR 檢測) E02J 的命令後讀卡機有回應, 但自己用終端機或用DELPHI SPCOMM 發出相同的 E02J , 但讀卡機沒有回應, 為何?
DavidLo
高階會員


發表:17
回覆:225
積分:168
註冊:2004-07-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-04 07:25:13 IP:218.169.xxx.xxx 未訂閱
      rlen=6;
      sprintf(txbuf,"E01J\r");//建立指令
      sio_flush(ThisComPort,2);//清除接收區
      sio_putb_x_ex(ThisComPort,txbuf,strlen(txbuf),5);//送出指令
      cnt=0;
      while(sio_iqueue(ThisComPort)Text=rxbuf;//顯示
ckwong
一般會員


發表:7
回覆:15
積分:4
註冊:2004-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-12-05 00:23:38 IP:218.103.xxx.xxx 未訂閱
多謝閣下指敎. 由於本人是delphi 初哥, 不太明白閣下所用什麼元件和程式內容, 可否 提供更詳細的資料. 謝謝
DavidLo
高階會員


發表:17
回覆:225
積分:168
註冊:2004-07-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-12-05 09:33:19 IP:61.228.xxx.xxx 未訂閱
串列Library,每個人使用方式,大家都不同. 主要是下列幾個步驟: 1.建立指令,根據Heart通訊協定,"E01J\r",address:01,J:讀Password,\r:結束字元. 2.清除接收區,清除PC串列緩衝區資料. 3.送出指令,PC透過串列埠送出指令字元. 4.等待接收長度符合,Heart讀卡機會回應6各字元.當字元接收數為6時結束. 5.讀取資料. 6.顯示. 元件請參考MOXA公司PCommLite. 使用SPCOMM應該更簡單,確認Baud,parity,送出指令"E01J\r"是否正確!
ckwong
一般會員


發表:7
回覆:15
積分:4
註冊:2004-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-12-06 00:27:12 IP:218.103.xxx.xxx 未訂閱
我是用 spcomm, 第1個procedure 是發出 E02J\r 的字串, 第 2 個procedure 是接收回來的資料, 不知道是否有問題, 但仍不能收到傳回的資料. procedure TForm1.Button1Click(Sender: TObject); var strsend,mm:string; begin mm:='E02J\r'; begin strsend:=trim(mm); comm1.WriteCommData(pchar(strsend),length(strsend)); end; end; procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); type IArr=^integer; var revP : array[1..2048] of byte; i : integer; commrevstr : shortstring; begin setlength(commrevstr,bufferlength); move(iarr(buffer)^,revp,bufferlength); for i:=1 to bufferlength do begin commrevstr[i]:=char(revp[i]); edt_recv.text:=edt_recv.text commrevstr; end; end;
DavidLo
高階會員


發表:17
回覆:225
積分:168
註冊:2004-07-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-12-06 09:22:06 IP:61.228.xxx.xxx 未訂閱
trim是多餘的,\r算是control character. Trims leading and trailing spaces and control characters from an AnsiString.
ckwong
一般會員


發表:7
回覆:15
積分:4
註冊:2004-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-12-11 23:31:00 IP:218.103.xxx.xxx 未訂閱
問題巳解決, 因輸入COMMAND 存在BUFFER 不能發出, 以至HEART 不能回應, 十二分感謝 DAVID LO 的支持!
系統時間:2017-10-23 12:14:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!