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(); }
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); }
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); }
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); }
private void renewTbData() { tbData.Text = ""; tbData.AppendText(KeyConsts.getStructSize().ToString() + "\n"); tbData.AppendText(byte2Hex(settings.toBytes())); }