C RFID windows 服務 網路協議方式

2022-03-05 07:43:46 字數 3839 閱讀 6284

上篇話說是串列埠方式操作rfid裝置。 下面介紹網路協議方式。 裝置支援斷線重連。 那我們的服務也不能差了不是。 所以這個服務類也是支援的哦。 

不解釋上**:

namespace rfid

; /// /// 接受失敗協議

///

public readonly byte merrorheader = new byte[3] ;

/// /// 接受成功協議

///

public readonly byte msucessheader = new byte[3] ;

/// /// vip資料長度

///

public const int mdatalength = 12;

/// /// 傳送讀取協議證

///

public system.windows.forms.timer mtimer = new system.windows.forms.timer();

/// /// 鏈結狀態

///

public bool connected = false;

/// /// vip編號

///

public string vipid = string.empty;

/// /// 全域性鎖

///

public object mlock = new object();

/// /// socket通訊

///

public socketclient client = new socketclient();

/// /// 連線錯誤次數

///

public int mconnecterrorcount = 0;

public string ip

public int port

public int errorcount

public rfidsocket(string ip, int port, int errorcount)

void client_ondisconnected(object sender)

void client_ondatain(object sender, byte data)

readertag(data);

}finally

}/// 識別標籤協

private void identificationtag(byte data)}}

else if (data[0] == 0xe4 && data[1] == 0x04 && data[2] == 0x82)}}

/// 快寫標籤

private void writetag(byte data)

}else}}

}}

/// 定時模式讀取標籤

private void readertag(byte data)}}

}}

private void client_monerror(object sender, socketexception error)

}private void client_monconnected(object sender)

private void reconnect()

client = new socketclient();

client.connect(this.ip, this.port);

client.monconnected += client_monconnected;

client.monerror += client_monerror;

client.ondatain += client_ondatain;

client.ondisconnected += client_ondisconnected;

}private void mtimer_tick(object sender, eventargs e)

else}}

finally

}public void start()

public void clearvipid()

finally

}public void writemark(int mark)

var markbyte = mark.tostring("x").padleft(8, '0');

var byt = new byte[4];

for (var i = 0; i < markbyte.length; i = i + 2)

var writemarkdata = new byte[10];

array.copy(tagprotocol.mwritemark, 0, writemarkdata, 0, tagprotocol.mwritemark.length);

array.copy(byt, 0, writemarkdata, tagprotocol.mwritemark.length, byt.length);

//寫校驗和

writemarkdata[9] = (byte)(epcsdkhelper.checksum(writemarkdata) & 0xff);

client.send(writemarkdata);

gc.collect();

gc.waitforfullgccomplete();

gc.collect();

}}

namespace rfid

return cli.connected;}}

private void raisedisconnectedevent()

private void raiseerrorevent(socketexception error)

private void handleconnectiondata(iasyncresult parameter)

else

}private void handleincomingdata(iasyncresult parameter)

catch (objectdisposedexception)

catch (socketexception x)

raiseerrorevent(x);}}

private void startwaitingfordata(socket soc)

private void handlesendfinished(iasyncresult parameter)

public socketclient()

private void connected(iasyncresult iar)

catch (socketexception x)

catch (argumentexception)

catch (exception e)

if (null != monconnected) monconnected(this);

startwaitingfordata(socket);

}public void connect(string ip, int port)

catch (socketexception er)

}public void close()

public void send(byte buffer)

catch (objectdisposedexception)

catch (socketexception x)

}}

看到這些你有沒有什麼想說的。 提出你的想法。其實搞和硬體通訊還是很有趣的。下篇我將介紹一下讓我噁心的不能再噁心的東進的**卡模組。他的sdk簡直無法用言語表達了(我只能說祝福了)。 對於rfid的sdk簡單明瞭想要搞個程式還是很容易的。

C RFID windows 服務 串列埠方式

話說rfid以前很火所以整理一下一年前自己處理的rfid程式,放原始碼.本案例應該適用於大多數的rfid模組。首先我們先放上rfid api 如下 using system using system.collections.generic using system.text using system...

SpringCloud之zuul微服務閘道器

圖例 zuul的核心是一系列的過濾器,這些過濾器可以完成以下功能 1 身份認證與安全 識別每個資源的驗證要求,並拒絕那些與要求不符的請求。2 審查與監控 在邊緣位置追蹤有意義的資料和統計結果,從而帶來精確的生產檢視。3 動態路由 動態地將請求路由到不同的後端集群。4 壓力測試 逐漸增加指向集群的流量...

玩轉Windows Azure儲存服務 網盤

接下來,我們通過模擬乙個真實的場景來熟悉windows azure儲存的強大功能,這個場景就是網盤 我們把windows azure儲存當網盤使用。我們使用powershell來進行演示,同理,用其他語言的sdk或者restful api亦可實現同樣的功能。我們假定這篇文章的讀者已經掌握window...