Commit 9713cdaf authored by captainwong's avatar captainwong

add comment for arm/disarm; format code

parent e156a459
...@@ -84,34 +84,39 @@ namespace CSharpDemo ...@@ -84,34 +84,39 @@ namespace CSharpDemo
{ {
var listener = new TcpListener(IPAddress.Any, port); var listener = new TcpListener(IPAddress.Any, port);
listener.Start(); listener.Start();
while(true){ while (true)
{
TcpClient client = listener.AcceptTcpClient(); TcpClient client = listener.AcceptTcpClient();
Thread thread = new Thread(new ParameterizedThreadStart(clientHandler)); Thread thread = new Thread(new ParameterizedThreadStart(clientHandler));
thread.Start(client); thread.Start(client);
} }
}catch(Exception e) }
catch (Exception e)
{ {
Console.WriteLine(e.Message); Console.WriteLine(e.Message);
} }
} }
static byte[] append(byte[] origin, byte[] buf, int len){ static byte[] append(byte[] origin, byte[] buf, int len)
{
byte[] dst = new byte[origin.Length + len]; byte[] dst = new byte[origin.Length + len];
Array.ConstrainedCopy(origin, 0, dst, 0, origin.Length); Array.ConstrainedCopy(origin, 0, dst, 0, origin.Length);
Array.ConstrainedCopy(buf, 0, dst, origin.Length, len); Array.ConstrainedCopy(buf, 0, dst, origin.Length, len);
return dst; return dst;
} }
static byte[] eat(byte[] origin, int len){ static byte[] eat(byte[] origin, int len)
if(origin.Length == len){return new byte[0];} {
if (origin.Length == len) { return new byte[0]; }
byte[] dst = new byte[origin.Length - len]; byte[] dst = new byte[origin.Length - len];
Array.ConstrainedCopy(origin, len, dst, 0, origin.Length - len); Array.ConstrainedCopy(origin, len, dst, 0, origin.Length - len);
return dst; return dst;
} }
static ushort nextSeq(ushort seq){ static ushort nextSeq(ushort seq)
if(++seq == 10000){ seq = 1;} {
if (++seq == 10000) { seq = 1; }
return seq; return seq;
} }
...@@ -141,13 +146,15 @@ namespace CSharpDemo ...@@ -141,13 +146,15 @@ namespace CSharpDemo
{ {
break; break;
} }
if(nread == 0){break;} if (nread == 0) { break; }
buff = append(buff, msg, nread); buff = append(buff, msg, nread);
AdemcoParseResult res = AdemcoParseResult.RESULT_OK; AdemcoParseResult res = AdemcoParseResult.RESULT_OK;
while(res == AdemcoParseResult.RESULT_OK){ while (res == AdemcoParseResult.RESULT_OK)
{
res = libademco.ademcoPacketParse(buff, (uint)buff.Length, pkt, cb); res = libademco.ademcoPacketParse(buff, (uint)buff.Length, pkt, cb);
switch(res){ switch (res)
{
case AdemcoParseResult.RESULT_OK: case AdemcoParseResult.RESULT_OK:
Console.Write("C:"); libademco.ademcoPrint(buff, libademco.size_tp_value(cb)); Console.Write("C:"); libademco.ademcoPrint(buff, libademco.size_tp_value(cb));
buff = eat(buff, (int)libademco.size_tp_value(cb)); buff = eat(buff, (int)libademco.size_tp_value(cb));
...@@ -161,18 +168,24 @@ namespace CSharpDemo ...@@ -161,18 +168,24 @@ namespace CSharpDemo
replyAck(stream, pkt.seq, pkt.acct); replyAck(stream, pkt.seq, pkt.acct);
acct = pkt.acct; acct = pkt.acct;
ademco_id = pkt.data.ademcoId; ademco_id = pkt.data.ademcoId;
if(libademco.ademcoIsMachineTypeEvent(pkt.data.ademcoEvent) != 0){ if (libademco.ademcoIsMachineTypeEvent(pkt.data.ademcoEvent) != 0)
{
type = libademco.hbMachineTypeFromAdemcoEvent(pkt.data.ademcoEvent); type = libademco.hbMachineTypeFromAdemcoEvent(pkt.data.ademcoEvent);
} }
if(libademco.ademcoIsMachineStatusEvent(pkt.data.ademcoEvent) != 0){ if (libademco.ademcoIsMachineStatusEvent(pkt.data.ademcoEvent) != 0)
{
status = libademco.hbMachineStatusFromAdemcoEvent(pkt.data.ademcoEvent); status = libademco.hbMachineStatusFromAdemcoEvent(pkt.data.ademcoEvent);
} }
// 示范布撤防的调用方式 // 演示如何进行布撤防,真实项目里可以删改本段
if(++counter % 5 == 0){ if (++counter % 5 == 0)
if(status == HbMachineStatus.HMS_ARM){ {
if (status == HbMachineStatus.HMS_ARM)
{
sendDisarm(stream, nextSeq(seq), acct, ademco_id, "123456"); sendDisarm(stream, nextSeq(seq), acct, ademco_id, "123456");
}else{ }
else
{
sendArm(stream, nextSeq(seq), acct, ademco_id); sendArm(stream, nextSeq(seq), acct, ademco_id);
} }
} }
...@@ -190,7 +203,8 @@ namespace CSharpDemo ...@@ -190,7 +203,8 @@ namespace CSharpDemo
} }
} }
static void replyAck(NetworkStream stream, ushort seq, string acct){ static void replyAck(NetworkStream stream, ushort seq, string acct)
{
byte[] buff = new byte[1024]; byte[] buff = new byte[1024];
uint len = libademco.ademcoMakeAckPacket(buff, 1024, seq, acct, 0); uint len = libademco.ademcoMakeAckPacket(buff, 1024, seq, acct, 0);
Console.Write("S:"); Console.Write("S:");
...@@ -198,7 +212,8 @@ namespace CSharpDemo ...@@ -198,7 +212,8 @@ namespace CSharpDemo
stream.Write(buff, 0, (int)len); stream.Write(buff, 0, (int)len);
} }
static void sendArm(NetworkStream stream, ushort seq, string acct, uint ademcoId){ static void sendArm(NetworkStream stream, ushort seq, string acct, uint ademcoId)
{
byte[] buff = new byte[1024]; byte[] buff = new byte[1024];
uint len = libademco.ademcoMakeHbPacket(buff, 1024, seq, acct, ademcoId, AdemcoEvent.EVENT_ARM, 0, 0, null); uint len = libademco.ademcoMakeHbPacket(buff, 1024, seq, acct, ademcoId, AdemcoEvent.EVENT_ARM, 0, 0, null);
Console.Write("S:"); Console.Write("S:");
...@@ -206,10 +221,12 @@ namespace CSharpDemo ...@@ -206,10 +221,12 @@ namespace CSharpDemo
stream.Write(buff, 0, (int)len); stream.Write(buff, 0, (int)len);
} }
static void sendDisarm(NetworkStream stream, ushort seq, string acct, uint ademcoId, string pwd){ static void sendDisarm(NetworkStream stream, ushort seq, string acct, uint ademcoId, string pwd)
{
byte[] buff = new byte[1024]; byte[] buff = new byte[1024];
AdemcoXDataSegment xdata = null; AdemcoXDataSegment xdata = null;
if(!string.IsNullOrEmpty(pwd)){ if (!string.IsNullOrEmpty(pwd))
{
xdata = new AdemcoXDataSegment(); xdata = new AdemcoXDataSegment();
libademco.ademcoMakeXData(xdata, AdemcoXDataLengthFormat.TWO_HEX, AdemcoXDataTransform.AdemcoXDataTransform_as_is, Encoding.ASCII.GetBytes(pwd), (uint)pwd.Length); libademco.ademcoMakeXData(xdata, AdemcoXDataLengthFormat.TWO_HEX, AdemcoXDataTransform.AdemcoXDataTransform_as_is, Encoding.ASCII.GetBytes(pwd), (uint)pwd.Length);
} }
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment