예제 #1
0
        private void refreshPorts()
        {
            var portNames = Serial.getPortNames();

            this.cbPort.Items.Clear();
            this.cbPort.Items.AddRange(portNames);
            this.gbSerial.Text = "串口:" + portNames.Length.ToString();
            this.lbExpect.Text = KeyConsts.getStructSize().ToString();
        }
예제 #2
0
        public byte[] toBytes()
        {
            int    size = KeyConsts.getStructSize();
            IntPtr ptr  = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(this, ptr, true);
            byte[] data = new byte[size];
            for (int i = 0; i < size; i++)
            {
                data[i] = Marshal.ReadByte(ptr, i);
            }
            Marshal.FreeHGlobal(ptr);
            return(data);
        }
예제 #3
0
        public ushort  holdThreshold; //hold time limit to trigger reverse scratch.

        public static KeySettings readFromBytes(byte[] data)
        {
            if (data.Length < KeyConsts.getStructSize())
            {
                return(new KeySettings());
            }
            IntPtr ptr = Marshal.AllocHGlobal(KeyConsts.getStructSize());

            Marshal.Copy(data, 0, ptr, KeyConsts.getStructSize());
            var ks = (KeySettings)Marshal.PtrToStructure(ptr, typeof(KeySettings));

            Marshal.FreeHGlobal(ptr);
            return(ks);
        }
예제 #4
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            settings.statMark = 1;
            for (int i = 0; i < KeyConsts.MID_KEY_COUNT; i++)
            {
                settings.midKeyChar[i] = (byte)(dgMid[1, i].Value.ToString()[0]);
            }
            byte[] data = settings.toBytes();
            tbData.Text = KeyConsts.getStructSize().ToString() + "\n";
            tbData.AppendText(byte2Hex(data));
            currentPort.ReadExisting();
            currentPort.WriteLine(KeyConsts.STR_COM_UPDATE);
            currentPort.Write(data, 0, data.Length);
            currentPort.WriteLine("");
            MessageBox.Show(currentPort.ReadLine());
            string confirm = "数据确认\n" + currentPort.ReadLine() + "\n";
            int    nl      = 0;
            int    pos     = 0;

            while (true)
            {
                byte r = (byte)currentPort.ReadByte();
                if (r == (byte)'\r')
                {
                    break;
                }
                confirm += string.Format("{0:X2} ", r);
                if (nl == 7)
                {
                    confirm += "\n";
                    nl       = 0;
                }
                else
                {
                    nl++;
                }
            }
            currentPort.ReadExisting();
            MessageBox.Show(confirm);
        }
예제 #5
0
 private void renewTbData()
 {
     tbData.Text = "";
     tbData.AppendText(KeyConsts.getStructSize().ToString() + "\n");
     tbData.AppendText(byte2Hex(settings.toBytes()));
 }