 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
王建貴
註冊時間: 2004-03-11 文章: 62
第 1 樓
|
發表於: 星期四 四月 15, 2004 11:20 am 文章主題: 付費尋求USB讀卡機的讀取與寫入的方法? |
|
|
公司目前要用VFP寫一個由USB介面讀卡機讀取IC卡與寫入的程式.請問有哪位大大有這方面的經驗.小弟願付費尋求這方面的程式寫法.謝謝...所附的檔案是讀卡機的參考文件.. |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 2 樓
|
發表於: 星期四 四月 15, 2004 4:22 pm 文章主題: |
|
|
沒有範例程式嗎? _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
王建貴
註冊時間: 2004-03-11 文章: 62
第 3 樓
|
發表於: 星期四 四月 15, 2004 4:53 pm 文章主題: TO syntech |
|
|
以下是賣ic卡廠商用c++寫的範例麻煩請參考
> cas.lib 由原始檔 SLE.ZIP下 Cas目錄而得, cas.obj即其 Obj檔
>
> sle.exe是簡單的 Dos介面例題, 原始檔在 sle.zip中, 編譯時要連結 Cas.lib 及用 Cas.h抬頭檔, 其中的 Cas.h是原版 Casmcard.h及 Cascerr.h的合併
>
> 使用步驟是:
> 1.設一個全域變數
> unsigned long hContext,hCard;
> SCARD_READERSTATE ReaderState;
> char szCardRd[256];
>
> 其中 SCARD_READERSTATE是:
> typedef struct {
> const char * szReader; // reader name
> void * pvUserData; // user defined data
> unsigned long dwCurrentState; // current state of reader at time of call
> unsigned long dwEventState; // state of reader after state change
> unsigned long cbAtr; // Number of bytes in the returned ATR.
> unsigned char rgbAtr[36]; // Atr of inserted card, (extra alignment bytes)
> } SCARD_READERSTATE
>
> 2.設一個 class SLE44 *sle, *sle名稱自定, SLE44的定義是:
> class SLE44
> {
> public:
> SLE44(void); ~SLE44();
> struct SLE
> { unsigned char CompID[2]; 發卡公司識別碼 (自定)
> char CustID[10]; 顧客編號 (自定)
> long CurrDa, CurrTm; 有做寫入動作的日期及時間 (系統以電腦時間給定)
> double Sum; 顧客的結存金額 (自定)
> short AccessNb; 有做寫入動作的次數 (系統給定)
> unsigned char CustPW[8]; 顧客的密碼 (自定, 密碼不符只能讀取, 不能寫入,
> 與4442三次, 4428八次不對即晶片作廢無關)
> } az;
>
> int i4228;
> long lret;
> long CardScan(void);
> long NewCust(char *custPW);
> long Read(void);
> long Write(char *custPW);
> long ChangePW(char *oldPW,char *newPW);
> void CasReleaseContext0(void);
> private:
> unsigned long RW_bufLn;
> long addr_s;
> void CasDisconnect0(void);
> long PSC_Verification0(void);
> };
>
> 3.執行 CardScan看是否有卡片在
> 4.參考 sle.zip中 main.c
> 建立一個新使用者 NewCust(char *custPW);
> 讀 Read(void);
> 寫 Write(char *custPW);
> 改密碼 ChangePW(char *oldPW,char *newPW);
>
>
> TestCas.exe是 windows介面例題(vc++6), 原始檔在 TestCas.zip. 這個例題有使用 thread, 就是進行另一個平行作業, 要用在 dos模式或 FoxPro上不知道要怎麼做? 不去用 thread就用 DOS的方式亦可
>
> 以上試跑的時候要先安裝讀卡機的驅動, 如 Casmcard.dll Winscard.dll等
>
> 參考文件有 SmartCardAPI.txt, MemoryCardAPI.txt及光碟上資料
>
>
>
> 資料型態參考
>
> char -128~127
> unsigned char 0~255 = BYTE
> short -32768~32767 = short int
> unsigned short 0~65535
> long -2147483648~2147483647
> unsigned long 0~4294967295 = DWORD = ULONG
> double 2.2E-308~1.8E308 |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 4 樓
|
發表於: 星期五 四月 16, 2004 4:41 pm 文章主題: |
|
|
以下免費.....
以下以sle.zip說明
----------------------------------
1.重點就在於怎麼把 cas.cpp cas.h 給 vfp 化,這部分得要請自己找 vfp使用 winapi 的作法
a.定義常數, 用define 也好,直接宣告變數也好
b.先以DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName] [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...]
把API中的 各函式宣告進來
c.精密一點就作成cas 類別,不然就作成 CardScan,NewCust,Read,Write,ChangePW,CasReleaseContext0,CasDisconnect0, PSC_Verification等函式,
d.把c++ 的CardScan,NewCust,Read,Write,ChangePW,CasReleaseContext0,CasDisconnect0, PSC_Verification等函式翻成適當的vfp函式
2.呼叫方式當然就是用main.cpp 一樣
a.先以CardScan()檢查卡在不在
b.再來就是用NewCust,Read,Write,ChangePW 讀改資料
c.最後呼叫CasDisconnect,CasReleaseContext釋放資源
_________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|