串口ic读卡器源码-c#代码(2)续上
?private void button1_Click(object sender, System.EventArgs e)//輕松讀卡
? {
?? byte status;//存放返回值
?? byte myareano;//區(qū)號(hào)
?? byte authmode;//密碼類型,用A密碼或B密碼
?? byte myctrlword;//控制字
?? byte[] mypicckey = new byte[6];//密碼
?? byte[] mypiccserial = new byte[4];//卡序列號(hào)
?? byte[] mypiccdata = new byte[48]; //卡數(shù)據(jù)緩沖
?? //控制字指定,控制字的含義請(qǐng)查看本公司網(wǎng)站提供的動(dòng)態(tài)庫說明
?? myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY;
?? //指定區(qū)號(hào)
?? myareano = 8;//指定為第8區(qū)
?? //批定密碼模式
?? authmode = 1;//大于0表示用A密碼認(rèn)證,推薦用A密碼認(rèn)證
?? //指定密碼
?? mypicckey[0] = 0xff;
?? mypicckey[1] = 0xff;
?? mypicckey[2] = 0xff;
?? mypicckey[3] = 0xff;
?? mypicckey[4] = 0xff;
?? mypicckey[5] = 0xff;
?? status = piccreadex(myctrlword, mypiccserial, myareano, authmode, mypicckey, mypiccdata);
?? //在下面設(shè)定斷點(diǎn),然后查看mypiccserial、mypiccdata,
?? //調(diào)用完 piccreadex函數(shù)可讀出卡序列號(hào)到 mypiccserial,讀出卡數(shù)據(jù)到mypiccdata,
?? //開發(fā)人員根據(jù)自己的需要處理mypiccserial、mypiccdata 中的數(shù)據(jù)了。
?? //處理返回函數(shù)
?? switch (status)
?? {
??? case 0:
???? MessageBox.Show("操作成功,數(shù)據(jù)已返回在mypiccdata數(shù)組中");
???? break;
???? //......
??? case 8:
???? MessageBox.Show("請(qǐng)將卡放在感應(yīng)區(qū)");
???? break;
?? }
?? //返回解釋
?? /*
?? REQUEST 8//尋卡錯(cuò)誤
?? READSERIAL 9//讀序列嗎錯(cuò)誤
?? SELECTCARD 10//選卡錯(cuò)誤
?? LOADKEY 11//裝載密碼錯(cuò)誤
?? AUTHKEY 12//密碼認(rèn)證錯(cuò)誤
?? READ 13//讀卡錯(cuò)誤
?? WRITE 14//寫卡錯(cuò)誤
?? NONEDLL 21//沒有動(dòng)態(tài)庫
?? DRIVERORDLL 22//動(dòng)態(tài)庫或驅(qū)動(dòng)程序異常
?? DRIVERNULL 23//驅(qū)動(dòng)程序錯(cuò)誤或尚未安裝
?? TIMEOUT 24//操作超時(shí),一般是動(dòng)態(tài)庫沒有反映
?? TXSIZE 25//發(fā)送字?jǐn)?shù)不夠
?? TXCRC 26//發(fā)送的CRC錯(cuò)
?? RXSIZE 27//接收的字?jǐn)?shù)不夠
?? RXCRC 28//接收的CRC錯(cuò)
?? */
? }
? private void button3_Click(object sender, System.EventArgs e)//讓設(shè)備發(fā)出聲音
? {
?? pcdbeep(50);
? }
? private void button2_Click(object sender, System.EventArgs e)//輕松寫卡
? {
?? byte i;
?? byte status;//存放返回值
?? byte myareano;//區(qū)號(hào)
?? byte authmode;//密碼類型,用A密碼或B密碼
?? byte myctrlword;//控制字
?? byte[] mypicckey = new byte[6];//密碼
?? byte[] mypiccserial = new byte[4];//卡序列號(hào)
?? byte[] mypiccdata = new byte[48]; //卡數(shù)據(jù)緩沖
?? //控制字指定,控制字的含義請(qǐng)查看本公司網(wǎng)站提供的動(dòng)態(tài)庫說明
?? myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY;
?? //指定區(qū)號(hào)
?? myareano = 8;//指定為第8區(qū)
?? //批定密碼模式
?? authmode = 1;//大于0表示用A密碼認(rèn)證,推薦用A密碼認(rèn)證
?? //指定密碼
?? mypicckey[0] = 0xff;
?? mypicckey[1] = 0xff;
?? mypicckey[2] = 0xff;
?? mypicckey[3] = 0xff;
?? mypicckey[4] = 0xff;
?? mypicckey[5] = 0xff;
?? //指定卡數(shù)據(jù)
?? for (i = 0; i < 48; i++)
?? {
??? mypiccdata[i] = i;
?? }
?? status = piccwriteex(myctrlword, mypiccserial, myareano, authmode, mypicckey, mypiccdata);
?? //在下面設(shè)定斷點(diǎn),然后查看mypiccserial、mypiccdata,
?? //調(diào)用完 piccreadex函數(shù)可讀出卡序列號(hào)到 mypiccserial,讀出卡數(shù)據(jù)到mypiccdata,
?? //開發(fā)人員根據(jù)自己的需要處理mypiccserial、mypiccdata 中的數(shù)據(jù)了。
?? //處理返回函數(shù)
?? switch (status)
?? {
??? case 0:
???? MessageBox.Show("操作成功,mypiccdata數(shù)組中的數(shù)據(jù)已寫入卡中");
???? break;
???? //......
??? case 8:
???? MessageBox.Show("請(qǐng)將卡放在感應(yīng)區(qū)");
???? break;
?? }
?? //返回解釋
?? /*
?? REQUEST 8//尋卡錯(cuò)誤
?? READSERIAL 9//讀序列嗎錯(cuò)誤
?? SELECTCARD 10//選卡錯(cuò)誤
?? LOADKEY 11//裝載密碼錯(cuò)誤
?? AUTHKEY 12//密碼認(rèn)證錯(cuò)誤
?? READ 13//讀卡錯(cuò)誤
?? WRITE 14//寫卡錯(cuò)誤
?? NONEDLL 21//沒有動(dòng)態(tài)庫
?? DRIVERORDLL 22//動(dòng)態(tài)庫或驅(qū)動(dòng)程序異常
?? DRIVERNULL 23//驅(qū)動(dòng)程序錯(cuò)誤或尚未安裝
?? TIMEOUT 24//操作超時(shí),一般是動(dòng)態(tài)庫沒有反映
?? TXSIZE 25//發(fā)送字?jǐn)?shù)不夠
?? TXCRC 26//發(fā)送的CRC錯(cuò)
?? RXSIZE 27//接收的字?jǐn)?shù)不夠
?? RXCRC 28//接收的CRC錯(cuò)
?? */
? }
? private void button4_Click(object sender, System.EventArgs e)//修改單區(qū)密碼
? {
?? byte i;
?? byte status;//存放返回值
?? byte myareano;//區(qū)號(hào)
?? byte authmode;//密碼類型,用A密碼或B密碼
?? byte myctrlword;//控制字
?? byte[] piccoldkey = new byte[6];//舊密碼
?? byte[] mypiccserial = new byte[4];//卡序列號(hào)
?? byte[] piccnewkey = new byte[6]; //新密碼.
?? //控制字指定,控制字的含義請(qǐng)查看本公司網(wǎng)站提供的動(dòng)態(tài)庫說明
?? myctrlword = 0;
?? //指定區(qū)號(hào)
?? myareano = 8;//指定為第8區(qū)
?? //批定密碼模式
?? authmode = 1;//大于0表示用A密碼認(rèn)證,推薦用A密碼認(rèn)證
?? //指定舊密碼
?? piccoldkey[0] = 0xff;
?? piccoldkey[1] = 0xff;
?? piccoldkey[2] = 0xff;
?? piccoldkey[3] = 0xff;
?? piccoldkey[4] = 0xff;
?? piccoldkey[5] = 0xff;
?? //指定新密碼,注意:指定新密碼時(shí)一定要記住,否則有可能找不回密碼,導(dǎo)致該卡報(bào)廢。
?? piccnewkey[0] = 0xff;
?? piccnewkey[1] = 0xff;
?? piccnewkey[2] = 0xff;
?? piccnewkey[3] = 0xff;
?? piccnewkey[4] = 0xff;
?? piccnewkey[5] = 0xff;
?? status = piccchangesinglekey(myctrlword, mypiccserial, myareano, authmode, piccoldkey, piccnewkey);
?? //在下面設(shè)定斷點(diǎn),然后查看mypiccserial、mypiccdata,
?? //調(diào)用完 piccreadex函數(shù)可讀出卡序列號(hào)到 mypiccserial,讀出卡數(shù)據(jù)到mypiccdata,
?? //開發(fā)人員根據(jù)自己的需要處理mypiccserial、mypiccdata 中的數(shù)據(jù)了。
?? //處理返回函數(shù)
?? switch (status)
?? {
??? case 0:
???? MessageBox.Show("操作成功,密碼已被修改!");
???? break;
???? //......
??? case 8:
???? MessageBox.Show("請(qǐng)將卡放在感應(yīng)區(qū)");
???? break;
?? }
?? //返回解釋
?? /*
?? REQUEST 8//尋卡錯(cuò)誤
?? READSERIAL 9//讀序列嗎錯(cuò)誤
?? SELECTCARD 10//選卡錯(cuò)誤
?? LOADKEY 11//裝載密碼錯(cuò)誤
?? AUTHKEY 12//密碼認(rèn)證錯(cuò)誤
?? READ 13//讀卡錯(cuò)誤
?? WRITE 14//寫卡錯(cuò)誤
?? NONEDLL 21//沒有動(dòng)態(tài)庫
?? DRIVERORDLL 22//動(dòng)態(tài)庫或驅(qū)動(dòng)程序異常
?? DRIVERNULL 23//驅(qū)動(dòng)程序錯(cuò)誤或尚未安裝
?? TIMEOUT 24//操作超時(shí),一般是動(dòng)態(tài)庫沒有反映
?? TXSIZE 25//發(fā)送字?jǐn)?shù)不夠
?? TXCRC 26//發(fā)送的CRC錯(cuò)
?? RXSIZE 27//接收的字?jǐn)?shù)不夠
?? RXCRC 28//接收的CRC錯(cuò)
?? */
? }
? private void button5_Click(object sender, System.EventArgs e)//讀取設(shè)備編號(hào),可做為軟件加密狗用,也可以根據(jù)此編號(hào)在公司網(wǎng)站上查詢保修期限
? {
?? byte[] devno = new byte[4];
?? if (pcdgetdevicenumber(devno) == 0)
?? {
??? MessageBox.Show(System.Convert.ToString(devno[0]) + "-" + System.Convert.ToString(devno[1]) + "-" +? System.Convert.ToString(devno[2]) + "-" +? System.Convert.ToString(devno[3]));
??? //ShowMessage(IntToStr(devno[0]) + "-" + IntToStr(devno[1]) + "-" + IntToStr(devno[2]) + "-" + IntToStr(devno[3]));
?? }
? }
? private void button6_Click(object sender, System.EventArgs e)
? {
?? string strls;
?? strls = textBox1.Text;
?? lcddispfull(strls);
? }
?}
}
轉(zhuǎn)載于:https://blog.51cto.com/reader/595014
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的串口ic读卡器源码-c#代码(2)续上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Service(7)--
- 下一篇: C# AndrewUtil.dll 在小