コード例 #1
0
ファイル: Form1.cs プロジェクト: kcoyner/sandbox
        private void OnDataReceived(IAsyncResult ar)
        {
            try
            {
                StateObject state = (StateObject)ar.AsyncState;
                int bytesRead = MainSocket.EndReceive(ar);
                if (bytesRead > 0)
                {
                    byte[] recvBytes = state.buffer;
                    //Judge the header info
                    string print_data = null;
                    for (int index = 0; index < bytesRead; index++)
                    {
                        print_data += recvBytes[index].ToString("X2");
                        if ( recvBytes[index] == 0x0D && recvBytes[index + 1] == 0x0D) //header confirmed
                        {
                            //NOTE: there is NO CRC check in here. it is better to have a CRC check by using XOR calculation, for instance, for a whole data of "0D0D10FFFF00430000000001507981FA",
                            //the CRC value would be the last byte (15th) which is "FA" and it could be got through 0D (xor) 0D(xor)10(xor)FF(xor)FF(xor)00(xor)43(xor)00(xor)00(xor)00(xor)00(xor)01(xor)50(xor)79(xor) 81
                            byte[] tagBytes = new byte[9]; //Declare a new byte array to store the tag ID
                            for (int i = 0; i < 9; i++)
                            {
                                //get the Tag ID, a tag id contains 8 bytes (0 ~ 7) in total, and the 8th bytes stands for the status
                                tagBytes[i] = recvBytes[i + index + 6];
                            }
                            RFIDTag temp = ConvertTag(tagBytes);
                            for (int j = 0; j < tags.Count; j++)
                            {
                                if (tags[j].ID == temp.ID)
                                {
                                    tags.RemoveAt(j);
                                    break;
                                }
                            }
                            tags.Add(ConvertTag(tagBytes));
                            if (tags.Count > 0)
                            {
                                List<ListViewItem> items = new List<ListViewItem>();
                                foreach (RFIDTag tag in tags)
                                {
                                    IInsertListViewItem(this, listView1, tag);
                                    //tags.Remove(tag);
                                }
                            }
                        }
                    }
                    //print out the raw data
                    Console.WriteLine("---" + print_data);
                    // if the Get Gain response from the reader to the PC
                  //  GetGainValue(recvBytes, bytesRead);
                }
                MainSocket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(OnDataReceived), state);
            }
            catch (Exception ex)
            {

            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: kcoyner/sandbox
 public static void IInsertListViewItem(Form form, ListView t, RFIDTag tag)
 {
     if (t.InvokeRequired)
     {
         InsertListViewItem a = new InsertListViewItem(InsertListViewItem1);
         form.Invoke(a, new Object[] { t, tag});
     }
     else
     {
         updateListView(t, tag);
     }
 }
コード例 #3
0
ファイル: Form1.cs プロジェクト: kcoyner/sandbox
        public static void updateListView(ListView t, RFIDTag tag)
        {
            lock (t)
            {
                string dataTime = DateTime.Now.ToString();
                for (int i = 0; i < t.Items.Count; i++)
                {
                    if (t.Items[i].SubItems[2].Text == tag.ID)
                    {
                        t.Items[i].SubItems[4].Text = dataTime;
                        int count = Convert.ToInt32(t.Items[i].SubItems[3].Text.ToString()) + 1;
                        t.Items[i].SubItems[3].Text = count.ToString();
                        t.Items[i].SubItems[6].Text = tag.Temperature;
                        t.Items[i].SubItems[5].Text = tag.Battery;
                        t.Items[i].SubItems[7].Text = tag.Buckle;
                        t.Items[i].SubItems[8].Text = tag.Vibration;
                        if (tag.Call != "")
                        {
                            t.Items[i].SubItems[9].Text = "Button Pressed";
                            t.Items[i].BackColor = Color.OrangeRed;
                        }
                        else if (tag.ButtonPress != "")
                        {
                            t.Items[i].SubItems[9].Text = tag.ButtonPress;
                            t.Items[i].BackColor = Color.OrangeRed;
                        }
                        else
                        {
                            t.Items[i].SubItems[9].Text = "";
                            t.Items[i].BackColor = Color.White;
                        }
                        if (tag.Mount == "Mounted")
                        {
                            t.Items[i].SubItems[10].Text = tag.Mount;
                            t.Items[i].BackColor = Color.Green;
                        }
                        else if (tag.Mount == "Un-mounted")
                        {
                            t.Items[i].SubItems[10].Text = tag.Mount;
                            t.Items[i].BackColor = Color.White;
                        }
                        return;
                    }
                }
                // total tags number
                ListViewItem item = new ListViewItem();
                ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = (t.Items.Count + 1).ToString();
                item.SubItems.Insert(0, subItem);

                // tag type
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = tag.Type;
                item.SubItems.Insert(1, subItem);

                //tag id
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = tag.ID;
                item.SubItems.Insert(2, subItem);

                //count
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = Convert.ToString(1);
                item.SubItems.Insert(3, subItem);

                //timestamp
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = dataTime;
                item.SubItems.Insert(4, subItem);

                //Battery
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = tag.Battery;
                item.SubItems.Insert(5, subItem);

                //Temperature
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = tag.Temperature;
                item.SubItems.Insert(6, subItem);

                //Buckle
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = tag.Buckle;
                item.SubItems.Insert(7, subItem);

                //Vibration
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = tag.Vibration;
                item.SubItems.Insert(8, subItem);

                //Panic button
                subItem = new ListViewItem.ListViewSubItem();
                if (tag.Call != "")
                {
                    subItem.Text = "Button Pressed";
                }
                else if (tag.ButtonPress != "")
                {
                    subItem.Text = tag.ButtonPress;
                }
                else
                {
                    subItem.Text = "";
                }
                item.SubItems.Insert(9, subItem);

                //Mounted
                subItem = new ListViewItem.ListViewSubItem();
                subItem.Text = tag.Mount;
                item.SubItems.Insert(10, subItem);
                t.Items.Add(item);
            }
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: kcoyner/sandbox
 public static void InsertListViewItem1(ListView t, RFIDTag tag)
 {
     updateListView(t, tag);
 }
コード例 #5
0
ファイル: Form1.cs プロジェクト: kcoyner/sandbox
        private static RFIDTag ConvertTag(byte[] record)
        {
            RFIDTag tag = new RFIDTag();
            tag.Battery = (record[8] < 128) ? "Low" : "High";
            switch (Convert.ToInt16(record[8] & 0x000F))
            {
                //Configurable Card Tag
                case 0:
                    tag.ID = GetTagID(record, 7);
                    tag.Type = "127002";
                    tag.Buckle = "";
                    tag.ButtonPress = "";
                    tag.Call = "";
                    tag.Mount = "";
                    tag.Temperature = "";
                    tag.Vibration = "";
                    break;

                //Configurable Strip Tag
                case 1:
                    tag.ID = GetTagID(record, 7);
                    tag.Type = "127001";
                    tag.Buckle = "";
                    tag.ButtonPress = "";
                    tag.Call = "";
                    tag.Mount = "";
                    tag.Temperature = "";
                    tag.Vibration = "";
                    break;

                // Temperature Tag
                case 2:
                    //RFIDTagMemory temperature = new RFIDTagMemory();
                    tag.Temperature = GetTempData(record) + " °C";
                    //temperature.MemoryType = RFIDTag_MemoryType.Temperature;
                    tag.ID = GetTagID(record, 5);
                    tag.Type = "127003";
                    tag.Buckle = "";
                    tag.ButtonPress = "";
                    tag.Call = "";
                    tag.Mount = "";
                    tag.Vibration = "";
                    //tag.AddTagMemory(temperature);

                    break;

                //Vibration Tag
                case 3:
                    //RFIDTagMemory vibration = new RFIDTagMemory();
                    tag.Vibration = (Convert.ToInt16(record[8] & 0x0040) > 0) ? "Yes" : "No";
                    //vibration.MemoryType = RFIDTag_MemoryType.Vibration;
                    tag.Type = "127004";
                    tag.ID = GetTagID(record, 7);
                    tag.Buckle = "";
                    tag.ButtonPress = "";
                    tag.Call = "";
                    tag.Mount = "";
                    tag.Temperature = "";
                    //tag.AddTagMemory(vibration);
                    break;

                //Key-fob Tag
                case 8:
                    //RFIDTagMemory keyfob = new RFIDTagMemory();
                    if (record[8] == 0xA8)
                    {
                        tag.ButtonPress = "Button#1 Pressed";
                    }
                    else if (record[8] == 0x98)
                    {
                        tag.ButtonPress = "Button#2 Pressed";
                    }
                    else
                    {
                        tag.ButtonPress = "";
                    }

                    //keyfob.MemoryType = RFIDTag_MemoryType.Button;
                    tag.Type = "127012";
                    tag.ID = GetTagID(record, 7);
                    tag.Buckle = "";
                    tag.Call = "";
                    tag.Mount = "";
                    tag.Temperature = "";
                    tag.Vibration = "";
                    //tag.AddTagMemory(keyfob);
                    break;

                //Wristband Tag
                case 5:
                    //RFIDTagMemory callMem = new RFIDTagMemory();
                    //callMem.MemoryType = RFIDTag_MemoryType.CallButton;
                    tag.Call = ((record[8] & 0x0020) > 0) ? "Button Pressed" : "";

                    //RFIDTagMemory buckleMem = new RFIDTagMemory();
                    //buckleMem.MemoryType = RFIDTag_MemoryType.Buckle;
                    tag.Buckle = ((record[8] & 0x0010) > 0) ? "Buckle Opened" : "Buckle Secured";
                    tag.Type = "127006";
                    tag.ID = GetTagID(record, 7);
                    tag.Mount = "";
                    tag.Temperature = "";
                    tag.Vibration = "";
                    tag.ButtonPress = "";
                    //tag.AddTagMemory(callMem);
                    //tag.AddTagMemory(buckleMem);
                    break;

                //Beaconing Tag
                case 6:
                    //RFIDTagMemory mount = new RFIDTagMemory();
                    tag.Mount = ((record[8] & 0x0010) > 0) ? "Mounted" : "Un-mounted";
                    //mount.MemoryType = RFIDTag_MemoryType.Mount;
                    tag.Type = "127005";
                    tag.ID = GetTagID(record, 7);
                    tag.Buckle = "";
                    tag.Call = "";
                    tag.Temperature = "";
                    tag.Vibration = "";
                    tag.ButtonPress = "";
                    //tag.AddTagMemory(mount);
                    break;
                default:
                    tag.ButtonPress = "";
                    //keyfob.MemoryType = RFIDTag_MemoryType.Button;
                    tag.Type = "";
                    tag.ID = GetTagID(record, 7);
                    tag.Buckle = "";
                    tag.Call = "";
                    tag.Mount = "";
                    tag.Temperature = "";
                    tag.Vibration = "";
                    break;

            }
            return tag;
        }