上篇話說是串列埠方式操作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 rfidreturn 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...