關於信用卡機連結 |
答題得分者是:DavidLo
|
jhlin88
一般會員 發表:21 回覆:28 積分:9 註冊:2002-10-17 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
关于COM通讯指令不同设备都不同,您可以参考相关资料 而Com api send date 方式如下:
function TCommDriverClass.SendData(lpBuf: pByte; Maxlen: DWORD): Integer; var bWrite: Boolean; dwLen: DWORD; comstat: TCOMSTAT; dWrite: DWORD; dwError: DWORD; begin dwLen := 0; dWrite := 0; ClearBuffer(False,True); //清除缓冲 ClearCommError(m_hCom, dwError, @comstat); bWrite := WriteFile(m_hCom, lpBuf^, Maxlen, dwLen, @m_WriteOlp); if not bWrite then begin if (GetLastError = ERROR_IO_PENDING) then begin while (not GetOverlappedResult(m_hCom, m_WriteOlp, dWrite, True)) do begin if (GetLastError = ERROR_IO_INCOMPLETE) then begin dwLen := dwLen dWrite; Continue; end else begin ClearCommError(m_hCom, dwError, @comstat); Break; end; end; dwLen := dwLen dWrite; end else begin ClearCommError(m_hCom, dwError, @comstat); end; end; Result := dwLen; end;风花雪月 e梦情缘 网络代号:wnhoo or sos_admin 网名:e梦缘 Mail:wnhoo@163.com |
jhlin88
一般會員 發表:21 回覆:28 積分:9 註冊:2002-10-17 發送簡訊給我 |
感謝sos大大的幫忙,不過大大提供的部份似乎與小弟想要問的二個問題沒啥關係,例如第二個問題,
S := PCHAR(CHR($02) S CHR($03) S1);
WriteFile(aHandle, S , 290, lrc, nil);
小弟想知道上面的型態要如何實作(因為編譯一直出現問題) 第一個問題是如果要將一個144byte的字串與某個數值做 xor,要如何撰寫?
s1 := s;
//取得lrc的值
for i := 0 to length(s) - 1 do
begin
bb := byte(s[i]);
s1[i] := chr(bb xor 3);
end; 感恩大大的回覆喔… 寫程式是為了讓生活更精彩
------
JamesLin |
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
感謝sos大大的幫忙,不過大大提供的部份似乎與小弟想要問的二個問題沒啥關係,例如第二個問題,
S := PCHAR(CHR($02) + S + CHR($03) + S1);
WriteFile(aHandle, S , 290, lrc, nil);
小弟想知道上面的型態要如何實作(因為編譯一直出現問題)
============================================================
你没有仔细看我提供的程式,上面明明写着通过Api发送到串口数据形态.
WriteFile()
功能:来将资料写入Serial port.
函数原型:
BOOL WriteFile(
HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure needed for overlapped I/O
);
说明:
ReadFile函数只要在串行口输入缓冲区中读入指定数量的字符,就算完成操作。
而WriteFile函数不但要把指定数量的字符拷入到输出缓冲中,而且要等这些字符从串行口送出去后才算完成操作。
============================================================== 第一個問題是如果要將一個144byte的字串與某個數值做 xor,要如何撰寫?
s1 := s;
//取得lrc的值
for i := 0 to length(s) - 1 do
begin
bb := byte(s[i]);
s1[i] := chr(bb xor 3);
end;
================================================
var
buf:array[0..254] of Byte;
i:Integer;
begin
FillChar(buf,High(buf),99);
for i:=Low(buf) to High(buf) do
buf[i]:=buf[i] xor 3; end;
风花雪月 e梦情缘
网络代号:wnhoo or sos_admin
网名:e梦缘
Mail:wnhoo@163.com
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
|
DavidLo
高階會員 發表:17 回覆:225 積分:168 註冊:2004-07-21 發送簡訊給我 |
|
jhlin88
一般會員 發表:21 回覆:28 積分:9 註冊:2002-10-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |